2008-11-06 48 views
5

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

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

这里的限制是浏览器机器处于断开连接的网络上,所以我不能像往常一样去CA的http://caserver/CertSrv URL和request a client cert

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

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

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

更新:感谢乔纳斯Oberschweiber和马克·萨顿对指出了的certreq.exe命令行工具。使用此功能,我生成了一个CSR,并因此生成了成功安装的客户端证书。但是,当访问相关的IIS服务器时,IE显然不会发送此客户端证书;它仍然会生成一个403.7“禁止:SSL客户端证书是必需的。”我怀疑原因是客户端证书的主题字段与运行IE的帐户的用户标识不匹配,因此可能不会发送不匹配的客户端证书。主题与我用来提交CSR的用户相匹配,并在防火墙的另一端生成客户端证书。

该主题字段是否重要?我还需要做些什么来使IE能够发送这个证书?

回答

0

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

0

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

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

+1

恐怕这不是我所要求的。通过根CA证书链复制是微不足道的。我需要为断开连接的计算机生成客户端证书。 – spoulson 2008-11-07 12:45:13

1

您的客户端上使用的certreq命令如下

的certreq -new -f FILEIN C:\ certrequest.req

这里是和示例FILEIN

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

[NewRequest]
Subject =“CN = dc1.extranet.frbrikam。COM”
EncipherOnly =假
可导出=假
KeyLength = 1024
KeySpec = 1
的KeyUsage = 0XA0
MachineKeySet =真
的ProviderName = “微软RSA SChannel加密提供程序”
ProviderType = 12
RequestType = CMC

[RequestAttributes] CertificateTemplate = TLSServer

使用证书模板

的名称替换CertificateTemplate一旦你的申请文件,你需要把它的证书颁发机构在USB记忆棒,并使用Web注册界面像往常一样来处理请求文件。

取出输出证书回客户端打开它并点击安装。

+0

这工作生成一个CSR,然后生成一个客户端证书。我也可以在断开连接的服务器上安装证书。但是,IE在Tools/Options/Cert/Personal下无法识别它,这大概是因为该证书颁发给生成客户端证书的用户标识,而不是生成CSR的用户标识。 – spoulson 2008-11-07 14:57:32

0

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

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

如果您在IE中打开IIS服务器时从未获得证书选择弹出窗口,即使您在IE证书商店中配置了证书,情况尤其如此。这意味着客户端碰到服务器,服务器给出了一个可信任的证书列表,而客户端没有符合该列表的证书。所以SSL会话进入了Forbidden错误状态。

如果证书选择窗口弹出,你选派的证书,有可能是在服务器端的其他配置问题..