經常使用的證書格式轉換

一直對電子證書的文件後綴比較頭大,搞不清這些後綴的關係,終於在網上搜到一個比較簡明的文章,試着翻譯一下:)node


證書與編碼

本至上,X.509證書是一個數字文檔,這個文檔根據RFC 5280來編碼並/或簽發。linux

實際上,「X.509證書」常常被用來指代IETF的PKIX(Public Key Infrastructure)證書和X.509 v3 證書標準中的CRL(Certificate Revocation List)。算法


X509 文件擴展名

首先咱們要理解文件的擴展名錶明什麼。DER、PEM、CRT和CER這些擴展名常常使人困惑。不少人錯誤地認爲這些擴展名能夠互相代替。儘管的確有時候有些擴展名是能夠互換的,可是最好你能肯定證書是如何編碼的,進而正確地標識它們。正確地標識證書有助於證書的管理。安全


編碼 (也用於擴展名)

  • .DER = 擴展名DER用於二進制DER編碼的證書。這些證書也能夠用CER或者CRT做爲擴展名。比較合適的說法是「我有一個DER編碼的證書」,而不是「我有一個DER證書」。工具

  • .PEM = 擴展名PEM用於ASCII(Base64)編碼的各類X.509 v3 證書。文件開始由一行"—– BEGIN …「開始。編碼


經常使用的擴展名

  • .CRT = 擴展名CRT用於證書。證書能夠是DER編碼,也能夠是PEM編碼。擴展名CER和CRT幾乎是同義詞。這種狀況在各類unix/linux系統中很常見。加密

  • CER = CRT證書的微軟型式。能夠用微軟的工具把CRT文件轉換爲CER文件(CRT和CER必須是相同編碼的,DER或者PEM)。擴展名爲CER的文件能夠被IE識別並做爲命令調用微軟的cryptoAPI(具體點就是rudll32.exe cryptext.dll, CyrptExtOpenCER),進而彈出一個對話框來導入並/或查看證書內容。spa

  • .KEY = 擴展名KEY用於PCSK#8的公鑰和私鑰。這些公鑰和私鑰能夠是DER編碼或者PEM編碼。翻譯

CRT文件和CER文件只有在使用相同編碼的時候才能夠安全地相互替代。unix




1.從pfx格式的證書提取出密鑰和證書 
set OPENSSL_CONF=openssl.cnf 
openssl pkcs12 -in my.pfx -nodes -out server.pem 
openssl rsa -in server.pem -out server.key 
openssl x509 -in server.pem -out server.crt 
PEM格式的證書與DER格式的證書的轉換 
openssl x509 -in cert.pem -inform PEM -out cert.der -outform DER 
openssl x509 -in ca.cer -inform DER -out ca.pem -outform  PEM 
幾種典型的密碼交換信息文件格式: 
DER-encoded certificate: .cer, .crt 
PEM-encoded message: .pem 
PKCS#12 Personal Information Exchange: .pfx, .p12 
PKCS#10 Certification Request: .p10 
PKCS#7 cert request response: .p7r 
PKCS#7 binary message: .p7b 
.cer/.crt是用於存放證書,它是2進制形式存放的,不含私鑰。 
.pem跟crt/cer的區別是它以Ascii來表示。 
pfx/p12用於存放我的證書/私鑰,他一般包含保護密碼,2進制方式 
p10是證書請求 
p7r是CA對證書請求的回覆,只用於導入 
p7b以樹狀展現證書鏈(certificate chain),同時也支持單個證書,不含私鑰 

算法 
base64不是加密算法,但也是SSL常用的一種算法,它是編碼方式,用來把asc碼和二進制碼轉來轉去的。 

openssl x509部分命令 
打印出證書的內容: 
openssl x509 -in cert.pem -noout -text 
打印出證書的系列號 
openssl x509 -in cert.pem -noout -serial 
打印出證書的擁有者名字 
openssl x509 -in cert.pem -noout -subject 
以RFC2253規定的格式打印出證書的擁有者名字 
openssl x509 -in cert.pem -noout -subject -nameopt RFC2253 
在支持UTF8的終端一行過打印出證書的擁有者名字 
openssl x509 -in cert.pem -noout -subject -nameopt oneline -nameopt -escmsb 
打印出證書的MD5特徵參數 
openssl x509 -in cert.pem -noout -fingerprint 
打印出證書的SHA特徵參數 
openssl x509 -sha1 -in cert.pem -noout -fingerprint 
把PEM格式的證書轉化成DER格式 
openssl x509 -in cert.pem -inform PEM -out cert.der -outform DER 
把一個證書轉化成CSR 
openssl x509 -x509toreq -in cert.pem -out req.pem -signkey key.pem 
給一個CSR進行處理,頒發字簽名證書,增長CA擴展項 
openssl x509 -req -in careq.pem -extfile openssl.cnf -extensions v3_ca -signkey key.pem -out cacert.pem 
給一個CSR簽名,增長用戶證書擴展項 
openssl x509 -req -in req.pem -extfile openssl.cnf -extensions v3_usr -CA cacert.pem -CAkey key.pem -CAcreateserial

相關文章
相關標籤/搜索