我安装一台证书服务器,安装时候它本身就生成了一个证书(例如A),我想要在客户端检测这个证书(A),而不是检测通过它颁发的证书。
通过iis搭建ssl只能检测到通过证书服务器颁发的用户证书,而不能获取证书A本身。
c#代码如下:
if(Request.IsSecureConnection)
{
    HttpClientCertificate hCert = Request.ClientCertificate;
    if (hCert == null)
    {
           Response.Write("没有客户端证书");
           return;
    }
    X509Certificate2 cert = new X509Certificate2();
    try
    {
           cert.Import(hCert.Certificate);
    }
    catch (Exception e)
    {
           Response.Write(e.Message);
           return;
    }
而通过ActiveXObject可以在IE下检测到证书,但不支持firefox,
我的目的只有一个就是检测客户端特定的证书,有没有什么方法办到,急等答案。有没有哪位大虾知道

解决方案 »

  1.   

    你是要实现客户端的证书验证吗?
    先要导入客户端证书,运行 certmgr.msc, 然后把证书导入到“个人”类别下。在IIS服务器的SSL设置中,选择“客户证书”为“必需”,这样浏览器访问网站时,会提示用户选择提供哪张证书。
      

  2.   

    这种方法试过了,是可以拿到证书,但这样的证书是证书服务器颁发过后的证书,类似图1
    图1:而我想通过web这种方式,检测证书服务器安装时自带的证书是否导入到客户端,这个证书可以给其它使用者颁发证书。类似图2
    图2:如果ssl不行,是否有其它的方法,只要不是ActiveXObject,不开发额外的控件就行。
    我翻遍各种帖子,求解中...,大虾们,给个方法...
      

  3.   

    你说的是不是证书的CA根证书
    客户端证书的签发机构(ca)要加到服务器端的“企业信任”中(通常是自签发的测试证书),或者把ca root加到“受信任的根证书颁发机构”(如果你的证书是从VeriSign,CFCA这样的CA/RA机构购买的话)。你的需求看了好几遍还是没看懂
    对于SSL双向证书验证来说,有两套证书:客户端证书以及客户端证书的颁证机构(ca)、服务器证书以及服务器证书的颁证机构(ca)。
    客户端ca证书是要加到服务器的受信任证书中,表示服务器认可客户端的发证机构。
    而服务器的ca证书要加到客户端的受信任证书中,表示客户端相信服务器的发证机构。
    当然通常情况下这两套证书很可能是同一个root ca签发的。
      

  4.   

    是CA根证书,我现在把这个证书安装在客户端的受信任的根证书颁发机构,然后通过ssl去访问web server,我是想在server这一端得到这个CA证书,并解析出来,目的是做检测,目前得到的都不是CA证书,而是个人证书
      

  5.   

    什么是客户端的下级客户端?
    客户端证书的证书链中包含所有签发这张证书的CA/RA机构的证书信息,比如在你3楼的例子中:
    vspdc-devel.vsdevel.corp.landhightech.com这张证书是由vsdevel-VSPDC-DEVEL-CA签发的。
    你可以用X509Chain这个类来获取证书链里的证书信息。