特定于带有现代 ssl 密码的网络服务器的coldfusion 8:
我在 JDK 1.6.45 上使用了 Coldfusion 8,但在给我的只是红十字而不是图像时遇到了问题,而且 cfhttp 无法使用 ssl 连接到本地网络服务器。
我用 Coldfusion 8 重现的测试脚本是
<CFHTTP URL="https://www.onlineumfragen.com" METHOD="get" ></CFHTTP>
<CFDUMP VAR="#CFHTTP#">
这给了我“I/O 异常:对等体未通过身份验证”的非常普遍的错误。
然后,我尝试将服务器的证书(包括根证书和中间证书)添加到 java 密钥库以及冷融合密钥库,但没有任何帮助。
然后我用
调试了问题
java SSLPoke www.onlineumfragen.com 443
得到了
javax.net.ssl.SSLException: java.lang.RuntimeException: Could not generate DH keypair
和
Caused by: java.security.InvalidAlgorithmParameterException: Prime size must be
multiple of 64, and can only range from 512 to 1024 (inclusive)
at com.sun.crypto.provider.DHKeyPairGenerator.initialize(DashoA13*..)
at java.security.KeyPairGenerator$Delegate.initialize(KeyPairGenerator.java:627)
at com.sun.net.ssl.internal.ssl.DHCrypt.<init>(DHCrypt.java:107)
... 10 more
然后我想到网络服务器(在我的例子中是 apache)有非常现代的 ssl 密码并且非常严格(qualys 得分 a+)并且使用超过 1024 位的强 diffie hellmann 密钥。显然,coldfusion 和 java jdk 1.6.45 无法做到这一点。
odysee 的下一步是考虑为 java 安装一个替代安全提供程序,我决定使用 bouncy castle。
另见http://www.itcsolutions.eu/2011/08/22/how-to-use-bouncy-castle-cryptographic-api-in-netbeans-or-eclipse-for-java-jse-projects/
然后我下载了
bcprov-ext-jdk15on-156.jar
来自http://www.bouncycastle.org/latest_releases.html 并安装在
C:\jdk6_45\jre\lib\ext 或您的 jdk 所在的位置,在冷融合 8 的原始安装中,它将位于 C:\JRun4\jre\lib\ext 下,但我使用位于外部的较新 jdk (1.6.45)冷融合目录。将 bcprov-ext-jdk15on-156.jar 放在 \ext 目录中非常重要(这花了我大约两个小时和一些头发;-)
然后我编辑了文件 C:\jdk6_45\jre\lib\security\java.security (使用写字板而不是 editor.exe!)并为新提供者放入一行。之后列表看起来像
#
# List of providers and their preference orders (see above):
#
security.provider.1=org.bouncycastle.jce.provider.BouncyCastleProvider
security.provider.2=sun.security.provider.Sun
security.provider.3=sun.security.rsa.SunRsaSign
security.provider.4=com.sun.net.ssl.internal.ssl.Provider
security.provider.5=com.sun.crypto.provider.SunJCE
security.provider.6=sun.security.jgss.SunProvider
security.provider.7=com.sun.security.sasl.Provider
security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI
security.provider.9=sun.security.smartcardio.SunPCSC
security.provider.10=sun.security.mscapi.SunMSCAPI
(见位置 1 的新的)
然后完全重启coldfusion服务。
然后就可以了
java SSLPoke www.onlineumfragen.com 443 (or of course your url!)
并享受这种感觉...
而且当然
多么美好的夜晚和多么美好的一天。希望这会(部分或全部)对那里的人有所帮助。如果您有任何问题,请通过 info ...(以上域)给我发邮件。