遊戲陪玩系統,生成證書和金鑰庫的程式碼分析
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
以上就是遊戲陪玩系統,生成證書和金鑰庫的程式碼分析, 更多內容歡迎關注之後的文章