首页 > 代码库 > Linux下生成openssl证书

Linux下生成openssl证书

SSL 安全证书可以自己生成,也可以通过第三方的 CA ( Certification Authority )认证中心付费申请颁发。

SSL 安全证书包括:

1、CA 证书,也叫根证书或中间级证书。单向认证的 https , CA 证书是可选的。主要目的是使证书构成一个证书链,以达到浏览器信任证书的目的。如果使用了 CA 证书,服务器证书和客户证书都使用 CA 证书来签名。如果不安装 CA 证书,浏览器默认认为是不安全的。

2、服务器证书。必选。通过服务器私钥,生成证书请求文件 CSR ,再通过 CA 证书签名生成服务器证书。

3、客户证书。可选。如果有客户证书,就是双向认证的 HTTPS ,否则就是单向认证的 HTTPS 。生成步骤和服务器证书类似。

上面几种证书都可以自己生成。商业上,一般自己提供服务器或客户证书端的私钥和证书请求 CSR ,或向第三方机构付费申请得到通过 CA 证书签名的服务器证书和客户证书。

 

准备工作:

        在操作前,最好将openssl.conf文件打开,查看其dir路径将其修改为dir = /home/wjoyxt/demoCA /,否则下面的步骤会提示路径无法找到。

        1、手动在当前目录/home/wjoyxt创建一个CA目录结构:

        $ mkdir -p ./demoCA/newcerts

        2、创建空文件:

        $ touch  demoCA/index.txt

        3、创建并向文件中写入01:

       $ echo 01 > demoCA/serial

 

PKI(Public Key Infrastructure ) 即"公钥基础设施"
RSA RSA公钥加密算法RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准
CSR ( Certificate Signing Request )是一个证书签名请求,在申请证书之前,首先要在 WEB 服务器上生成 CSR ,并将其提交给 CA 认证中心, CA 才能给您签发 SSL 服务器证书。可以这样认为, CSR 就是一个在您服务器上生成的证书。
CA中心又称CA机构,即证书授权中心(Certificate Authority ),或称证书授权机构,作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任
CA中心为每个使用公开密钥的用户发放一个数字证书,数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。CA机构的数字签名使得攻击者不能伪造和篡改证书。
数字安全证书就是标志网络用户身份信息的一系列数据,用来在网络通讯中识别通讯各方的身份,即要在Internet上解决"我是谁"的问题,就如同现实中我们每一个人都要拥有一张证明个人身份的身份证或驾驶执照一样,以表明我们的身份或某种资格.
 

一、首先开始建立根证书
1、生成CA的私钥(key文件)
      openssl genrsa -out ca.key 1024
      这来细细讲一下这条命令: openssl指进入openssl环境,genrsaopenssl中的一个小应用程序,用来产生rsa私钥。-des3是指将产生的私钥用triple DES进行加密。这是个可选项,还有-des -idea都是对称加密算法,随你自己选择. -out就是指定输出了,如果不加这个选项的话,就会将输出发到标准输出中.2048指私钥的长度,单们是bit,默认是512
 
       openssl genrsa -des3 -out ca.key 1024  为私钥加密码
      openssl rsa -in server.key -out ca.key 为私钥移除密码  
 

2、填写证书申请表。(省略)
       openssl req -new -key ca.key -out ca.csr  -config /etc/pki/tls/openssl.cnf 
       生成csr文件并交给CA签名后才可形成证书,屏幕上将有提示,依照其指示一步一步输入要求的个人信息即可
       这个命令将会生成一个证书请求,当然,用到了前面生成的密钥ca.key文件,这里将生成一个新的文件ca.csr,即一个证书请求文件,你可以拿着这个文件去数字证书颁发机构(即CA)申请一个数字证书。CA会给你一个新的文件ca.crt ,那才是你的数字证书。
 
 
 

3、自己签定根签书

      openssl req -new -x509  -days 1000 -key ca.key -out ca.crt  -config /etc/pki/tls/openssl.cnf 
      如果是自己做测试,那么证书的申请机构和颁发机构都是自己。就可以用上面这个命令来生成证书。( X.509是一种非常通用的证书格式)
  

二、制做服务器端的证书并用ca签名
1、生成服务器端rsa私钥
      openssl genrsa -out server.key 1024

2、生成服务器证书请求( CSR )
      openssl req -new  -key server.key -out server.csr -config /etc/pki/tls/openssl.cnf

      需要依次输入国家,地区,组织,email。最重要的是有一个common name,可以写你的名字或者域名。如果为了https申请,这个必须和域名吻合,否则会引发浏览器警报。生成的csr文件交给CA签名后形成服务端自己的证书。

3、用生成的CA的证书为刚才生成的server.csr或client.csr文件签名
      openssl ca -keyfile ca.key  -cert ca.crt -in server.csr -out server.crt  -config /etc/pki/tls/openssl.cnf


三、制做用户的证书并用ca签名:(与生成服务器证书差不多)
需要注意的是:
        这个certificate是BASE64形式的,要转成PKCS12才能装到IE上.所以还要进行转换一下

        openssl pkcs12 -export -in client.crt  -inkey client.key -out  client.pfx
 

执行后提示如下:
Enter pass phrase for client.key:
Enter Export Password: # 设置client.pfx密码
Verifying - Enter Export Password:

另:
       client 使用的文件有:ca.crt,client.crt,client.key,client.pfx
       server 使用的文件有:ca.crt,server.crt,server.key

证书安装及使用
把刚才生成的证书:根证书ca.crt和客户证书client.crt(client.pfx)安装到客户端, ca.crt安装到信任的机构,client.crt直接在windows安装或安装到个人证书位置,然后用IP访问HTTP和https服务器。在IE中我们一般导入client.pfx证书,导入时会提示上面设置的密码。