1.生成私钥
openssl genrsa -out rsa_private_key.pem 1024
2、通过私钥生成公钥
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
3、对私钥进行pkcs8编码
openssl pkcs8 -in rsa_private_key.pem -topk8 -out pkcs9_rsa_private_key.pem -inform PEM -outform PEM -nocrypt
4、生成加密的私钥
openssl genrsa -aes256 -passout pass:123456 -out aes_rsa_private_key.pem 1024
5、通过加密私钥生成公钥
openssl rsa -in aes_rsa_private_key.pem -passin pass:123456 -pubout -out rsa_public_key.pem
6、非加密私钥转加密
openssl rsa -in rsa_private_key.pem -aes256 -passout pass:123456 -out t_aes_rsa_private_key.pem
7、加密转非加密
openssl rsa -in t_aes_rsa_private_key.pem -passin pass:123456 -out t_rsa_private_key.pem
8、私钥pem转der
openssl rsa -in rsa_private_key.pem -outform der -out rsa_private_key.der
9、查看私钥明细
openssl rsa -in rsa_private_key.pem -text -noout
10、通过已有的私钥生成签名证书
openssl req -new -x509 -days 365 -key aes_rsa_private_key.pem -out cert.crt
11、生成私钥和签名证书
openssl req -newkey rsa:2048 -nodes -keyout rsa_private_key.pem -x509 -days 365 -out cert.crt #-nodes指的是不用密码
12、通过私钥生成CA签名
openssl req -new -key aes_rsa_private_key.pem -passin pass:123456 -out server.csr
*** 此时生成的 csr签名请求文件可提交至 CA进行签发 ***
13、查看csr细节信息
openssl req -noout -text -in server.csr
14、查看证书细节
openssl x509 -in server.crt -noout -text
15、通过pem证书和私钥生成pkcs#12证书
openssl pkcs12 -export -password pass:123456 -in server.crt -inkey rsa_private_key.pem -out server.p12
其中-export指导出pkcs#12 证书,-inkey 指定了私钥文件,-passin 为私钥(文件)密码(nodes为无加密),-password 指定 p12文件的密码(导入导出)
##############################################################################################
摘要算法
过程:
1.使用md5指定sha1算法,明文输出签名文件(所以建议做摘要和签名验证时使用dgst指令,以免误导)
openssl dgst -sha1 -sign rsa_private_key.pem cert.crt -out sign.txt
---一样的结果
openssl md5 -sha1 -sign rsa_private_key.pem cert.crt -out sign.txt
---指定-c -hex参数,以16进制打印结果
openssl dgst -sha256 -c -hex -sign rsa_private_key.pem cert.crt
结果:
2.使用RSA秘钥进行签名验证操作
--公钥验证
openssl dgst -verify rsa_public_key.pem -sha1 -signature sign.txt cert.crt
--私钥验证
openssl dgst -prverify rsa_private_key.pem -sha1 -signature sign.txt cert.crt
结果:
证书信息:
证书版本: V3
证书序列号: 07000220180925110000001562261
证书持有者秘钥标识符: 80:B2:32:B9:37:C3:F9:E9:8D:D3:DC:44:E9:59:AB:47:93:9E:70:CB
//证书拥有者
证书拥有者信息: /C=CN/ST=广东省/L=深圳市/O=机构测试3/OU=深圳共筑网络科技项目测试/CN=机构测试3
证书拥有者信息CN: 机构测试3
证书拥有者信息O: 机构测试3
证书拥有者信息OU: 深圳共筑网络科技项目测试
//证书颁发者
颁发者秘钥标识符: keyid:95:4D:13:1F:6B:21:91:09:6F:16:12:8A:65:BC:0B:56:0B:11:6B:C8
证书颁发者信息: /C=CN/O=Global Digital Cybersecurity Authority Co., Ltd./CN=GDCA Public CA1
证书颁发者CN: GDCA Public CA1
证书颁发者O: Global Digital Cybersecurity Authority Co., Ltd.
证书有效期: 2018-9-25:00:00:00 2019-9-25:00:00:00
秘钥用途: Digital Signature, Non Repudiation
证书信息:
CN: 公有名称(Comon Name) ---对于签名证书为申请单位名称,对于客户端为证书申请者姓名
O:单位名称(Orgnization Name) ---对于签名证书为申请单位名称,对于客户端证证书申请者所在的单位名称
其他的单词意思好理解
OU: 显示其他内容
issuer : 证书是由哪个公司创建的
名词解释:
OAEP(optimal asymmetric encryption padding):最优非对称加密填充。RSA加解密多基于OAEP。
PSS(probability Signature schema):。RSA的签名认证是基于PSS的
说明:
1、将pkcs8格式的秘钥转换成pkcs1的秘钥
2、将pkcs1的秘钥转换成pkcs8的加密秘钥或无加密秘钥
# 生成无加密的私钥文件。一般是java程序使用
openssl pkcs8 -in ecc_ca_private_key.pem -topk8 -nocrypt
# 生成加密的pkcs8格式的私钥文件
openssl pkcs8 -in ecc_ca_private_key.pem -topk8 -v2 des3 -out pkcs8/ecc_ca_private_key_pkcs8.pem
# 读取加密的pkcs8文件、无加密的pkcs8文件
openssl pkcs8 -in ecc_ca_private_key_pkcs8.pem
openssl pkcs8 -in ecc_ca_private_key_pkcs8.pem -nocrypt
1.创建ecc私钥文件和ecc参数
openssl ecparam -out ecc_private_key.pem -name prime256v1 -genkey
# 补充:导出ecc公钥
openssl pkey -in ecc_ca_private_ket.pem -pubout -out ecc_ca_public_key.pem
# 查看支持的椭圆曲线列表
openssl ecparam -list_curves
结果:
2.查看ecc的参数
penssl ecparam -in ecc_private_key.pem -text
结果:
3.验证ecc参数
openssl ecparam -in ecc_private_key.pem -check
结果:
4..签发证书
1.生成CA的ecc私钥文件
openssl ecparam -out ecc_ca_private_ket.pem -name prime256v1 -genkey
2.生成CA的请证书求文件
openssl req -key ecc_ca_private_ket.pem -new -out ecc_ca.req
3.通过证书请求文件生成证书
openssl x509 -req -in ecc_ca.req -signkey ecc_ca_private_ket.pem -out ecc_ca_x509.pem
4.生成子站点CA的ecc秘钥文件
openssl ecparam -name prime256v1 -genkey -out ecc_ca_site_private_key.pem
5.生成子站点CA的证书请求文件
openssl req -key ecc_ca_site_private_key.pem -new -out ecc_ca_site.req
6.通过CA根证书和子站点证书请求文件生成子站点证书
openssl x509 -req -in ecc_ca_site.req -CA ecc_ca_x509.pem -CAkey ecc_ca_private_ket.pem
结果: