游戏陪玩系统,生成证书和密钥库的代码分析
游戏陪玩系统,生成证书和密钥库的代码分析
openssl命令提供了大量的工具,用以生成密钥、证书与密钥库文件,如下,是一个典型的生成密钥与证书的过程:
# 生成pkcs1 rsa私钥 openssl genrsa -out rsa_private_key_pkcs1.key 2048 # 生成pkcs1 rsa公钥 openssl rsa -in rsa_private_key_pkcs1.key -RSAPublicKey_out -out rsa_public_key_pkcs1.key # 生成证书申请文件cert.csr openssl req -new -key rsa_private_key_pkcs1.key -out cert.csr # 自签名(演示时使用,生产环境一般不用自签证书) openssl x509 -req -days 365 -in cert.csr -signkey rsa_private_key_pkcs1.key -out cert.crt # ca签名(将证书申请文件提交给ca机构签名) openssl x509 -req -days 365 -in cert.csr -CA ca_cert.crt -CAkey ca_private_key.pem -CAcreateserial -out cert.crt # 生成p12密钥库文件 openssl pkcs12 -export -in cert.crt -inkey rsa_private_key_pkcs1.key -name demo -out keystore.p12
有时别人发来的密钥或证书文件无法读取,也可使用openssl确认一下,如果openssl能读出来,那大概率是自己程序有问题,如果openssl读不出来,那大概率是别人发的文件有问题,如下:
# 查看pkcs1 rsa私钥 openssl rsa -in rsa_private_key_pkcs1.key -text -noout # 查看pkcs1 rsa公钥 openssl rsa -RSAPublicKey_in -in rsa_public_key_pkcs1.key -text -noout # 查看x.509证书 openssl x509 -in cert.crt -text -nocert # 查看pkcs12密钥库文件 openssl pkcs12 -in keystore.p12 keytool -v -list -storetype pkcs12 -keystore keystore.p12
由于密钥、证书、密钥库文件,其实都是使用ASN.1语法描述的,所以它们都能按ASN.1语法解析出来,如下:
openssl asn1parse -i -inform pem -in cert.crt
某些情况下,我们需要在不同格式的密钥或证书文件之间转换,也可使用openssl命令来完成。
密钥格式转换,如下:
# rsa公钥转换为X509公钥 openssl rsa -RSAPublicKey_in -in rsa_public_key_pkcs1.key -pubout -out public_key_x509.key # rsa私钥转换为PKCS8格式 openssl pkcs8 -topk8 -inform PEM -in rsa_private_key_pkcs1.key -outform PEM -nocrypt -out private_key_pkcs8.key # pkcs8转rsa私钥 openssl pkcs8 -inform PEM -nocrypt -in private_key_pkcs8.key -traditional -out rsa_private_key_pkcs1.key
证书格式转换,如下:
# 证书DER转PEM openssl x509 -inform der -in cert.der -outform pem -out cert.pem -noout # x509证书转pkcs7证书 openssl crl2pkcs7 -nocrl -certfile cert.crt -out cert.p7b # 查看pkcs7证书 openssl pkcs7 -print_certs -in cert.p7b -noout
由于密钥库中包含证书与私钥,故可以从密钥库文件中提取出证书与私钥,如下:
# 从pkcs12密钥库中提取证书 openssl pkcs12 -in keystore.p12 -clcerts -nokeys -out cert.crt # 从pkcs12密钥库中提取私钥 openssl pkcs12 -in keystore.p12 -nocerts -nodes -out private_key.key # pkcs12转jks keytool -importkeystore -srckeystore keystore.p12 -srcstoretype pkcs12 -srcalias demo -destkeystore keystore.jks -deststoretype jks -deststorepass 123456 -destalias demo # 从jks中提取证书 keytool -export -alias demo -keystore keystore.jks -file cert.crt
以上就是游戏陪玩系统,生成证书和密钥库的代码分析, 更多内容欢迎关注之后的文章