
使用openssl生成自签名证书
这部分就是刚才在openssl.cnf里填写的内容。
发布日期:2021-05-04 02:14:12
浏览次数:30
分类:技术文章
本文共 2199 字,大约阅读时间需要 7 分钟。
由于最近项目中需要用到安全证书,所以这里记录下如何使用openssl生成安全证书,操作环境:Ubuntu16.04,
操作过程
一. 生成证书
- 生成一个2048位的私匙文件 — rsa_private_key.pem
openssl genrsa -out rsa_private_key.pem 2048
- 从私匙里提取公匙文件 — rsa_public_key.pem
openssl rsa -in rsa_private_key.pem -out rsa_public_key.pem -outform PEM -pubout
- 使用私匙创建公匙证书请求,会让你填写一些内容,可根据需要填写,
openssl req -new -key rsa_private_key.pem -out rsa_cert_req.csr
- 生成证书(crt)并签名(有效期10年),注意这个不是v3证书,后面会讲如何生成v3证书
openssl x509 -req -days 3650 -in rsa_cert_req.csr -signkey rsa_private_key.pem -out rsa_cert.crt
- 查看crt证书,会显示在第3步中填写的内容,
openssl x509 -in rsa_cert.crt -noout -text
其中,C:Country(国家);ST:State(省);L:Locality(市);O:Organization Name(组织);OU:Organizational Unit(部门);CN:Common Name(域名)
上述操作生成的证书是crt,私匙和公匙文件格式是pem,有时我们需要的是der格式的证书和钥匙,那么就需要进行转换,转换如下,
- 把私匙转换成der格式
openssl rsa -in rsa_private_key.pem -out rsa_private_key.der -outform der
- 把公匙转换成der格式
openssl rsa -in rsa_public_key.pem -out rsa_public_key.der -pubin -outform der
- 把crt证书转换成der格式
openssl x509 -in rsa_cert.crt -out rsa_cert.der -outform der
- 查看der格式的证书
openssl x509 -in rsa_cert.der -inform der -noout -text
这样就证书和钥匙文件就生成完毕了。
二 生成v3证书
如果需要生成v3证书,那么就需要先生成私匙和公匙证书请求,即前面生成的rsa_private_key.pem和rsa_cert_req.csr。
然后在ubuntu里查找openssl.cnf文件,命令如下,
sudo find /* -name "openssl.cnf"
一般是在/ect/ssl/openssl.cnf,也可能是/usr/local/ssl/openssl.cnf,或者别的地方。把这个文件拷贝出来,然后打开,在文本最后添加以下内容,注意,实际使用时要根据自己的需要进行添加和修改, [hello_cert]subjectKeyIdentifier=hashauthorityKeyIdentifier=keyid,issuerbasicConstraints=CA:FALSEkeyUsage = nonRepudiation, digitalSignature, keyEnciphermentsubjectAltName=@alt_names[alt_names]DNS.1 = localhostDNS.2 = Linux-Ubuntu16.04IP.1 = 127.0.0.1IP.2 = 0.0.0.0URI = xxxx
也可以不使用openssl.cnf,直接自己写个文件,包含上面要添加的内容,也可以运行成功,这里使用openssl.cnf只是做个范例,因为这个文件里其它内容可以作为参考。
最后执行下面的命令来生成v3证书,
openssl x509 -req -days 3650 -sha256 -extfile openssl.cnf -extensions hello_cert -in rsa_cert_req.csr -signkey rsa_private_key.pem -out server.crt
PS: -extfile后面的openssl.cnf就是之前我们拷贝过来并修改的opensll.cnf文件,-extensions后面的hello_crt表示从openssl.cnf里提取hello_crt的内容。
生成的是crt证书,如需生成der格式可以参考上一节来转换。下面查看下这个cert证书,来看下我们添加进去的内容,
openssl x509 -in server.crt -noout -text
可以看到有如下内容,

小结
本文主要讲述如何使用openssl生成自签名证书,参考了网上很多其它文章,自己也多次实践并验证通过。
如果有写的不对的地方,希望能留言指正,谢谢阅读。
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年04月07日 09时22分44秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
深入理解 ClientLifecycleManager 机制
2019-03-03
android基础知识回顾--ContentProvider简单用法
2019-03-03
js try{}catch(){}finally{}语句
2019-03-03
R3 PRO 3200G和r7 3700u 哪个好
2019-03-03
入手评测 联想小新Pro14和Air14Plus哪个好?区别对比
2019-03-03
macOS Big Sur系统中如何开启设置触控板三指拖拽功能?
2019-03-03
修复苹果Mac中的快速视频播放错误的方法
2019-03-03
Mac系统投屏到电视机的方法
2019-03-03
【Docker&ARM】ARM架构服务器上docker的安装
2019-03-03
php--自定义错误处理函数的使用方法
2019-03-03
php--异常处理主动抛出异常的使用方法
2019-03-03
php--class static
2019-03-03
php--匿名函数的使用
2019-03-03
php--json_decode
2019-03-03
php--class的工厂模式的示例
2019-03-03
jQuery练习t76
2019-03-03
jQuery练习t78
2019-03-03
jQuery练习t80
2019-03-03