證書與 CA:
證書是公鑰證書的簡稱,是一段由公鑰、身份標識等附加信息構成的數據,其格式和編碼需要遵循行業標準才能被不同的信息系統正確解析,比如 X509 標準。
身份標識信息指定了證書的擁有者,類似於公民身份證指定了一個人,可以認爲證書就是網絡身份證。
公民身份證由公安局頒發,數字證書則由 Certification Authority (簡稱 CA)頒發。
和公民身份證一樣,證書在需要被用到的時候是公開的,可以被其他軟件所獲取到,以證實其身份。
讀者可能會疑問:“證書被其他系統獲取後,冒充真實的證書擁有者怎麼辦?”這就是證書和身份證的重要差別之處。
因爲證書中包含公鑰,但不包含私鑰,所以其他系統只能通過證書進行身份驗證,但由於無法獲得私鑰,也就無法冒充證書擁有者。
**
**
證書的用途
證書包含公鑰,公鑰可以做數據加密和簽名驗證,因此,證書通常被用來做數據加密和簽名驗證,分別被稱之爲加密證書和簽名證書。
用 OpenSSL 工具 制證:
**
**
1.創建一對祕鑰,公鑰 public-key、私鑰 private-key,這一動作可以被後續命令合併執行,無需單獨執行;將用戶身份標識信息,比如 Common-Name、DNS、以及附加信息等寫入配置文件中,將序列號寫入序列號文件中,並建立空白的索引文件,配置文件、序列號文件、索引文件的格式及內容含義可參閱 OpenSSL 手冊或網絡博文。
2.用私鑰 private-key 對公鑰 public-key 以及身份標識信息簽名,形成一個證書請求文件,文件後綴名是什麼不重要,通常用 .csr 或 .req。
根據選擇的公鑰算法類型,這兩步所使用的 openssl 命令及其數目是不一樣的。
RSA 算法
openssl req –new -config [配置文件] -newkey rsa:[ RSA 算法位數] -nodes –keyout [用戶私鑰文件] –out [證書請求文件]
DSA 算法
openssl dsaparam –genkey –out [用戶私鑰文件] [DSA 算法位數]
openssl req –new –config [配置文件] –key [用戶私鑰文件] –out [證書請求文件]
ECDSA 算法
openssl ecparam –genkey –out [用戶私鑰文件] –name [橢圓曲線參數]
openssl req –new –config [配置文件] –key [用戶私鑰文件] –out [證書請求文件]
**
**
3.用 CA 的私鑰對證書請求文件簽名生成用戶證書,證書文件名是 [證書序列號 .pem],所在位置由配置文件裏的相應參數指定:
openssl ca –config [__配置文件] –batch –notext –passin pass:[CA 私鑰文件的加密密碼] –in [證書請求文件]
**
**
4.將 CA 根證書、用戶證書、用戶私鑰一起封裝到 P12 格式的文件中,然後根據需要,可將 P12 文件再轉換爲 PEM 格式。
openssl pkcs12 –export –in [__用戶證書文件] –certfile [CA 根證書文件]_-inkey [__用戶私鑰文件] –passout pass:[P12 文件的加密密碼] –out [P12 文件] -name [用戶證書別名] –caname [CA 證書別名]_
openssl pkcs12 –in [P12__文件] -passin pass:[P12 文件的加密密碼] –passout pass:[PEM 文件的加密密碼] –out [PEM 文件]
**
**
5.妥善處理以上步驟生成的各類文件,要特別注意私鑰文件的安全,並注意保存證書請求文件、最終生成的 P12 文件。
作者:Karl 嘉楠區塊鏈研究院高級研究員
嘉楠區塊鏈:嘉楠耘智(Canaan Inc.)旗下區塊鏈板塊。
熱文搶讀:
1、Byteball 技術剖析之一:DAG 賬本與最優樹
2、Byteball 技術剖析之二:主幹鏈選擇與交易定序
3、以太坊 ERC875 示例分析:一手交幣,一手交證
4、EOS“帶貨”Bancor 算法,但大多數人並未真正讀懂它
5、簡析跨鏈原子交易