您好,登錄后才能下訂單哦!
???????? 各類證書由于存儲的內容不同(如是否包含公鑰/私鑰是否加密存儲/單一證書或多證書等)、采用編碼不同(DER/BASE64)、標準不同(如PEM/PKCS),所以盡管X.509標準規定了證書內容規范,但證書文件還是五花八門。
??????????? 在實際應用中經常會要求進行證書格式轉化,比如在配置VMware Operation Manager 和Identity Manager等Linux場景下的證書服務器時要求使用的是PEM編碼格式的證書,但是很多人手上只有CER格式的證書。好在openssl對這些不同的標準都有著不錯的支持,可以用來進行不同格式證書的轉換。本文章將會以Identity Manager場景下的SSL格式轉換為例進行演示講解
本環境中將會有企業內的CA證書頒發機構為其進行證書頒發,所以獲取的證書格式為Windows易于識別的Cer或者pfx格式。首先我們將該證書導出
對于本環境的Identity Manager需要用到私鑰,故此選擇導出私鑰
注:一般情況下需要用到pem格式的證書都需要導出和識別證書
勾選導出私鑰后,文件格式只能選擇pfx
設置密碼
選擇導出路徑
導出完成
同時我們也要導出企業的根證書頒發機構的證書進行導出
根證書選擇不導出私鑰。注:將根證書頒發機構的證書導出是一件很危險的事情
證書格式我們選擇“base64編碼”
導出完成
至此我們已經獲得一個服務器證書以及一個對應的根證書頒發機構的證書,接下來就可以通過openssl進行證書格式轉換。
在安裝openssl前,請先在系統中安裝 Microsoft Visual C++ 2008 Redistributable Package (x86)。要下載軟件包,(下載地址:
https://www.microsoft.com/en-us/download/confirmation.aspx?id=29)
下載適用于OpenSSL x86 的 Shining Light Productions 安裝程序,,下載網址為 Shining Light Productions。這是 OpenSSL Project 開發的軟件。下載完成后點擊安裝,默認情況下其會安裝在C盤根目錄
通過cmd進入安裝目錄的bin目錄
首先將pfx格式轉換為pem格式
并通過以下命令將上述導出的證書轉換成pem格式(不含私鑰)
openssl pkcs12 -in c:\idm.pfx -clcerts -nokeys -out c:\idm.pem
(上述命令就是通過openssl將idm.pfx這個pkcs12格式的證書轉換成pem格式,其中-nokeys為指定如無需導出私鑰,命令中需要根據自己情況制定具體的證書位置)
接著通過命令將私鑰也轉換成pem格式,并且在轉換輸出過程中要求輸入密碼
openssl pkcs12 -in c:\idm.pfx -nocerts -out c:\idm.key.pem
(-nocerts為控制不轉換證書 只轉換私鑰)
最后再通過命令將這個pem格式的私鑰轉換成rsa
打開C盤 可以看到其已經生成一個pem格式的證書以及pem格式的私鑰
最后也要將根證書轉換成pem格式
也就是實現從CER格式轉化為PEM的過程命令如下
openssl.exe x509 -in c:\rootca.cer -out c:\rootca.pem
當然openssl除了可以實現pfx以及Cer向pem格式轉換外, 還支持很多其他格式的轉換,基本參考如下:
PEM--DER/CER(BASE64--DER編碼的轉換)
?????? openssl x509 -outform der -in certificate.pem -out certificate.der
EM--P7B(PEM--PKCS#7)
?????? openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
PEM--PFX(PEM--PKCS#12)
?????? openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
PEM--p12(PEM--PKCS#12)
?????? openssl pkcs12 -export -out Cert.p12 -in Cert.pem -inkey key.pem
CER/DER--PEM(編碼DER--BASE64)
?????? openssl x509 -inform der -in certificate.cer -out certificate.pem
P7B--PEM(PKCS#7--PEM)
?????? openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
P7B--PFX(PKCS#7--PKCS#12)
?????? openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
?????? openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer
PFX/p12--PEM(PKCS#12--PEM)
?????? openssl pkcs12 -in certificate.pfx -out certificate.cer
如無需加密pem中私鑰,可以添加選項-nodes;如無需導出私鑰,可以添加選項-nokeys;
PEM BASE64--X.509文本格式
?????? openssl x509 -in Key.pem -text -out Cert.pem
PFX文件中提取私鑰(.key)
?????? openssl pkcs12 -in mycert.pfx -nocerts -nodes -out mycert.key
PEM--SPC
?????? openssl crl2pkcs7 -nocrl -certfile venus.pem -outform DER -out venus.spc
PEM--PVK(openssl 1.x開始支持)
?????? openssl rsa -in mycert.pem -outform PVK -pvk-strong -out mypvk.pvk
PEM--PVK(對于openssl 1.x之前的版本,可以下載PVK轉換器通過以下命令完成)
?????? pvk -in ca.key -out ca.pvk -nocrypt -topvk
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。