文档章节

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

Archer弓兵
 Archer弓兵
发布于 2016/07/18 11:49
字数 576
阅读 171
收藏 0

在安全通信编程中有时我们会用到数字证书进行通信加密,那么如何生成自己的数字证书进行测试呢?下面是使用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

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

 

七、常见错误

    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

        

本文转载自:http://liuzhigong.blog.163.com/blog/static/178272375201492711829687/

共有 人打赏支持
Archer弓兵
粉丝 5
博文 34
码字总数 14928
作品 0
杭州
程序员
加密、解密及OpenSSL 详解

数据传输分类 在互联网上数据传输有两种:明文传输和加密传输。明文传输的协议有:ftp、http、smtp、telnet。但是为了数据的完整性和安全性,所以后来引用了加密等相关手段来保证数据的安全和...

五大三粗
2015/01/28
0
1
Linux 第32天 openssl 私有CA

Linux 第32天 openssl 私有CA 时间: 20180821 目录 OpenSSL 常见的加密算法和协议 一次加密通信过程 数字证书 Openssl命令 使用Openssl构建私有CA OpenSSL SSL (Secure Socket Layer)安全的套...

Winthcloud
08/23
0
0
openssl 简单证书生成(不CA)及nginx ssl 配置

原文地址:http://www.lamppr.com/node/648 小结: 使用OpenSSL生成证书 1、生成RSA密钥的方法 这个命令会生成一个2048位的密钥,同时有一个des3方法加密的密码,如果你不想要每次都输入密码...

SimonAt
2017/12/21
0
0
数字证书KeyTool使用(第二篇)

J2SDK提供了keytool命令行工具,可以根据指定的参数来创建数字证书。生成的证书或证书库默认保存在命令行当前目录下。 1. 创建数字证书 keytool -genkey -v -alias scent -dname "CN=John,OU...

小骏骏
2014/11/14
0
1
VC++网络安全编程范例(12)-PKI编程

PKI(Public Key Infrastructure ) 即"公钥基础设施",是一种遵循既定标准的密钥管理平台,它能够为所有网络应用提供加密和数字签名等密码服务及所必需的密钥和证书管理体系,简单来说,PKI...

junwong
2012/03/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

将桌面捕获到虚拟摄像头

当然你可以直接用现成的虚拟摄像头软件实现这个功能。不过当初我开发这个插件的原因是,需要在Flash产品里面共享桌面,如果此时需要引导用户安装一个第三方的虚拟摄像头体验不好,所以公司希...

一个灰
15分钟前
1
0
Linux 配置网络绑定

1. 常见的网卡绑定驱动模式: mod=0 (balance-rr) Round-robin 衡抡循环策略 特点: 传输数据包顺序是依次传输(即:第1个包走eth0,下一个包就走eth1.一直循环下去,直到最后一个传输完毕),...

JeremyTown
24分钟前
0
0
VS code 编辑器使用技能

VS code 文档:https://code.visualstudio.com/docs/getstarted/locales 1、安装中文扩展包 打开扩展包按钮(最左上角从上往下数第5个按钮或者快捷键 Ctrl + Shift + X) 搜索语言包categor...

削个椰子皮_给个梨
33分钟前
1
0
Django 2.1.2项目中创建一个应用

Django 2.1.2项目中创建一个应用: 1.新建一个应用(app), 名称叫 learn python manage.py startapp learn # learn 是一个app的名称 2.在learn应用中修改视图文件views.py: # Create your vi...

MichaelShu
34分钟前
1
0
Swagger中配置了@ApiModelProperty的allowableValues属性但不显示的问题

现在用Swagger来生成API文档的例子已经非常多了,今天碰到开发同事问了一个问题,帮着看了一下,主要还是配置方法的问题,所以记录一下。如果您也碰到了同样的问题,希望本文对您有用。 问题...

程序猿DD
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部