apache作爲客戶端的SSL雙向認證和將p12證書製作爲pem證書的方法

有這樣一種業務場景,我們內網的應用要去訪問互聯網上的服務,因爲應用不能直接對互聯網暴露,這時就需要代理。有的時候,互聯網的服務,比如微信,會要求進行https的雙向認證,即在我們一側也需要證書和密鑰文件。

我們代理服務器使用apache,網上的資料只介紹了apache代理https單向認證的配置方法,因此進行了研究。

經常實驗,發現在httpd.conf中配置,可以實現apache作爲客戶端的SSL雙向認證

SSLProxyEngine on
SSLProxyMachineCertificateFile /apache/abc/client.pem 

其中client.pem 是把證書和私鑰合併到一個文件生成的。

由於微信給的文件是p12類型的,需要轉換爲apache可以識別的pem格式,下面爲具體的步驟

1,從p12證書導出pem證書

openssl pkcs12  -clcerts -nokeys -in  abc.p12  -out abcde.pem,

2,從p12證書導出私鑰

openssl pkcs12  -nocerts -in  abc.p12  -out abcde.pem

3,處理導出的私鑰,我理解是將pkcs#8格式的密鑰文件轉換爲pkcs#1格式,這樣apache才能識別。如果使用pkcs#8格式的密鑰,apache啓動的時候會報(missing or encrypted private key?)。另外如果是nginx,使用pkcs#8格式的密鑰重啓的時候要輸入密碼,而導出成pkcs#1格式則不需要。

openssl rsa -in abcde.pem -out abcdenew.pem 

4,把證書和密鑰合成一個文件cat abcde.pem abcdenew.pem >client.pem

 

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