Импорт первого сертификата данных в ColdFusion - PullRequest
3 голосов
/ 26 мая 2011

Я попытался импортировать сертификат из First Data в мою настройку ColdFusion 9, используя keytool следующим образом:

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

Импорт, кажется, работает, однако, когда я получаю доступ к WSDL через любую функцию или тег ColdFusion, он выдает «Исключение ввода-вывода: получено фатальное предупреждение: handshake_failure». Что говорит мне, что он не может получить доступ к сайту с сертификатами, которые у него есть, или не может его найти.

Итак, правильно ли я импортирую сертификат? И если да, то как еще я могу получить доступ к этому WSDL с ColdFusion?

Ответы [ 3 ]

0 голосов
/ 21 декабря 2011

У меня была такая же проблема при интеграции с 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 голосов
/ 08 января 2015

У меня была похожая проблема, и на случай, если кто-то столкнется с той же проблемой, я решил эту проблему самостоятельно. У меня был файл .pem, и это показывало, что он успешно импортирован в хранилище ключей Cacert в ColdFusion, но удаленный API (сервер), на который я пытался попасть, не распознавал сертификат по некоторым причинам. Поэтому я сначала преобразовал сертификат .pem в файл формата PKCS12, используя OpenSSL - эта ссылка помогла: 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">             

Это сделало это для меня. Надеюсь, это кому-нибудь поможет.

0 голосов
/ 08 июля 2011

Рассматривали ли вы использовать файл .crt вместо файла .pem?Я просто использовал

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

И теперь он работает просто отлично.

Надеюсь, это поможет.

...