2016-04-06 28 views
0

Apache/PHP/Symphony正在我的中間層用於身份驗證和路由。請求通過http發送,然後如果請求通過身份驗證請求的人員被授權,然後通過https調用後端Web服務。後端Web服務通過https使用自簽名證書。我可以直接點擊後端服務,並通過Chrome檢查器查看我的證書信息。當我通過url直接向後端發送請求時,一切正常。當我嘗試去通過中間層,我得到響應是504:如何讓Apache接受由Java的KeyTool製作的自簽名證書

{"code":504,"message":"A network communication error has occurred","error":{"code":77,"message":"SSL: can\u0027t load CA certificate file \/etc\/pki\/tls\/certs\/ca-bundle.crt"}}

我生成的證書:

/usr/local/jboss-eap-6.4/standalone/configuration/.keystore

使用命令:

keytool -genkey -keyalg RSA -alias jboss -keystore .keystore -storepass changeit -validity 9999 -keysize 2048

我也更新了我的standalone.xml以引用th Ë文件通過:

<ssl name="ssl" key-alias="jboss" password="changeit" certificate-key-file="/usr/local/jboss-eap-6.4/standalone/configuration/.keystore" protocol="TLSv1" verify-client="false"/>

我的dev的機器是OSX。

似乎apache或symfony正在尋找/etc/pki/tls/certs/ca-bundle.cert這是我的系統中不存在的文件的證書。在/etc/apache2/httpd.conf中搜索「pki」不會產生任何結果。

如何設置apache/symfony2來信任此證書,還是有其他方法可以更全面地信任此證書?

回答

0

創建CA證書捆綁文件

該系統尋找/etc/pki/tls/certs/ca-bundle.cert這是Linux上的標準路徑,而不是在OSX。我們通過生成文件來解決這個問題。

我使用keytool生成.keystore文件,並使用jboss作爲我的別名。爲了構建ca bundle文件,我們需要它爲pem格式,所以我們需要在我們的export語句中添加-rfc。下面是命令:

cd /usr/local/jboss-eap-6.4/standalone/configuration 
keytool -export -alias jboss -file local-sbx.dev.yourcompany.com.crt -keystore .keystore -rfc 

之後,你有這個文件,你可以貓出來,並驗證該文件有它BEGIN CERTIFICATEEND CERTIFICATE東西。如果是這樣,它的格式正確。

最後,創建目錄結構,移動證書行動象束(其只是一堆附加到每個其他證書的),然後重新啓動Apache:

mkdir -p /etc/pki/tls/certs/ 
sudo cp local-sbx.dev.yourcompany.com.crt /etc/pki/tls/certs/ca-bundle.crt 
sudo apachectl restart 

注:這是一個小問題SSL: can't load CA certificate file /etc/pki/tls/certs/ca-bundle.crt所以如果你仍然有問題,你可能還需要更新你的PHP設置...方向在提供的鏈接。

相關問題