5

我有一个独特的情况,我需要在 IE 浏览器和 IIS 6 之间通过 HTTPS 实现客户端证书身份验证。浏览器和 IIS 被防火墙隔开,只允许浏览器在 SSL 端口上连接到 IIS。

我们在与 IIS 相同的网络上有一个内部证书服务器。我已经为 IIS 生成了一个 SSL 服务器证书并已安装。我将 IIS 配置为仅允许 SSL,需要客户端证书。

这里的限制是浏览器机器在断开的网络上,所以我不能像往常一样访问 CA 的http://caserver/CertSrv URL 并请求客户端证书

我想如果有一种方法可以针对根 CA 的公钥生成 CSR,我可以将其复制到 CA 服务器以生成客户端证书。但是,在 IE 或证书 MMC 中似乎没有任何规定可以做到这一点。证书 MMC 似乎需要直接连接到 CA。

以前有没有人解决过这个问题?

仅供参考,所有引用的服务器都运行 Windows Server 2003。

更新:感谢 Jonas Oberschweiber 和 Mark Sutton 指出 CertReq.exe 命令行工具。使用它,我生成了一个 CSR,因此生成了一个成功安装的客户端证书。但是,在访问有问题的 IIS 服务器时,IE 显然没有发送此客户端证书;它仍然会生成 403.7“禁止:需要 SSL 客户端证书”。我怀疑原因是客户端证书的主题字段与运行 IE 的帐户的用户 ID 不匹配,因此可能没有发送不匹配的客户端证书。主题与我用来提交 CSR 并在防火墙另一端生成客户端证书的用户相匹配。

主题字段重要吗?我还需要做些什么来让 IE 发送这个证书吗?

4

4 回答 4

1

在您的客户端上使用 certreq 命令,如下所示

certreq -new -f 文件在 c:\certrequest.req

这是文件的示例

[版本] 签名="$Windows NT$"

[NewRequest]
Subject="CN=dc1.extranet.frbrikam.com" EncipherOnly
= False
Exportable = False
KeyLength = 1024
KeySpec = 1
KeyUsage = 0xA0
MachineKeySet = True
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
ProviderType = 12
RequestType = CMC

[请求属性] CertificateTemplate=TLSServer

将 CertificateTemplate 替换为您的证书模板的名称

获得请求文件后,您需要将其带到 U 盘上的证书颁发机构,并像往常一样使用 Web 注册界面来处理请求文件。

将输出证书带回客户端打开它并单击安装。

于 2008-11-07T13:03:58.473 回答
0

您听起来好像已经尝试了几件事,所以我的猜测是您已经知道这些,但无论如何我都会发布它们,以防万一:Certificate Command Line Tools。但是,我不确定他们是否按照您的意愿行事。

于 2008-11-06T21:25:48.113 回答
0

使用可以看到 CA 服务器的第三台计算机访问您提到的http://caserver/CertSrv站点。选择第三个选项,下载 CA 证书、cert chai 或 CRL。在下一页选择“下载 CA 证书链”,它将下载 p7b 文件。使用闪存驱动器(或电子邮件等)将其传输到另一台计算机,这将允许您将其导入 IE 中受信任的根服务器。

http://technet.microsoft.com/en-us/library/cc787796.aspx

于 2008-11-06T21:32:35.900 回答
0

建议更新,以防万一 - 服务器中受信任的证书列表是什么?

主题 DN 与 Windows 用户名相同对我来说从来都不是问题——尽管我不怎么使用 IIS。但是,在 IIS 的某个地方肯定有一个受信任的证书列表。这个错误对我来说听起来像是服务器的受信任证书列表不包括颁发客户端证书的 CA 或根 CA。

如果您在访问 IIS 服务器时从未在 IE 中看到证书选择弹出窗口,则尤其如此 - 即使您在 IE 证书存储中配置了证书。这意味着客户端访问了服务器,服务器提供了受信任证书的列表,而客户端没有适合该列表的证书。所以 SSL 会话进入了 Forbidden 错误状态。

如果弹出证书选择窗口,并且您选择并发送了证书,则服务器端可能存在其他配置问题..

于 2009-10-12T14:10:21.010 回答