我正在尝试为需要 ssl + 客户端证书的 Web 应用程序设置开发环境。所以服务器和客户端是一样的,它是我的笔记本电脑。
到目前为止,我使用网上找到的几个不同的教程做了什么:
- 创建了一个自签名的根 CA
- 使用这个根 CA 创建了一个“服务器”证书,并使用这个证书配置 IIS ssl。
- 创建了一个“客户端”证书(仍然使用相同的根证书),具有所有角色
用于创建证书的命令如下所示:
makecert -n "CN=Dev Client" -iv DevCA.pvk -ic DevCA.cer -pe -ss my -sr localmachine -sv DevClient.pvk DevClient.cer
pvk2pfx -pvk DevClient.pvk -spc DevClient.cer -pfx DevClient.pfx
所以客户端和服务器证书都具有相同的根证书。
然后我:
- 在当前用户和本地机器的“受信任的权威存储”中添加了根证书
- 在“当前用户”的“个人存储”中添加了客户端证书 - 在“个人存储”中
添加了服务器证书“本地计算机”
当我检查客户端证书属性时,它正确找到了根证书。
但是现在,问题是它在 IIS 中不起作用。
如果我将客户端证书设置为“必需”,我有一个 HTTP 403.4 Forbidden
如果我将客户端证书设置为“接受”,该站点确实可以工作但没有收到证书
有人知道如何使它起作用吗?