2012-11-26 78 views
3

我一直有这个问题约2个星期。我做了很多研究,尝试了不同的方式,但没有快乐。我的计算机上有一个开发网站(Windows 7专业版),使用sql server 2008 r2并使用IIS 7.5。有一个实际的开发服务器运行数据库和Web服务器,但由于我的位置,我不能使用主开发网站。我发出了自签名的可信根证书:自签名SSL证书403.7错误

makecert -r -pe -n "CN=ROOT AUTHORITY" -ss my -sr CurrentUser -a sha1 -sky signature -cy authority -sv ca.pvk ca.cer 

然后我将它安装到本地计算机上的受信任根。之后,我为IIS创建了一个证书。

makecert -pe -n "CN=example.website.name.com" -a sha1 -sky exchange -eku 1.3.6.1.5.5.7.3.1 -ic ca.cer -iv ca.pvk -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12 -sv server.pvk server.cer 

然后,我创建了.PFX文件IIS

pvk2pfx -pvk server.pvk -spc server.cer -pfx server.pfx 

我做以上后。我将证书导入IIS,然后我的网站绑定到SSL证书(server.pfx)

毕竟做到这一点,我去的网站https://example.website.name.com上,我得到403.7禁止的。

有人可以帮我解决这个问题吗?

+0

您的服务器向客户端询问匹配的证书 - 这有时称为“mututal SSL ”。这是你的预期吗?如果是这样,你是否已经在客户端机器上安装了客户端证书? –

+0

我安装了受信任的根证书,服务器证书和个人证书以访问服务器。对不起,我应该补充说。这是我的个人证书:makecert -n“CN = Name”-ic ca.cer -iv ca.pvk -a sha1 -sky exchange -pe -sv name.pvk name.cer创建私钥cert:pvk2pfx -pvk name .pvk -spc name.cer -pfx name.pfx还有一件事要补充,这一切都在一台机器上。 – Zac

回答

1

看看一些陷阱...

服务器问题#1 - 传入的客户端证书有不在服务器上存在1条或多个证书路径。打开证书,转到证书路径(选项卡),并确保每个根证书都在SERVER受信任的根证书颁发机构中。请注意,您不需要在服务器上安装证书,只需在证书(本地计算机)\受信任的根证书颁发机构下的根证书公钥即可。

服务器问题#2(以前提到的解决方案) - 在IIS中,对于该站点,请确保将SSL Settings设置为Accept或Require(永不忽略)。使用Require的好处是,IIS日志会显示你是403错误,因为Accept只会让你的IsPresent == false,但有一个200的http代码。

客户端问题#1 - 与服务器问题#1相同,必须相信这些权限!

客户端问题#2 - 您拥有受信任的根授权人,但不是证书自身的私钥。确保将pfx(私钥)安装到证书存储中,而不是公钥(.cer)。您还可以通过双击证书存储区中的证书并在常规选项卡上看到是否拥有私钥,您应该看到一条消息。

客户问题#3 - 您将证书放在错误的地方。可能最好将证书放在证书(本地计算机)\个人\证书中,而不是(当前用户)。这将使该证书可用于处理运行您的代码并实际需要访问它的帐户。

客户端问题#4 - 右键单击​​证书(在存储中不是.cer文件) - >所有任务 - >管理私钥...并确保运行代码的进程帐户具有“读取“许可。对此的快速测试(但不推荐用于生产用途)是将“Everyone”添加为已读,以查看这是否是您的问题

+0

我试着为你的回应投票,但它说我需要至少15的声望。它确实为我工作。非常感谢。有时PKI可能会很痛苦。 – Zac