自签名SSL证书403.7错误

3
我已经遇到这个问题大约两周了。我进行了很多研究并尝试了不同的方法,但都没有成功。我的计算机(Windows 7 Pro)上有一个开发网站,使用的是sql server 2008 r2和IIS 7.5。实际上有一个开发服务器运行数据库和Web服务器,但由于我的位置,我不能使用主要的开发站点。我发布了一个自签名的受信任的根证书:
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

然后我为IIS创建.pfx文件

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

在我完成上述步骤后,我将证书导入IIS,然后将网站绑定到SSL证书(server.pfx)

完成所有操作后,我访问https://example.website.name.com网站时出现403.7禁止访问的错误。

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


1
您的服务器正在向客户端请求匹配证书,这有时被称为“双向 SSL”。这是否符合您的预期?如果是,请在客户端机器上安装客户端证书。 - Reacher Gilt
我安装了受信任的根证书、服务器证书和一个用于访问服务器的个人证书。抱歉,我应该补充一下。这是我的个人证书:makecert -n "CN=Name" -ic ca.cer -iv ca.pvk -a sha1 -sky exchange -pe -sv name.pvk name.cer 创建私钥证书:pvk2pfx -pvk name.pvk -spc name.cer -pfx name.pfx 还有一件事要补充,这全部都在一台机器上进行。 - Zac
1个回答

2

看看这些陷阱...

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

服务器问题#2(先前提到的解决方案)-在IIS中,对于站点,请确保SSL设置已设置为接受或要求(永远不要忽略)。使用“要求”的好处在于,IIS日志将显示您的403 7错误,而使用“接受”将仅获得IsPresent == false,但具有200个HTTP代码。

客户端问题#1-与服务器问题#1相同,需要信任那些授权机构!

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

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

客户端问题#4-右键单击证书(不是.cer文件)-〉所有任务-〉管理私钥...,确保运行代码的进程帐户具有“读取”权限。对此进行快速测试(但不建议用于生产环境)的方法是添加“Everyone”作为只读,以查看是否存在问题。


我试图点赞你的回复,但它说我需要至少15点声望。这对我没用。非常感谢。 PKI有时可能很烦人。 - Zac

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接