Android Studio 生成 keystore 簽名文件
常見 SSL 證書格式 :
- .DER .CER,文件是二進制格式,只保存證書,不保存私鑰。
- .PEM,一般是文本格式,可保存證書,可保存私鑰。
- .CRT,可以是二進制格式,可以是文本格式,與 .DER 格式相同,不保存私鑰。
- .PFX .P12,二進制格式,同時包含證書和私鑰,一般有密碼保護。
- .JKS,二進制格式,同時包含證書和私鑰,一般有密碼保護。
DER
該格式是二進制文件內容,Java 和 Windows 服務器偏向於使用這種編碼格式。
OpenSSL 查看
openssl x509 -in certificate.der -inform der -text -noout
轉換為 PEM:
openssl x509 -in cert.crt -inform der -outform pem -out cert.pem
PEM
Privacy Enhanced Mail,一般為文本格式,以 -----BEGIN...
開頭,以 -----END...
結尾。中間的內容是 BASE64 編碼。這種格式可以保存證書和私鑰,有時我們也把PEM 格式的私鑰的后綴改為 .key 以區別證書與私鑰。具體你可以看文件的內容。
這種格式常用於 Apache 和 Nginx 服務器。
OpenSSL 查看:
openssl x509 -in certificate.pem -text -noout
轉換為 DER:
openssl x509 -in cert.crt -outform der -out cert.der
CRT
Certificate 的簡稱,有可能是 PEM 編碼格式,也有可能是 DER 編碼格式。如何查看請參考前兩種格式。
PFX
Predecessor of PKCS#12,這種格式是二進制格式,且證書和私鑰存在一個 PFX 文件中。一般用於 Windows 上的 IIS 服務器。改格式的文件一般會有一個密碼用於保證私鑰的安全。
OpenSSL 查看:
openssl pkcs12 -in for-iis.pfx
轉換為 PEM:
openssl pkcs12 -in for-iis.pfx -out for-iis.pem -nodes
JKS
Java Key Storage,很容易知道這是 JAVA 的專屬格式,利用 JAVA 的一個叫 keytool
的工具可以進行格式轉換。一般用於 Tomcat 服務器。
--------------------------------------------------------
p12 -> jks
keytool -importkeystore -srckeystore keystore.p12 -srcstoretype PKCS12 -deststoretype JKS -destkeystore keystore.jks
jks -> p12
keytool -importkeystore -srckeystore keystore.jks -srcstoretype JKS -deststoretype PKCS12 -destkeystore keystore.p12
從jks里面導出cert
keytool -export -alias cert0001 -keystore trust.jks -storepass 123456 -file cert0001.cer
將cert導入jks
keytool -import -v -alias cert001 -file cert001.cer -keystore trust.jks -storepass 123456 -noprompt
去除pem格式的key的密碼(輸出的密碼不輸入即可)
openssl rsa -in cert2.key -out cert22.key
合並pem格式輸出pfx(p12)
openssl pkcs12 -export -inkey cert22.key -in cert2.crt -out cert2.pfx
指定intermedian和CA
openssl pkcs12 -export -out mypkcs12.pfx -inkey my.private.key -in mycert.crt -certfile intermediate.crt -CAfile ca.crt
pfx轉回pem
openssl pkcs12 -in cert2.pfx -out cert22.pem -nodes
pem轉key
openssl rsa -in cert22.pem -out cert22.key
pem轉crt
openssl x509 -in cert22.pem -out cert22.crt
cert轉pem
openssl x509 -in cert2.cer -out cert2.pem -outform PEM
pem轉der
openssl x509 -in cert22.pem -inform PEM -out cert22.der -outform DER
der轉pem
openssl x509 -in cert22.cer -inform DER -out cert22.pem -outform PEM
---------------------------------------------------------
======================= End