作各類第三方支付的時候,下載來的證書是.pem後綴的,很好奇這究竟是個什麼玩意,因而...一場慘絕人寰學習過程開始了...編程
先說PEM,最初是爲了加強郵件安全,將X.509證書用base64進行從新編碼隨着郵件一塊兒傳輸,如今基本就用來生成公鑰/私鑰文件供用戶下載了,本來的功能反而被忘記了。安全
這裏有了個新概念,X.509,這是由國際電信聯盟(ITU-T)制定的ASN.1規範下數字證書標準,它規定了證書應包含哪些信息和使用什麼樣的編碼格式(默認DER二進制編碼)。數據結構
ASN.1,Abstract Syntax Notation One,抽象語法標記,一種ISO/ITU-T 標準,描述了一種對數據進行表示、編碼、傳輸和解碼的數據格式,嗯,這麼說很差理解,能夠類比下開發語言提供的各類基礎類型,X.509使用了這些基礎類型來定義了數字證書的數據結構。(參考連接,ASN.1)編程語言
PKSC,The Public-Key Cryptography Standards,公鑰密碼學標準,由美帝的RSA公司制定的一系列標準,這裏咱們只討論#7/#8/#12,#7/#12是對X.509證書進行擴展、加密用於交換。#8是一種私鑰格式標準。openssl生成的私鑰,能夠轉換成pkcs8格式。學習
總結下:編碼
ASN.1 提供了抽象語法,相似於編程語言中的關鍵字。加密
X.509 是使用這些抽象語法定義了證書的數據結構和編碼規範。url
PEM是將X.509基礎證書用base64從新編碼存爲ASCII文件,用於和郵件一塊兒傳輸保證郵件安全性。spa
PKCS是美帝RSA公司制定的一系列規範,#7/#12對基礎X.509證書和證書對應的私鑰進行擴充、加密、從新編碼後用於交換,#8定義了一種私鑰格式標準。ssl