注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

NET START HERE

研究C/C++、网络/通信/协议编程、网络安全、软件安全

 
 
 

日志

 
 

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

2014-10-27 11:08:29|  分类: 技术探讨 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
在安全通信编程中有时我们会用到数字证书进行通信加密,那么如何生成自己的数字证书进行测试呢?下面是使用OpenSSL在Ubuntu环境生成数字证书的步骤:

一、安装openssl
    a)    略
二、生成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 -newca
    d)    根据提示填写信息完成后,在demoCA下会生成证书文件,其中demoCA/private/cakey.pem为ca证书私钥,demoCA/cacert.pem为ca根证书。
三、生成服务器证书
    a)    生成私钥:        openssl genrsa -des3 -out server.key 1024
    b)    生成csr文件:   openssl req -new -key server.key -out server.csr
    c)    生成证书&签名:    openssl ca -in server.csr -out server.crt

四、生成客户端证书
    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
 
五、生成浏览器支持的.pfx(.p12)证书
    安装过支付宝、财付通证书的用户都知道,证书文件格式为pfx,那如何把我们的数字证书转换为浏览器识别的格式呢?
    a)    openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.pfx

六、生成不带密码验证的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

七、常见错误
    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
        
  评论这张
 
阅读(6739)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017