遊戲陪玩系統,生成證書和金鑰庫的程式碼分析

云豹科技-苏凌霄發表於2024-07-06

遊戲陪玩系統,生成證書和金鑰庫的程式碼分析

生成證書與金鑰庫

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

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

相關文章