SSL 證書基本概念掃盲

keytool VS openssl

keytool 和 openssl 是倆個證書管理工具。

keytool 是 java JDK 自帶的證書管理工具,使用 keytool 可以生成密鑰,創建證書。只要裝了 jdk,並正確設置了環境變量,就可以之間通過命令行執行 keytool 命令來管理證書。

openssl 則是一個開源的安全套接字層密碼庫,功能比 keytool 更加豐富。

X.509 VS PKCS

PKCS 全稱 Public-Key Cryptography Standards ,即公鑰標準,PKCS 已經發布了15個標準。

  • PKCS#12 包含了公鑰和私鑰的二進制格式的證書形式,以 .pfx 作爲證書文件後綴。

X.509 則是一個通用的證書標準,規定了證書應該包含哪些內容,X.509 通常有倆種編碼方式,一種是二進制編碼,另一種是 Base64 編碼。

  • X.509#DER 二進制格式證書,常用後綴 .cer .crt
  • X.509#PEM 文本格式證書,常用後綴 .pem

證書文件格式

文件後綴 文件類型 說明
.DER或.CER 二進制格式 只含有證書信息,不包含私鑰。
*.CRT 二進制格式或文本格式 只含有證書信息,不包含私鑰。
*.PEM 文本格式 一般存放證書或私鑰,或同時包含證書和私鑰。.PEM文件如果只包含私鑰,一般用.KEY文件代替。
.PFX或.P12 二進制格式 同時包含證書和私鑰,且一般有密碼保護。

證書格式之間是可以互相轉化的。用到的時候查對應的 openssl 或 keytool 命令就好了。

您可以使用記事本直接打開證書文件。如果顯示的是規則的數字字母(如下所示內容),那麼該證書文件是文本格式。

—–BEGIN CERTIFICATE—–
MIIE5zCCA8+gAwIBAgIQN+whYc2BgzAogau0dc3PtzANBgkqh......
—–END CERTIFICATE—–
  • 如果存在 ——BEGIN CERTIFICATE——,則說明這是一個證書文件。
  • 如果存在 —–BEGIN RSA PRIVATE KEY—–,則說明這是一個私鑰文件。

常見Web服務軟件

常見的 Web 服務軟件,通常都基於 OpenSSL 和 Java 兩種基礎密碼庫。

  • Tomcat、Weblogic、JBoss 等 Web 服務軟件,一般使用 Java 提供的密碼庫。通過 Java Development Kit(JDK)工具包中的 Keytool 工具,生成 Java Keystore(JKS)、keystore 格式的證書文件。

    .keystore.jks 都是 java 用來存放密鑰的文件。它使用戶能夠管理自己的公鑰/私鑰對及相關證書,用於(通過數字簽名)自我認證(用戶向別的用戶/服務認證自己)或數據完整性以及認證服務。它還允許用戶儲存他們的通信對等者的公鑰(以證書形式)。

  • Apache、Nginx 等 Web 服務軟件,一般使用 OpenSSL 工具提供的密碼庫,生成 PEM、KEY、CRT 等格式的證書文件。

  • IBM 的 Web 服務產品,如 Websphere、IBM Http Server(IHS)等,一般使用 IBM 產品自帶的 iKeyman 工具,生成 KDB 格式的證書文件。

  • 微軟 Windows Server 中的 Internet Information Services(IIS)服務,使用 Windows 自帶的證書庫生成 PFX 格式的證書文件。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章