Импорт первого сертификата данных в ColdFusion

#coldfusion #wsdl #certificate #keytool #firstdata

#coldfusion #wsdl #сертификат #keytool #firstdata

Вопрос:

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

 keytool -importcert -keystore MYCF9Dirruntimejrelibsecuritycacerts -trustcacerts -alias firstdata -file FirstData.pem
  

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

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

Комментарии:

1. Вы перезапускали сервер ColdFusion после импорта сертификата? Вы также можете использовать certman.riaforge.org для облегчения импорта сертификатов

2. Да, я перезапустил сервер после импорта сертификата

3. можете ли вы использовать cfhttp для любого содержимого с сайта, на котором размещен wsdl?

4. Ничего, что использует https, похоже, это только защищенный сервер. Добавление сертификата в Windows позволяет мне попасть на сайт с помощью Internet Explorer, но не Firefox.

5. На самом деле у меня была такая же проблема на прошлой неделе, и я не смог ее решить. Их техническая поддержка, хотя и приятная, была не очень полезной. Однако я не импортировал с помощью keytool. Я импортировал сертификат в Windows и использовал какую-то вещь winhttpcert, которую они упомянули в своих инструкциях. Может быть, если вы выполните оба шага, это сработает?

Ответ №1:

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

 keytool -importcert -keystore C:Coldfusion9runtimejrelibsecuritycacerts -trustcacerts -alias myserver -file myserver.crt
  

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

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

Ответ №2:

У меня была такая же проблема, когда я интегрировался с Java. Хотя я не уверен, что вы бы сделали в ColdFusion, но я полагаю, что это может указать вам правильное направление.

Чтобы избежать проблемы, вам нужно будет создать SSLContext и представить его серверу firstdata вручную, прежде чем вы сможете сделать что-либо еще.

В 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);
  

Надеюсь, это вам поможет. Мир!

Ответ №3:

У меня была похожая проблема, и на всякий случай, если кто-то сталкивается с такой же проблемой, вот как я решил свою. У меня был файл .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">             
  

Это сделало это за меня. Я надеюсь, что это кому-то поможет.