2011-05-26 30 views
3

我試着使用keytool爲使從第一數據證書導入到我的ColdFusion 9中的設置:導入第一數據證書於ColdFusion

keytool -importcert -keystore MYCF9Dir\runtime\jre\lib\security\cacerts -trustcacerts -alias firstdata -file FirstData.pem 

進口似乎工作,但是當我訪問WSDL通過任何ColdFusion函數或標記它會拋出「I/O異常:收到致命警報:handshake_failure」。這告訴我它不能使用它擁有的證書或找不到它的網站訪問該網站。

那麼,我是否正確導入證書?如果是,我怎麼才能使用ColdFusion訪問這個WSDL?

+0

您是否在導入證書後重新啓動ColdFusion服務器?您也可以使用http://certman.riaforge.org/協助導入證書 – Antony 2011-05-26 02:54:15

+0

是的,我在導入證書 – DefconRhall 2011-05-26 11:37:11

+0

之後重新啓動了服務器,您是否可以從承載wsdl的網站上cfhttp任何內容? – Antony 2011-05-26 12:08:04

回答

0

您是否考慮過使用.crt文件而不是.pem文件? 我剛剛使用

keytool -importcert -keystore C:\Coldfusion9\runtime\jre\lib\security\cacerts -trustcacerts -alias myserver -file myserver.crt 

現在它工作得很好。

希望這會有所幫助。

0

我在與Java集成時遇到了同樣的問題。雖然我不確定你會在ColdFusion中做什麼,但我想這可以指出你正確的方向。

爲避免此問題,您需要先創建一個SSLContext並將其手動呈現給第一個數據服務器,然後才能進行其他操作。

在Java中,這是我做過什麼:

KeyStore ksjks = KeyStore.getInstance(KeyStore.getDefaultType()); 
ksjks.load(new FileInputStream("/path/to/your/p12/file"),"password".toCharArray()); 

KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509"); 
kmf.init(ksjks, "password".toCharArray()); 

SSLContext sslContext = SSLContext.getInstance("SSLv3"); 
sslContext.init(kmf.getKeyManagers(), null, null); 

SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory(); 

而且你會在你的客戶按如下方式使用此背景下:

URL url = new URL("serverUrl"); 
HttpsURLConnection urlConn = (HttpsURLConnection) url.openConnection(); 
urlConn.setSSLSocketFactory(sslSocketFactory); 

希望幫助你。和平!

0

我有類似的問題,以防萬一有人面臨同樣的問題,這就是我解決我的問題。我有一個.pem文件,這表明它已成功導入到ColdFusion中的Cacert密鑰庫中,但是由於某些原因,我嘗試訪問的遠程API(服務器)無法識別證書。所以我首先使用OpenSSL將.pem證書轉換爲PKCS12格式文件 - 此鏈接幫助:http://cc.in2p3.fr/docenligne/84/en#0.4(位於底部)。然後,我使用CFHTTP CF標籤,如下所示:

 <cfhttp 
     url="https://urlToAPI" 
     method="POST" 
     clientCert="path to the file (.p12)" 
     clientCertPassword="password" 
     result="result">    

這是爲我做的。我希望它能幫助別人。