ssl - 自签名 SSL 证书 403.7 错误

标签 ssl windows-7 iis-7.5 pki

我已经遇到这个问题大约 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,然后将网站绑定(bind)到 SSL 证书 (server.pfx)

完成所有这些后,我进入网站 https://example.website.name.com我得到 403.7 禁止。

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

最佳答案

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

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

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

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

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

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

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

关于ssl - 自签名 SSL 证书 403.7 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13572472/

相关文章:

amazon-web-services - 如何使用 Elastic Beanstalk 加密负载均衡器和 Web 服务器之间的流量

Node.js https.get via proxy 生成SSL3_GET_RECORD wrong version number错误

asp.net-mvc - 拒绝/终止特定 URL 请求的最佳实践 ASP.Net IIS 7.5

IIS 7 规范 URL 重定向

Asp.net session 越界/混淆

OS X 上的 Python 和 OpenSSL 版本引用问题

scala - Akka HTTP 2.0 使用 SSL (HTTPS)

windows-7 - cx_freeze pyqt4 示例 ("\samples\PyQt4") 不起作用

.net-core - .NET Core 3 是否与 Windows 7 兼容?

visual-studio-2010 - Autoit 不生成从列表中选择项目后调用的事件