如何使客户端证书在用于HTTPS的CF10中工作。IIS 7.5
我正在尝试使用ColdFusion10 http请求进行客户端证书验证。目前,我得到的是403.7。我相信ColdFusion没有拿到我的客户证书。下面是我目前安装和设置的步骤 我所做的:如何使客户端证书在用于HTTPS的CF10中工作。IIS 7.5,iis,https,coldfusion,certificate,adobe,Iis,Https,Coldfusion,Certificate,Adobe,我正在尝试使用ColdFusion10 http请求进行客户端证书验证。目前,我得到的是403.7。我相信ColdFusion没有拿到我的客户证书。下面是我目前安装和设置的步骤 我所做的: 创建了自签名SSL证书并将其安装到IIS 7.5上的默认网站 已将SSL证书安装到CF存储中。 测试HTTPS请求,一切正常 遵循此CA和客户端证书指南 已将CA证书安装到服务器和客户端(通过MMC)。已在客户端上安装客户端证书(.pfx)。 在本地浏览器中测试,到目前为止,一切都正常工作 为CF1
- 创建了自签名SSL证书并将其安装到IIS 7.5上的默认网站
- 已将SSL证书安装到CF存储中。
- 测试HTTPS请求,一切正常
- 遵循此CA和客户端证书指南李>
- 已将CA证书安装到服务器和客户端(通过MMC)。已在客户端上安装客户端证书(.pfx)。
- 在本地浏览器中测试,到目前为止,一切都正常工作
- 为CF10创建了另一个客户端证书(.cer、.pvk、.pfx)
- 已将CA证书添加到CF存储中。
- 已测试,HTTPS被403.7拒绝
- 通过CF10下的MMC添加了CA证书、client.pfx和.cer。
- 测试后,再次拒收,仍为403.7
catalina-exec-3, READ: TLSv1 Application Data, length = 5808
Padded plaintext after DECRYPTION: len = 5808
0000: 48 54 54 50 2F 31 2E 31 20 34 30 33 20 46 6F 72 HTTP/1.1 403 For (Example of the HTML error content)
编辑#5:
我可以看到我的客户端证书在请求开始时被添加为可信证书。。。只是没用而已
adding as trusted cert:
Subject: CN=George CF10
Issuer: CN=MyPersonalCA
Algorithm: RSA; Serial number: 0x-431b7d9911f9856cb0adf94d50bb1479
Valid from Fri Apr 01 00:00:00 BST 2016 until Wed Apr 01 00:00:00 BST 2020
编辑#6:
将setClientCert(my.pfx的路径)和setClientCertPassword(客户端证书密码)添加到我的https请求后,我发现以下错误:
Error while trying to get the SSL client certificate:
java.security.UnrecoverableKeyException: Could not decrypt key: Could not decode key from BER. (Invalid encoding: expected tag not there.).
Check that the certificate path and password are correct and the file is in PKCS#12 format.
评论时间过长
您确定已将证书添加到正确的JVM密钥库中吗?如果您在ColdFusion服务器上升级了Java,那么它可能不在默认位置。ColdFusion管理员系统信息页面将在“Java主页”标签下告诉您正在使用的路径
要打开调试信息,请将以下行添加到ColdFusion服务器的jvm.config
文件中,该文件位于该目录下C:\ColdFusion10\cfusion\bin
(默认情况下),然后重新启动ColdFusion服务:
-Djavax.net.ssl=debug
-Djavax.net.debug=all
这将为服务器上的coldfusion out.log
log文件添加更多信息。将这些信息发布到你的问题中,以便进一步分析
不需要使用MMC将证书添加到Windows服务器,也无助于从ColdFusion调用cfhttp
。它使用Java密钥库
编辑1和编辑2的响应
按照中的步骤将.pfx
文件转换为密钥库
编辑3、4和5的响应
如果仍然打开ssl调试开关,则应该在日志文件中看到握手信息。现在您安装了证书,它显示了什么
您是否尝试过使用
cfhttp
标记的clientCert
和clientCertPassword
属性?请注意,它需要PKCS12格式文件的完整路径,该文件包含请求的客户端证书。看
对编辑6的答复
查看此页面-关于您收到的错误消息:无法从BER解码密钥。
摘录自该页面:
客户端证书似乎是一个普通的客户端证书,具有PKCS#12格式的私钥,但来自与服务器格式不同的证书链。因此,我首先让客户端再次检查链是否正确安装在服务器上。不幸的是,这并不容易。我将不告诉你我尝试的细节,但最终证明证书的编码不正确。以下是我将证书转换为工作状态所采取的实际转换步骤:
- 通过MMC导入Windows证书存储中的证书李>
- 在PFX formet中导出私钥、全链、无强加密的证书李>
- 使用OpenSSL将PFX编码的证书转换为PEM:
OpenSSL pkcs12-in-raw.PFX-out intermediate.PEM-nodes
- 将PEM文件中的证书重新排序为以下顺序:>-标识证书
- 中级证书
- 根证书
- 私钥
- 使用OpenSSL将PEM编码的证书转换为PKCS#12:
OpenSSL pkcs12-export-out final.PKCS-in final.PEM
-Djavax.net.ssl=debug
-Djavax.net.debug=all