3

我已经有这个问题大约 2 周了。我做了很多研究并尝试了不同的方法,但没有任何乐趣。我的计算机(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 禁止。

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

4

1 回答 1

2

看看这些陷阱中的一些......

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

服务器问题 #2(前面提到的解决方案) - 在 IIS 中,对于站点,确保 SSL 设置设置为接受或要求(从不忽略)。使用 Require 的好处是 IIS 日志将向您显示 403 7 错误,因为 Accept 只会让您的 IsPresent == false 但带有 200 http 代码。

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

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

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

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

于 2014-04-13T02:22:50.897 回答