【问题标题】:Importing First Data certificate into ColdFusion将 First Data 证书导入 ColdFusion
【发布时间】:2011-09-02 05:38:42
【问题描述】:

我尝试使用 keytool 将证书从 First Data 导入到我的 ColdFusion 9 设置中:

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

导入似乎有效,但是当我通过任何 ColdFusion 函数或标记访问 WSDL 时,它会引发“I/O 异常:收到致命警报:handshake_failure”。这告诉我它无法使用它拥有的证书访问该站点,或者找不到它。

那么,我是否正确导入了证书?如果我是,我还能如何使用 ColdFusion 访问此 WSDL?

【问题讨论】:

  • 导入证书后是否重启了ColdFusion服务器?您也可以使用certman.riaforge.org 协助导入证书
  • 是的,我导入证书后重启了服务器
  • 您可以从托管 wsdl 的站点中对任何内容进行 cfhttp 访问吗?
  • 没有使用 https,它似乎只是一个安全服务器。将证书添加到 Windows 让我可以使用 Internet Explorer 访问该站点,但不能使用 Firefox。
  • 上周我实际上遇到了同样的问题,但无法弄清楚。他们的技术支持虽然很好,但并不是很有帮助。不过,我没有使用 keytool 导入。我将证书导入 Windows 并使用了他们在说明中提到的一些 winhttpcert 东西。也许如果您同时执行这两个步骤,它会起作用吗?

标签: coldfusion wsdl certificate keytool firstdata


【解决方案1】:

您是否考虑过使用 .crt 文件而不是 .pem 文件? 我刚用过

keytool -importcert -keystore C:\Coldfusion9\runtime\jre\lib\security\cacerts -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 文件,这表明它已成功导入 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">             
      

      这是为我做的。我希望它可以帮助某人。

      【讨论】:

        猜你喜欢
        • 2010-10-21
        • 2010-10-15
        • 2017-05-06
        • 1970-01-01
        • 2016-10-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多