5

这是我第一次使用 SOAP。我正在尝试使用 cfinvoke 调用 Web 服务,如下所示:

<cfinvoke  
    webservice="https://xyz/infoLookup.php?wsdl" 
    method="infoLookup" 
    returnVariable="info"
    > 

    <cfinvokeargument name="phoneNumber" value="7182973186"/>
    <cfinvokeargument name="userName" value="12345"/>
    <cfinvokeargument name="password" value="password"/> 
</cfinvoke> 

<cfdump var="#info#">

这是来自 WSDL 的消息名称的一部分:

<message name="infoLookupRequest">
  <part name="phoneNumber" type="xsd:string" /> 
  <part name="userName" type="xsd:string" /> 
  <part name="password" type="xsd:string" /> 
</message>

这是来自 WSDL 的 Operation name 的一部分:

  <portType name="vtsInfoLookupPortType">
- <operation name="infoLookup">
  <documentation>Get phone number information.</documentation> 
  <input message="tns:infoLookupRequest" /> 
  <output message="tns:infoLookupResponse" /> 
  </operation>
  </portType>

我收到以下错误:

Unable to read WSDL from URL: https://xyz/infoLookup.php?wsdl.
Error: javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated.

The error occurred in C:\XYZ\A\Soap\soapreq.cfm: line 37

35 : <cfinvokeargument name="phoneNumber" value="7182973186"/>
36 : <cfinvokeargument name="userName" value="12345"/>
37 : <cfinvokeargument name="password" value="password"/> 
38 : </cfinvoke> 
39 :  

我试图在线搜索错误,但无法弄清楚我的代码有什么问题。如果我做错了什么,请告诉我

4

1 回答 1

2

为了将证书安装到 ColdFusion 的 Java 密钥库,您需要执行以下步骤。首先,确保您正在更新 ColdFusion 正在使用的正确 cacerts 文件。如果您在该服务器上安装了多个 JRE。您可以在“系统信息”下从管理员那里验证 JRE ColdFusion 是否正在使用。查找 Java Home 行。

默认信任库是 JRE 的 cacerts 文件。该文件通常位于以下位置:

  • 服务器配置:

    cf_root/runtime/jre/lib/security/cacerts

  • JRun 4 配置上的多服务器/J2EE:

    jrun_root/jre/lib/security/cacerts

  • Sun JDK安装:

    jdk_root/jre/lib/security/cacerts

  • 查阅其他 J2EE 应用程序服务器和 JVM 的文档

为了安装证书,您需要首先获取证书的副本。这可以通过使用 Internet Explorer 来完成。请注意,不同版本的 Internet Explorer 的行为会略有不同,但应该与这些步骤非常相似。例如,早期版本的 IE 可能会将证书保存在与我提到的不同的选项卡下。

  1. 在 Internet Explorer 中浏览到 SSL URL - https://xyz/infoLookup.php?wsdl
  2. 通过单击锁定图标并单击查看证书来查看证书
  3. 然后单击 Install Certificate... 按钮(注意:如果您没有看到此按钮,则必须先关闭 IE 并以管理员身份运行)
  4. 单击 IE 的 Internet 选项,然后单击内容选项卡
  5. 单击证书按钮
  6. 在 Intermediate Certification Authorities 选项卡下找到服务器的证书,选择证书并单击 Export... 按钮
  7. 使用 DER 格式导出

将导出的证书文件复制到您的 ColdFusion 服务器(如果需要,您可以从 IE 中删除证书)

  1. cmd在 ColdFusion 服务器上以管理员身份运行提示
  2. 备份原始 cacerts 文件以防遇到问题

keytool 是 Java SDK 的一部分,可以在以下位置找到:

  • 服务器配置:

    cf_root/运行时/bin/keytool

  • JRun 4 配置上的多服务器/J2EE:

    jrun_root/jre/bin/keytool

  • Sun JDK安装:

    jdk_root/bin/keytool

  • 查阅其他 J2EE 应用程序服务器和 JVM 的文档

要安装证书:

  1. 将目录更改为您的信任库的位置(cacerts 文件所在的位置)
  2. 键入此命令(使用当前 jvm 并使用当前 jvm 的 keytool)"c:\program files\java\jre7\bin\keytool" -import -v -alias your_cert_alias_name -file C:\wherever_you_saved_the_file\cert_file.cer -keystore cacerts -storepass changeit
  3. 在提示“信任此证书?”时键入 yes

注意:*your_cert_alias_name* 我上面使用的可以是任何你想要的
注意:*C:\wherever_you_saved_the_file\cert_file.cer* 将这些值更改为你用于服务器文件夹和证书文件名的任何值

要验证证书:

  1. 键入此命令(使用当前 jvm 并使用当前 jvm 的 keytool)"c:\program files\java\jre7\bin\keytool" -list -v -keystore cacerts -alias your_cert_alias_name -storepass changeit

注意:*your_cert_alias_name* 在此处使用您在上面安装证书时使用的相同名称

重新启动 ColdFusion 服务在您执行此操作之前,它不会读取更新的 cacerts 文件。

如果您愿意,可以从服务器中删除导入的证书文件。

于 2013-10-18T12:40:28.607 回答