接受来自任何CA的客户端证书

时间:2008-10-04 21:23:39

标签: iis ssl iis-6

我正在设置支持用户使用客户端证书登录。不幸的是,IIS拒绝承认任何未链接到已安装的CA(see this article)的证书。

由于该功能仅为方便用户而实现,因此允许任何客户端证书将非常棒。有没有办法实现这个目标?

我的服务器运行的是Windows Server 2003和IIS 6,但我的IIS 7在本地运行时的行为也没有什么不同。如果IIS 7可以自定义以支持任何客户端证书,我可以改变(因为没有IIS 6的解决方案可用)。

4 个答案:

答案 0 :(得分:2)

我认为通常的方法是向他们颁发证书,然后让你设置IIS以接受你的证书作为root。

答案 1 :(得分:1)

实施此课程:

    public class TrustAllCertificatePolicy : System.Net.ICertificatePolicy
    {
        public TrustAllCertificatePolicy() {}

        public bool CheckValidationResult(ServicePoint sp, X509Certificate cert,WebRequest req, int problem)
        {
            return true;
        }
    }

使用以下代码行进行设置。之后,任何证书,无论是否过期,姓名不匹配等都将被接受。

 System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy();

答案 2 :(得分:0)

我认为您可以通过certmgr命令添加新的 root CA证书

certmgr --add -c -m Trust <CA_cert_DER_fmt>

注意:与UNIX不同,Windows管理所有同时的应用程序的证书,这可能会产生安全隐患,因此请注意

答案 3 :(得分:0)

WCF允许您编写custom X.509 certificate handler。在代码中,您可以进行一些检查,例如将指纹与数据库中的已知值进行比较。