Ubuntu使用OpenSSL生成数字证书详解

在安全通讯编程中有时咱们会用到数字证书进行通讯加密,那么如何生成本身的数字证书进行测试呢?下面是使用OpenSSL在Ubuntu环境生成数字证书的步骤:nginx

 

1、安装opensslweb

    a)    略编程

2、生成ca证书浏览器

    a)    建立一个证书目录,mkdir /home/liuzhigong/SSL安全

    b)    将CA.sh拷贝到/home/liuzhigong/SSL目录,cp /usr/lib/ssl/misc/CA.sh /home/liuzhigong/SSL服务器

    c)    ./CA.sh -newcaapp

    d)    根据提示填写信息完成后,在demoCA下会生成证书文件,其中demoCA/private/cakey.pem为ca证书私钥,demoCA/cacert.pem为ca根证书。测试

3、生成服务器证书加密

    a)    生成私钥:        openssl genrsa -des3 -out server.key 1024rest

    b)    生成csr文件:   openssl req -new -key server.key -out server.csr

    c)    生成证书&签名:    openssl ca -in server.csr -out server.crt

 

4、生成客户端证书

    a)    生成私钥:        openssl genrsa -des3 -out client.key 1024

    b)    生成csr文件:   openssl req -new -key client.key -out client.csr

    c)    生成证书&签名:        openssl ca -in client.csr -out client.crt

 

5、生成浏览器支持的.pfx(.p12)证书

    安装过支付宝、财付通证书的用户都知道,证书文件格式为pfx,那如何把咱们的数字证书转换为浏览器识别的格式呢?

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

 

6、生成不带密码验证的client/server.key.unsecure

    若是你想要把数字证书用于Nginx、Apache等Web服务器,你会发现启动nginx服务器时会要求你输入数字证书密码,这是由于在设置私钥key时将密码写入了key文件,致使Nginx/Apache等系列服务器在启动时要求Enter PEM pass phrase。咱们须要作的是剥离这个密码,利用以下OpenSSL命令生成server.key.unsecure文件

    openssl rsa -in server.key -out server.key.unsecure

    参考资料:Can I skip the PEM pass phrase question when I restart the webserver?

 

7、常见错误

    a)    openssl TXT_DB error number 2 failed to update database.

            This thing happens when certificates share common data. You cannot have two certificates that look otherwise the same.

            这种状况通常发生在你以前生成过同样的证书,又想从新生成如出一辙的证书。

            解决方法有2种:

            1)    修改demoCA下 index.txt.attr,将unique_subject = yes改成unique_subject = no

            2)    删除demoCA下的index.txt,并新建一个空的index.txt

相关文章
相关标签/搜索