SSL證書格式詳解與轉換

2021-02-23 運維幫

轉自:http://www.ttlsa.com/safe/ssl-certificate-format-and-conversion/

一般來說,主流的 Web 服務軟體,通常都基於 OpenSSL 和 Java 兩種基礎密碼庫。

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

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 格式的證書文件。

判斷證書文件是文本格式還是二進位格式

*.DER 或 *.CER 文件: 這樣的證書文件是二進位格式,只含有證書信息,不包含私鑰。

*.CRT 文件: 這樣的證書文件可以是二進位格式,也可以是文本格式,一般均為文本格式,功能與 *.DER 及 *.CER 證書文件相同。

*.PEM 文件: 這樣的證書文件一般是文本格式,可以存放證書或私鑰,或者兩者都包含。 *.PEM 文件如果只包含私鑰,一般用 *.KEY 文件代替。

*.PFX 或 *.P12 文件: 這樣的證書文件是二進位格式,同時包含證書和私鑰,且一般有密碼保護。

也可以使用記事本直接打開證書文件。如果顯示的是規則的數字字母,例如:

那麼,該證書文件是文本格式的。

如果存在——BEGIN CERTIFICATE——,則說明這是一個證書文件。

如果存在—–BEGIN RSA PRIVATE KEY—–,則說明這是一個私鑰文件。

證書格式轉換

以下證書格式之間是可以互相轉換的。

可使用以下方式實現證書格式之間的轉換:

1. 將 JKS 格式證書轉換成 PFX 格式

使用 JDK 中自帶的 Keytool 工具,將 JKS 格式證書文件轉換成 PFX 格式。

例如,可以執行以下命令將 server.jks 證書文件轉換成 server.pfx 證書文件:

keytool -importkeystore -srckeystore D:\server.jks -destkeystore D:\server.pfx -srcstoretype JKS -deststoretype PKCS12

2. 將 PFX 格式證書轉換為 JKS 格式

使用 JDK 中自帶的 Keytool 工具,將 PFX 格式證書文件轉換成 JKS 格式。

例如,可以執行以下命令將 server.pfx 證書文件轉換成 server.jks 證書文件:

keytool -importkeystore -srckeystore D:\server.pfx -destkeystore D:\server.jks -srcstoretype PKCS12 -deststoretype JKS

3. 將 PEM/KEY/CRT 格式證書轉換為 PFX 格式

可以使用 OpenSSL工具,將 KEY 格式密鑰文件和 CRT 格式公鑰文件轉換成 PFX 格式證書文件。

例如,將 KEY 格式密鑰文件(server.key)和 CRT 格式公鑰文件(server.crt)拷貝至 OpenSSL 工具安裝目錄,使用 OpenSSL 工具執行以下命令將證書轉換成 server.pfx證書文件:

openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt

4. 將PFX轉換為PEM/KEY/CRT

可以使用 OpenSSL工具,將 PFX 格式證書文件轉化為 KEY 格式密鑰文件和 CRT 格式公鑰文件。

例如,將 PFX 格式證書文件拷貝至 OpenSSL 安裝目錄,使用 OpenSSL 工具執行以下命令將證書轉換成 server.pem 證書文件、KEY 格式密鑰文件(server.key)和 CRT 格式公鑰文件(server.crt):

openssl pkcs12 -in server.pfx -nodes -out server.pem

openssl rsa -in server.pem -out server.key

openssl x509 -in server.pem -out server.crt

此轉換步驟是專用於通過 Keytool 工具生成私鑰和 CSR 申請證書文件的,並且通過此方法可以在獲取到 PEM 格式證書公鑰的情況下分離私鑰。在實際部署數字證書時,請使用通過此轉換步驟分離出來的私鑰和申請得到的公鑰證書匹配進行部署。

