我正在设置支持用户使用客户端证书登录。不幸的是,IIS拒绝承认任何未链接到已安装的CA(see this article)的证书。
由于该功能仅为方便用户而实现,因此允许任何客户端证书将非常棒。有没有办法实现这个目标?
我的服务器运行的是Windows Server 2003和IIS 6,但我的IIS 7在本地运行时的行为也没有什么不同。如果IIS 7可以自定义以支持任何客户端证书,我可以改变(因为没有IIS 6的解决方案可用)。
答案 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。在代码中,您可以进行一些检查,例如将指纹与数据库中的已知值进行比较。