ColdFusion 11 webservice不使用https,适用于http

时间:2016-05-26 16:09:48

标签: web-services coldfusion wsdl iis-8 coldfusion-11

当我尝试在浏览器中访问基于https的webservice .cfc时,我得到HTTP Error 500.0 - Internal Server Error。它在http上运行良好。 .cfm页面没问题。

在ColdFusion 9安装上,相同的web服务可以正常使用https。

如何为ColdFusion 11修复此问题?它似乎是IIS和ColdFusion之间的东西。我该怎么办?

这有效:

http://my.server.com/webservice.cfc?wsdl

这不是:

https://my.server.com/webservice.cfc?wsdl

返回错误:

HTTP Error 500.0 - Internal Server Error
The page cannot be displayed because an internal server error has occurred.

Web服务器是IIS 8,ColdFusion 11

Detailed Error Information:
Module     IsapiModule
Notification       ExecuteRequestHandler
Handler    ISAPI-dll
Error Code     0x00000000
Requested URL      https://my.server.com:443/jakarta/isapi_redirect.dll
Physical Path      D:\ColdFusion11\config\wsconfig\1\isapi_redirect.dll
Logon Method       Anonymous
Logon User     Anonymous
  

(2018-06-30) - 用解决方案更新

阅读后(https://tracker.adobe.com/#/view/CF-4203045)和(http://www.shavedmonkeys.com/index.cfm/coldfusion-blog/deploy-ssl-https-webservice-in-coldfusion/

错误原因
CF 10,11和2016不预先配置对axis2 Web服务的https支持。

解决方案
修改CF的axis2.xml文件以添加https transportreceiver行(默认位置为 {drive letter}:\ColdFusion11\cfusion\wwwroot\WEB-INF

更改此行:

<transportReceiver name="http" class="coldfusion.xml.rpc.CFAxisServletListener"/>

到此:

<transportReceiver name="http" class="coldfusion.xml.rpc.CFAxisServletListener">
  <parameter name="port">80</parameter>
</transportReceiver>


<transportReceiver name="https" class="coldfusion.xml.rpc.CFAxisServletListener">
  <parameter name="port">443</parameter>
</transportReceiver>

1 个答案:

答案 0 :(得分:4)

可能是几件事......

ColdFusion 9只有Axis 1网络服务。 CF11默认使用Axis 2。您可以将其设置为在CF管理员中使用Axis 1,在Application.cfc中,或者在创建Web服务对象时,可以将其设置为使用Axis 1而不是2.这可能会解决问题。

createObject( "webservice", "https://my.server.com/webservice.cfc?wsdl", {wsversion="1"} )

它可能是另一件事,就是证书。有时您需要手动将证书添加到Java证书存储区,否则CF将无法通过SSL进行连接。有一些关于此的文章有一些搜索,但它们都归结为这一点,基本上:http://www.bryansgeekspeak.com/2014/12/coldfusion-11-java-keytool-import-cert.html