相關焦點

  • SSL證書配置
    #    ssl_certificate      cert.pem;     #    ssl_certificate_key  cert.key;     #    ssl_session_timeout  5m;     #    ssl_protocols  SSLv2 SSLv3 TLSv1;     #    ssl_ciphers  ALL
  • 申請免費的SSL證書
    申請免費的SSL證書此段時間通過沃通申請了免費的SSL證書, 這兩天發現Chrome提示證書不安全, Chrome已經對沃通證書不認證了.我們通過https://www.sslforfree.com/來申請免費的SSL的證書, 並且各大瀏覽器都認證.打開網站sslforfree網址: https://www.sslforfree.com/輸入自己的域名, 點擊Create Free SSL Certificate認證域名
  • 什麼是SSL證書
    ssl原理3. 如何訪問SSL證書包含的信息?以下是SSL證書的主要內容:為其頒發證書的「域名」頒發證書的組織、人員或機構頒發證書的證書頒發機構的名稱籤發CA的數字籤名與之關聯的子域證書籤發日期證書的有效期web瀏覽器與web伺服器通信,並使用該數據文件驗證網站的身份和SSL證書的狀態。4.
  • Https超文本傳輸協議-SSL證書
    下面來說一下如何申請SSL證書及配置https1. 申請免費證書(以上都是在實名認證的情況下)騰訊雲: https://console.cloud.tencent.com/ssl阿里雲:https://www.aliyun.com/sswd/458133-1.html
  • 使用ssl_exporter監控K8S集群證書
    使用kubeadm搭建的集群默認證書有效期是1年,續費證書其實是一件很快的事情。但是就怕出事了才發現,畢竟作為專業搬磚工程師,每天都很忙的。鑑於此,監控集群證書有效期是一件不得不做的事情。Prometheus作為雲原生領域的王者,如果能用它來監控證書有效期並能及時告警,那就再好不過了。ssl_exporter就是來做這個事情的。ssh_exporter是一個Prometheus Exporter能提供多種針對 SSL 的檢測手段,包括:https 證書生效/失效時間、文件證書生效/失效時間,OCSP 等相關指標。
  • 在IIS下部署SSL證書實現HTTPS
    IIS6對於IIS6來說,支持PFX格式證書,下載包中包含PFX格式證書和密碼文件。導入成功後,可以看到證書信息。( 2 ) 分配伺服器證書打開IIS管理器(或開始-運行-輸入inetmgr-回車)。選擇網站,右鍵打開「屬性」,選擇「目錄安全性」,點擊「伺服器證書」。根據證書配置嚮導,點擊「下一步」。如果已經完成了「證書導入」,則選擇「分配現有證書」,選擇已經導入的證書即可。否則,選擇「從。
  • 如何使用OpenSSL創建自籤名SSL證書
    相當一部分SSL證書需要付費購買,雖然一般不是很貴,成本也需要稍稍考慮一下。免費的SSL證書也有不少地方可以申請,但是能支持內網IP位址的好像沒有。基於這兩條考慮,考慮使用開源組件OpenSSL創建自籤名SSL證書。自己發給自己的證書,可不就想怎麼改就怎麼改。
  • 使用Python v3.4 + SSLContext 進行SSL / TLS客戶端證書驗證
    傳統上在 Python 中,您需要將 ca_certs 參數傳遞給 ssl.wrap_socket() 伺服器上的函數以啟用客戶端證書:#客戶端ssl.wrap_socket(s,ca_certs =「ssl / server.crt」,cert_reqs = ssl.CERT_REQUIRED,                certfile =「ssl
  • MongoDB安全實戰之SSL協議加密
    2.2 證書證書頒發機構在生產環境下,MongoDB應使用有效證書的生成和由一個單一的認證機構籤名。生成pem文件在使用SSL之前,必須有一個包含公鑰證書及其相關私鑰的PEM文件。MongoDB可以使用任何有效的SSL證書由證書頒發機構頒發的證書或自籤名證書。
  • 手把手教你免費申請支持通配符的 SSL 證書
    大部分傳統 CA 機構籤發證書是需要收費的,這不利於推動 HTTPS 協議的使用。Let’s Encrypt 是一個國外的非盈利的 CA 證書機構,旨在以自動化流程消除手動創建和安裝證書的複雜流程,並推廣使全球資訊網伺服器的加密連接無所不在,為安全網站提供免費的 SSL/TLS 證書。
  • Python 獲取 NCBI 基因名 SSL 證書異常?
    即想要通過 Python 在線獲取某個轉錄本對應的基因 symbol 時,發現出現 SSL 無法獲取本地證書:unable to get local issuer certificate (_ssl.c:1056)!
  • 手把手教大家如何給域名申請免費SSL證書
    作為新手的你可能滿臉問號,我,我發布的不是什麼yyyy網站呀~其實,這並不是說你的網站有問題,而是告訴你,你的網站或者你訪問的這個網站不安全,存在數據洩露的風險,一般來說都是因為沒有配置ssl證書的原因。本文將手把手教大家如何給域名申請ssl證書。
  • 物聯網網關 QT5 使用 SSL自籤名證書訪問雲端HTTPS REST API 服務
    SSL包含記錄層(Record Layer)和傳輸層,記錄層協議確定傳輸層數據的封裝格式。傳輸層安全協議使用X.509認證,之後利用非對稱加密算法來對通信方做身份認證,之後交換對稱密鑰作為會話密鑰(Session key)。這個會話密鑰是用來將通信兩方交換的數據做加密,保證兩個應用間通信的保密性和可靠性,使客戶與伺服器應用之間的通信不被攻擊者竊聽。
  • 使用acme.sh申請Let's Encrypt免費的SSL證書
    (ISRG)提供的免費、自動化和開放的證書頒發機構(CA),簡單的說,就是為網站提供免費的 SSL/TLS 證書。acme.sh 實現了 acme 協議,可以從letsencrypt生成免費的證書。接下來將為大家介紹怎樣申請Let's Encrypt通配符證書。
  • 什麼是SSL證書?使用ssl證書優勢?
    HTTPS是加密傳輸協議,HTTP是明文傳輸協議;HTTPS需要用到SSL證書,而HTTP不用;HTTPS標準埠443,HTTP標準埠80;HTTPS基於傳輸層,HTTP基於應用層;什麼是SSL?1.1 數據傳輸期間,對信息進行加密1.2通過唯一的SSL憑據識別證書所有者身份。1.3先驗證證書所有者身份,再頒發SSL證書。什麼是SSL數字證書(SSL證書)?數字證書的一種,類似於駕駛證、護照和營業執照的電子副本。因為配置在伺服器上,也稱為SSL伺服器證書。
  • 個人及中小企業SSL/TLS證書選購指南
    SSL證書按照驗證級別來分的話,可分為:域名型SSL證書(DV,域驗證)、企業型SSL證書(OV,組織驗證)、拓展性SSL證書(EV,擴展驗證),由於OV和EV證書價格昂貴,個人和中小企業選擇DV證書就可以基本滿足安全性需求了
  • 使用 Let's Encrypt 生成免費的 SSL 證書
    Let's Encrypt 是由網際網路安全研究小組(ISRG,一個公益組織)於 2015 年末推出的數字證書認證機構,將通過旨在消除當前手動創建和安裝證書的複雜過程的自動化流程,為安全網站提供免費的 SSL/TLS 證書。Let's Encrypt 的使用相對簡單,並且完全免費,是很多中小網站的首先。certbot 是什麼?
  • Let's Encrypt 免費通配符 SSL 證書申請教程
    本文將會詳細介紹如何免費申請 Let’s Encrypt 通配符證書。什麼是通配符證書域名通配符證書類似 DNS 解析的泛域名概念,通配符證書就是證書中可以包含一個通配符。主域名籤發的通配符證書可以在所有子域名中使用,比如 .example.com、bbs.example.com。
  • 企業如何選擇SSL證書?
    目前SSL證書從域名類型來說分單域名SSL證書、通配符域名SSL證書,從證書類型來說分為域名驗證型DV、組織型驗證OV、擴展型驗證EV.共5種ssl證書類別,從品牌來說又分國內和國外眾多品牌,例如:DigiCert、Godaddy、Geotrust等等。面對如此多類型和品牌,企業該如何選擇?
  • SSL / TLS 協議運行機制詳解
    連結:www.ruanyifeng.com/blog/2014/02/ssl_tls.html網際網路的通信安全,建立在SSL/TLS