證書格式及其轉換


https://blog.csdn.net/luo15242208310/article/details/108195803

參考鏈接:der pem cer crt key pfx等概念及區別
參考連接:Java 證書管理(keytool實例),jks\crt\cet\ketstore

編碼格式
X.509 - 當前最流行的證書標准,有以下兩種編碼格式.

PEM DER
全稱 Privacy Enhanced Mail Distinguished Encoding Rules
存儲方式 base64編碼
-----BEGIN XXX-----
BhMCY24x…
-----END XXX----- 二進制格式
是否可讀 可讀 不可讀
存儲內容 包括所有私鑰(RSA 和 DSA)、公鑰(RSA 和 DSA)和 (x509) 證書。
它存儲用 Base64 編碼的 DER 格式數據,用 ascii 報頭包圍,因此適合系統之間的文本模式傳輸 包含所有私鑰、公鑰和證書。
它是大多數瀏覽器的缺省格式,並按 ASN1 DER 格式存儲。
它是無報頭的,PEM 是用文本報頭包圍的 DER
適用方向 Apache、Nginx Java、Windows服務器
證書編碼的轉換

# PEM轉為DER
openssl x509 -in cert.crt -outform der -out cert.der
# DER轉為PEM
openssl x509 -in cert.crt -inform der -outform pem -out cert.pem

注:
要轉換KEY文件也類似,只不過把x509換成rsa,要轉CSR的話,把x509換成req…

證書相關的文件類型
常見的擴展名除了PEM和DER還有以下這些,它們除了編碼格式可能不同之外,內容也有差別,但大多數都能相互轉換編碼格式.

類型 內容 編碼
crt 證書(不包括私鑰) pem | der
cer 證書(不包括私鑰) pem | der
key 公鑰或者私鑰,並非X.509證書 pem | der
csr 證書簽名請求(包含公鑰) pem | der
pfx/p12 PKCS#12,包含公鑰和私鑰的二進制格式證書
PFX通常會有一個"提取密碼" der
p7b 以樹狀展示證書鏈(certificate chain),同時也支持單個證書,不含私鑰
jks Java Key Storage利用Java的keytool工具
keypass: 指定別名條目的密碼(私鑰的密碼)
storepass: 指定密鑰庫的密碼(獲取keystore信息所需的密碼)
證書格式轉換
一般來說,主流的Web服務軟件,通常都基於OpenSSL和Java兩種基礎密碼庫。

格式 工具 平台
KEY&CRT openssl
xca(UI工具) Apache、Nginx等
PFX openssl
xca
windows自帶證書庫 微軟Windows Server中的
Internet Information Services(IIS)服務,
使用Windows自帶的證書庫生成PFX格式的證書文件
JKS keytool
kse(UI工具) Tomcat、Weblogic、JBoss等
一般使用Java提供的密鑰庫,通過Keytool工具,生成Java Keystore(JKS)格式的證書文件
KDB iKeyman IBM的Web服務產品,如:
Websphere、IBM Http Server(IHS)等
一般使用IBM產品自帶的iKeyman工具,生成KDB格式的證書文件
證書格式之間的轉換如下圖:


轉換cert+key為pfx

openssl pkcs12 -export -in server.crt -inkey server.key -out server.pfx

pfx轉換jks

keytool -importkeystore -srckeystore D:\server.pfx -destkeystore D:\server.jks -srcstoretype PKCS12 -deststoretype JKS

 

轉換jks為pfx

keytool -importkeystore -srckeystore D:\server.jks -destkeystore D:\server.pfx -srcstoretype JKS -deststoretype PKCS12

將pfx轉換為pem/key/crt

# 提示你輸入提取代碼,server.pem就是可讀的文本
openssl pkcs12 -in server.pfx -nodes -out server.pem
openssl rsa -in server.pem -out server.key
openssl x509 -in server.pem -out server.crt

轉換key為pk8
注:用於Netty SslContextBuilder中指定key文件(非加密)

openssl pkcs8 -topk8 -in server.key -out pkcs8_server.key -nocrypt


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM