客户端SSL身份验证导致IIS发生403.7错误

时间:2009-10-07 13:41:43

标签: authentication ssl client ssl-certificate

我正在尝试连接到配置为通过SSL客户端证书对用户进行身份验证的Web服务(不受我的控制)。我有一个PKCS12格式的有效证书,包含客户端证书和相关的私钥。证书由Web服务提供商接受的CA颁发。

安装证书并尝试在各种浏览器中访问受限区域会产生以下结果:

  • IE6 - 工作正常,我可以检索WSDL

  • IE7 - 提示输入证书但随后失败并显示服务器中的403.7

  • Firefox3 - 设置为询问,但没有提示并失败并显示403.7

  • Safari 4 - 证书安装在钥匙串中,但没有提示和403.7

此外,尝试以编程方式(Java)访问Web服务失败,并显示相同的403.7错误代码。

奇怪,这在IE6中有效,但在其他浏览器中,我错过了什么?我是否需要在PKCS12文件中包含完整的CA证书链?

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

这确实有效!如果您对-inkey和-in选项感到困惑,它们是来自p12文件的私钥和证书。您可以使用以下命令将p12文件转换为pem格式:

openssl pkcs12 -in file.p12 -clcerts -out file.pem

并仅使用上述命令“-in file.pem”。

此外,您可以将根CA证书导入受信任的证书存储区,以下是如何执行此操作的说明:http://gagravarr.org/writing/openssl-certs/others.shtml#ca-openssl,然后您不必手动复制证书。安装证书后,使用上面的命令而不使用“-CAfile chain.pem”。

答案 1 :(得分:1)

好的,搞定了。答案是肯定的,我确实需要在PKCS12文件中包含所有中间CA证书。我将所有中间CA证书加上文件“chain.pem”中的根CA证书连接起来,然后执行以下命令:

openssl pkcs12 -export -chain -CAfile chain.pem -in cert.pem -inkey key.pem -out cert.p12