X.509證書介紹


SSL Certificate實際上就是X.509 Certificate。X.509是一個定義了certificate結構的標准。它在SSL certificate中定義了一個數據域。X.509使用名為 Abstract Syntax Notation One (ASN.1)的通用語言來描述certificate的數據結構。

X.509 certificate 有幾種不同的格式,例如 PEM,DER,PKCS#7 和 PKCS#12。 PEM和PKCS#7格式使用Base64 ASCII編碼,而DER和PKCS#12使用二進制編碼。certificate文件基於不同的編碼格式有不同的文件擴展名。

如下圖就展示了X.509證書的編碼方式和文件擴展名。

PEM 格式(Privacy-Enhanced Mail)

大多數 CA (Certificate Authority) 提供了Base64 ASCII編碼的PEM格式的certificate文件。這些證書文件的后綴可以是 .pem, .crt, .cer, .key。 以.pem結尾的文件可以將服務端證書(server certificate),中間證書(intermediate certificate)和私鑰(private key)包含在一個文件中。服務端證書和中間證書也可以分別存放在.crt 和 .cer兩個文件中。私鑰可以單獨在一個 .key文件中。

PEM文件使用ASCII編碼,所以你可以用文本編輯器打開它,例如notepad,微軟的word等等。每一個PEM文件中的證書都在"---- BEGIN CERTIFICATE---- " 和 "----END CERTIFICATE----"語句之間。私鑰包括在"---- BEGIN RSA PRIVATE KEY-----" 和 "-----END RSA PRIVATE KEY-----"語句之間。而CSR則包含在"-----BEGIN CERTIFICATE REQUEST----- " 和 "-----END CERTIFICATE REQUEST-----"語句之間。

CER或CRT格式證書轉換為PEM格式:

對於CER或CRT格式的證書,您可通過直接修改證書文件擴展名的方式,將其轉換成PEM格式。例如,將server.crt證書文件重命名為server.pem即可。

PKCS#7 格式
PKCS#7格式是一種加密消息語法標准。PKCS#7證書使用Base64 ASCII編碼和文件擴展名 .p7b 或 .p7c 。只有證書可以存儲在這種格式的文件中,私鑰則不可以。P7B證書包含在"-----BEGIN PKCS7-----"  和 "-----END PKCS7-----" 語句之間。

DER 格式(Distinguished Encoding Rules)

DER格式的證書是二進制形式,存儲在以 .der 和 .cer 為擴展名的文件中。這些證書大部分使用在基於java的web服務器上。

PKCS#12 格式
PKCS#12格式的證書也是二進制形式,存儲在以 .pfx 或 .p12為擴展名的文件中。

PKCS#12文件可以存儲服務端證書,中間證書和私鑰在一個 .pfx文件中,並且使用密碼保護。 這類證書主要使用在Windows平台。 

將PFX文件轉換為PEM格式時,OpenSSL會將所有證書和私鑰放入一個文件中。您需要在文本編輯器中打開該文件,並將每個證書和私鑰(包括BEGIN / END語句)復制到其各自的文本文件中,並將它們分別保存為certificate.cer,CACert.cer和privateKey.key。

總結
DER 實際上就是密鑰的最原始的二進制格式;而 PEM 是對 DER 的 Base64 的編碼,PEM 解碼后得到的就是 DER 編碼格式。

只要是文本格式的文件,用文本編輯器打開后查看關鍵語句即可。

CSR    (certificate signing request )

PKCS     (Public Key Cryptography Standards)

 


免責聲明!

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



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