ColdFusion 11 网络服务不适用于 https,适用于 http
ColdFusion 11 webservice not working with https, works with http
当我尝试在浏览器中通过 https 访问 web 服务 .cfc 时,我收到 HTTP Error 500.0 - Internal Server Error
。它在 http 上运行良好。 .cfm 页面没有问题。
相同的网络服务在 ColdFusion 9 安装上与 https 一起工作。
如何为 ColdFusion 11 修复此问题?它似乎介于 IIS 和 ColdFusion 之间。我应该尝试什么?
这个有效:
http://my.server.com/webservice.cfc?wsdl
这不是:
https://my.server.com/webservice.cfc?wsdl
returns 错误:
HTTP Error 500.0 - Internal Server Error
The page cannot be displayed because an internal server error has occurred.
网络服务器是 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\isapi_redirect.dll
Logon Method Anonymous
Logon User Anonymous
(2018-06-30) - Update with solution
看完(https://tracker.adobe.com/#/view/CF-4203045) and (http://www.shavedmonkeys.com/index.cfm/coldfusion-blog/deploy-ssl-https-webservice-in-coldfusion/)
错误原因:
CF 10、11 和 2016 没有为 axis2 网络服务预配置 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>
可能是两件事...
ColdFusion 9 只有 Axis 1 网络服务。 CF11 默认使用轴 2。您可以在 CF Administrator 中将其设置为使用 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
当我尝试在浏览器中通过 https 访问 web 服务 .cfc 时,我收到 HTTP Error 500.0 - Internal Server Error
。它在 http 上运行良好。 .cfm 页面没有问题。
相同的网络服务在 ColdFusion 9 安装上与 https 一起工作。
如何为 ColdFusion 11 修复此问题?它似乎介于 IIS 和 ColdFusion 之间。我应该尝试什么?
这个有效:
http://my.server.com/webservice.cfc?wsdl
这不是:
https://my.server.com/webservice.cfc?wsdl
returns 错误:
HTTP Error 500.0 - Internal Server Error
The page cannot be displayed because an internal server error has occurred.
网络服务器是 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\isapi_redirect.dll
Logon Method Anonymous
Logon User Anonymous
(2018-06-30) - Update with solution
看完(https://tracker.adobe.com/#/view/CF-4203045) and (http://www.shavedmonkeys.com/index.cfm/coldfusion-blog/deploy-ssl-https-webservice-in-coldfusion/)
错误原因:
CF 10、11 和 2016 没有为 axis2 网络服务预配置 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>
可能是两件事...
ColdFusion 9 只有 Axis 1 网络服务。 CF11 默认使用轴 2。您可以在 CF Administrator 中将其设置为使用 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