openssl实现公私钥证书生成以及转换
1 openssl简介
1.1 概述
OpenSSL 是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。
1.2 背景技术
1.3 安全信道特征
1.4 功能
1.5 密码算法
对称加密
非对称加密
信息摘要
2 openssl常用命令
2.1 OpenSSl命令总览
语法格式:
openssl command [ command_opts ] [ command_args ]
常用command:
version 用于查看版本信息
enc 用于加解密
ciphers 列出加密套件
genrsa 用于生成私钥
rsa RSA密钥管理(例如:从私钥中提取公钥)
req 生成证书签名请求(CSR)
crl 证书吊销列表(CRL)管理
ca CA管理(例如对证书进行签名)
dgst 生成信息摘要
rsautl 用于完成RSA签名、验证、加密和解密功能
passwd 生成散列密码
rand 生成伪随机数
speed 用于测试加解密速度
s_client 通用的SSL/TLS客户端测试工具
X509 X.509证书管理
verify X.509证书验证
pkcs7 PKCS#7协议数据管理
2.2 应用
2.2.1 生成公私钥范例一
(1)客户证书密钥构建(默认为私钥密钥):采用openssl的desc3加密算法来创建RSA密钥,其中生成的des3密钥长度为1024
# genrsa -des3 -out private_test.key 1024
(2)生成证书请求,通过私钥和配置文件生成公钥,公钥有效期为10年(3650为天数)
# req -new -x509 -key private_test.key -days 3650 -out public_test.crt -config D:\software\openssl\openssl\openssl.cnf
(3)格式转换:转换成一个格式编码为pkcs12的私钥
# pkcs12 -export -name epayment2017 -in public_test.crt -inkey private_test.key -out private_test.pfx
(4)从已生成的商户证书中提取公钥串
# x509 -outform PEM -in public_test.crt -pubkey -out server.pubkey
2.2.2 生成公钥和pkcs8格式私钥
(1)生成rsa原始私钥
# genrsa -out rsa_private_key.pem 1024
此时,我们可以在bin 文件夹中看到一个文件名为rsa_private_key.pem 的文件,用记事本方式打开它,可以看到-----BEGIN RSA PRIVATE KEY-----开头,-----END RSA PRIVATEKEY-----结尾的没有换行的字符串,这个就是原始的私钥。
(2)RSA 私钥转换成PKCS8格式
# pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -ouform PEM -nocrypt
(3)生成公钥
# rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
3 证书格式转换
3.1 证书转换
# PKCS转换为PEM > openssl pkcs12 -in myserver.pfx -out myserver.pem -nodes # PEM转换为DER > openssl x509 -outform der -in myserver.pem -out myserver.[der|crt] # PEM提取KEY > openssl RSA -in myserver.pem -out myserver.key # DER转换为PEM > openssl x509 -inform der -in myserver.[cer|crt] -out myserver.pem # PEM转换为PKCS > openssl pkcs12 -export -inkey myserver.key -in myserver.pem -out myserver.pfx -certfile ca.crt
> openssl pkcs12 -export -inkey www.mysite.com.key -in www.mysite.com.pem -passin pass:123456 -passout pass:123456 -out www.mysite.com.p12
3.2 查看证书内容
# 查看KEY信息 $ openssl rsa -noout -text -in myserver.key # 查看CSR信息 $ openssl req -noout -text -in myserver.csr # 查看证书信息 $ openssl x509 -noout -text -in ca.pem # 查看证书公钥对应的RSA模 $ openssl x509 -in mysite.pem -noout -modulus # 查看证书subject项
$ openssl x509 -in mysite.pem -noout -subject -nameopt multiline # 查看证书issuer项
$ openssl x509 -in mysite.pem -noout -issuer -nameopt multiline # 检查证书用途 $ openssl x509 -purpose -noout -in 192.168.200.7.cer
4 OpenSSL下载方式(二选一)
1、Windows用户开发者可以在OpenSSL官方网站下载Windows的OpenSSL安装包进行安装。下载路径:https://www.openssl.org/source/
2、简易安装包下载地址:https://files.cnblogs.com/files/xq1314/openssl.zip
(1)双击bin目录下的openssl.exe执行文件
参考:
1、https://baike.baidu.com/item/openssl/5454803?fr=aladdin#5
2、http://blog.csdn.net/baidu_36649389/article/details/54379935