如何从断开连接的网络生成SSL客户端证书?

时间:2008-11-06 21:22:44

标签: authentication ssl https pki client-certificates

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

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

此处的限制是浏览器计算机位于断开连接的网络上,因此我无法像往常那样转到CA的http://caserver/CertSrv网址和request a client cert

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

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

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

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

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

4 个答案:

答案 0 :(得分:1)

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

certreq -new -f filein c:\ certrequest.req

这是filein的例子

[版本] 签名=“$ Windows NT $”

[NewRequest]
主题= “CN = dc1.extranet.frbrikam.com”
EncipherOnly = False
可出口=假 KeyLength = 1024
KeySpec = 1
KeyUsage = 0xA0
MachineKeySet = True
ProviderName =“Microsoft RSA SChannel加密提供程序”
ProviderType = 12
RequestType = CMC

[RequestAttributes] CertificateTemplate = TLSServer

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

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

将输出证书恢复到客户端,然后单击“安装”。

答案 1 :(得分:0)

你听起来好像已经尝试了几件事,所以我猜你已经意识到了这些,但我还是会发布它们,以防万一:Certificate Command Line Tools。但是,如果他们做你想做的事,我不确定。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

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

如果您在访问IIS服务器时从未在IE中获得证书选择弹出窗口,则尤其如此 - 即使您在IE证书库中配置了证书也是如此。这意味着客户端命中服务器,服务器提供了可信证书列表,客户端没有符合列表的证书。因此SSL会话进入Forbidden错误状态。

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