2011-05-26 57 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">    

这是为我做的。我希望它能帮助别人。