1. 运行Internet服务管理器。
  2. 选择默认Web站点,选定任意一个虚拟目录或站点下的个html、htm或asp文件。按右键,点击属性。 
  3. 选择文件安全性页,点击安全通讯选项的编辑按钮。 
  4. 选择访问此资源时需要安全通道复选框。它的3个选项如下: 
    a) 不接受客户证书 
    选择此项系统不会弹出客户身份验证对话框,用户没有证书也可以访问。 
    b) 接受证书 
    选择此项系统会弹出客户身份验证对话框,用户选择提交或不提交证书都可以访问。 
    c) 需要客户证书 
    选择此项系统会弹出客户身份验证对话框,并且用户必须提交有效的客户端证书,否则就不能访问相应的文件或目录。 
  默认设置为不接受客户证书。 
  5. 点击确定。 
  6. 选定步骤2中所选取的文件,按右键,点击浏览。将会新开一个浏览器窗口,系统页面会提示使用https以启用SSL。请将URL中的http开头部分改成https,然后刷新该页。如果该页能正确显示则表示服务器证书已经启用了。

解决方案 »

  1.   

    see:
    http://office.microsoft.com/china/assistance/2002/articles/oTellDigitalCertifTrustworthy.aspx
      

  2.   

    目前CA证书申请与管理统一由CA办公室来处理吧
      

  3.   

    ceocio(MS Community Star) :上帝,我要的是程序代码。!!!!!~~
    ===============================================
    see:
    http://office.microsoft.com/china/assistance/2002/articles/oTellDigitalCertifTrustworthy.aspx
      

  4.   

    需要有相应的客户端证书链.===========================================    
         X.509证书结构简介是用来描述数据结构及其编码的规则集,它广泛用于RFC(Request For Comments)文本中的数据结构的描述。并对证书结构的公钥算法,公钥值进行了例证。 
         
         X.509证书结构简介及实例
         
         一. ASN1(Abstract Syntax Notation One)简介
           ASN1(Abstract Syntax Notation One),抽象语法符号)是用来描述数据结构及其编码的规则集,它广泛用于RFC(Request For Comments)文本中的数据结构的描述。X.509证书结构(RFC 2459)就是采用ASN1描述和编码的。因此首先对ASN1的编码规则做一简介。
           在ASN1编码中,数据类型包括简单类型和结构类型。简单类型是不能再分解类型,如整型(INTERGER)、比特串(BIT STRING)、字节串(OCTET STRING)、对象标示符(OBJECT IDENTIFIER)、日期型(UTCTime)等。结构类型是由简单类型和结构类型组合而成的,如顺序类型(SEQUENCE, SEQUENCE OF)、选择类型(CHOICE)、集合类型(SET)等。顺序类型的值由按给定顺序成员数据值组成;选择类型的值由多个成员数据类型中的某一个值构成;集合数据类型由成员数据类型的一个或多个值构成。每一种类型都有一个整数标记(TAG)来标识该类型。常用类型的TAG值如下:
         
         Table 1.1: Tags of class UNIVERSAL
         
         标记(TAG)  对应类型
         [UNIVERSAL 1] BOOLEAN
         [UNIVERSAL 2] INTEGER
         [UNIVERSAL 3] BIT STRING
         [UNIVERSAL 4] OCTET STRING
         [UNIVERSAL 5] NULL
         [UNIVERSAL 6] OBJECT IDENTIFIER
         [UNIVERSAL 8] EXTERNAL, INSTANCE OF
         [UNIVERSAL 12] UTF8String
         [UNIVERSAL 13] RELATIVE-OID
         [UNIVERSAL 16] SEQUENCE, SEQUENCE OF
         [UNIVERSAL 17] SET, SET OF
         [UNIVERSAL 18] NumericString
         [UNIVERSAL 19] PrintableString
         [UNIVERSAL 20] TeletexString, T61String
         [UNIVERSAL 21] VideotexString
         [UNIVERSAL 22] IA5String
         [UNIVERSAL 23] UTCTime
         [UNIVERSAL 24] GeneralizedTime
         [UNIVERSAL 25] GraphicString
         [UNIVERSAL 26] VisibleString, ISO646String
         [UNIVERSAL 27] GeneralString
         [UNIVERSAL 28] UniversalString
         [UNIVERSAL 29] CHARACTER STRING
         [UNIVERSAL 30] BMPString
         [UNIVERSAL 31]... reserved for future use
         
           不论是简单类型还是结构类型的值其编码都是由四个部分构成:类型标识字段,用来标识该值的类型;长度字段,用来标识该值所占的字节数;值字段;结束标示字段。
           在类型标识字段中,使用类型的TAG来标识该类型,在证书中使用一个字节来表示。Bit8-bit7 用来标示 TAG 类型,bit6 标示是否为结构类型(1 位结构类型),bit5-bit1是类型的TAG值。如 SEQUENCE 类型,其TAG类型位UNIVERSAL(00),属于结构类型(1),TAG值为16(10000) 所以其类型标示字段值为(00110000),即为0x30。
         长度字段,有两种编码格式。若长度值小于等于127,则用一个字节表示,bit8 = 0, bit7-bit1 存放长度值;若长度值大于127,则用多个字节表示,第一个字节存放长度字段所占的字节数(<=127),并且bit8 = 1,其余字节存放长度值。如果长度值不定用一个字节(0x80)表示。
           值字段,存放数据值,具体编码随值的数据类型不同而不同。
           结束标示字段,两个字节(0x0000),只有在长度值为不定时才会出现。
         
         二. X.509证书结构 
         Certificate ::= SEQUENCE {
         tbsCertificate TBSCertificate, --证书主体
         signatureAlgorithm AlgorithmIdentifier, --证书签名算法标识
         signatureValue BIT STRING --证书签名算法值
         }
         
         TBSCertificate ::= SEQUENCE {
         version [0] EXPLICIT Version DEFAULT v1, --证书版本号
         serialNumber CertificateSerialNumber, --证书序列号,对同一CA所颁发的证书,序列号唯一标识证书
         signature AlgorithmIdentifier, --证书签名算法标识
         issuer Name, --证书发行者名称
         validity Validity, --证书有效期
         subject Name, --证书主体名称
         subjectPublicKeyInfo SubjectPublicKeyInfo, --证书公钥
         issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL, -- 证书发
         行者ID(可选),只在证书版本2、3中才有
         subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL, --证书主体ID(可选),只在证书版本2、3中才有
         extensions [3] EXPLICIT Extensions OPTIONAL --证书扩展段(可选),只在证书版本2、3中才有
         }
         
         Version ::= INTEGER { v1(0), v2(1), v3(2) }
         
         CertificateSerialNumber ::= INTEGER
         
         Validity ::= SEQUENCE {
         notBefore Time, -- 证书有效期起始时间
         notAfter Time } -- 证书有效期终止时间
         
         Time ::= CHOICE {
         utcTime UTCTime,
         generalTime GeneralizedTime }
         
         UniqueIdentifier ::= BIT STRING
         
         SubjectPublicKeyInfo ::= SEQUENCE {
         algorithm AlgorithmIdentifier, -- 公钥算法
         subjectPublicKey BIT STRING } -- 公钥值
         
         Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension
         
         Extension ::= SEQUENCE {
         extnID OBJECT IDENTIFIER,
         critical BOOLEAN DEFAULT FALSE,
         extnValue OCTET STRING }
      

  5.   

    构的描述。并对证书结构的公钥算法,公钥值进行了例证。 
         
         X.509证书结构简介及实例
         
         一. ASN1(Abstract Syntax Notation One)简介
           ASN1(Abstract Syntax Notation One),抽象语法符号)是用来描述数据结构及其编码的规则集,它广泛用于RFC(Request For Comments)文本中的数据结构的描述。X.509证书结构(RFC 2459)就是采用ASN1描述和编码的。因此首先对ASN1的编码规则做一简介。
           在ASN1编码中,数据类型包括简单类型和结构类型。简单类型是不能再分解类型,如整型(INTERGER)、比特串(BIT STRING)、字节串(OCTET STRING)、对象标示符(OBJECT IDENTIFIER)、日期型(UTCTime)等。结构类型是由简单类型和结构类型组合而成的,如顺序类型(SEQUENCE, SEQUENCE OF)、选择类型(CHOICE)、集合类型(SET)等。顺序类型的值由按给定顺序成员数据值组成;选择类型的值由多个成员数据类型中的某一个值构成;集合数据类型由成员数据类型的一个或多个值构成。每一种类型都有一个整数标记(TAG)来标识该类型。常用类型的TAG值如下:
         
         Table 1.1: Tags of class UNIVERSAL
         
         标记(TAG)  对应类型
         [UNIVERSAL 1] BOOLEAN
         [UNIVERSAL 2] INTEGER
         [UNIVERSAL 3] BIT STRING
         [UNIVERSAL 4] OCTET STRING
         [UNIVERSAL 5] NULL
         [UNIVERSAL 6] OBJECT IDENTIFIER
         [UNIVERSAL 8] EXTERNAL, INSTANCE OF
         [UNIVERSAL 12] UTF8String
         [UNIVERSAL 13] RELATIVE-OID
         [UNIVERSAL 16] SEQUENCE, SEQUENCE OF
         [UNIVERSAL 17] SET, SET OF
         [UNIVERSAL 18] NumericString
         [UNIVERSAL 19] PrintableString
         [UNIVERSAL 20] TeletexString, T61String
         [UNIVERSAL 21] VideotexString
         [UNIVERSAL 22] IA5String
         [UNIVERSAL 23] UTCTime
         [UNIVERSAL 24] GeneralizedTime
         [UNIVERSAL 25] GraphicString
         [UNIVERSAL 26] VisibleString, ISO646String
         [UNIVERSAL 27] GeneralString
         [UNIVERSAL 28] UniversalString
         [UNIVERSAL 29] CHARACTER STRING
         [UNIVERSAL 30] BMPString
         [UNIVERSAL 31]... reserved for future use
         
           不论是简单类型还是结构类型的值其编码都是由四个部分构成:类型标识字段,用来标识该值的类型;长度字段,用来标识该值所占的字节数;值字段;结束标示字段。
           在类型标识字段中,使用类型的TAG来标识该类型,在证书中使用一个字节来表示。Bit8-bit7 用来标示 TAG 类型,bit6 标示是否为结构类型(1 位结构类型),bit5-bit1是类型的TAG值。如 SEQUENCE 类型,其TAG类型位UNIVERSAL(00),属于结构类型(1),TAG值为16(10000) 所以其类型标示字段值为(00110000),即为0x30。
         长度字段,有两种编码格式。若长度值小于等于127,则用一个字节表示,bit8 = 0, bit7-bit1 存放长度值;若长度值大于127,则用多个字节表示,第一个字节存放长度字段所占的字节数(<=127),并且bit8 = 1,其余字节存放长度值。如果长度值不定用一个字节(0x80)表示。
           值字段,存放数据值,具体编码随值的数据类型不同而不同。
           结束标示字段,两个字节(0x0000),只有在长度值为不定时才会出现。
         
         二. X.509证书结构 
         Certificate ::= SEQUENCE {
         tbsCertificate TBSCertificate, --证书主体
         signatureAlgorithm AlgorithmIdentifier, --证书签名算法标识
         signatureValue BIT STRING --证书签名算法值
         }
         
         TBSCertificate ::= SEQUENCE {
         version [0] EXPLICIT Version DEFAULT v1, --证书版本号
         serialNumber CertificateSerialNumber, --证书序列号,对同一CA所颁发的证书,序列号唯一标识证书
         signature AlgorithmIdentifier, --证书签名算法标识
         issuer Name, --证书发行者名称
         validity Validity, --证书有效期
         subject Name, --证书主体名称
         subjectPublicKeyInfo SubjectPublicKeyInfo, --证书公钥
         issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL, -- 证书发
         行者ID(可选),只在证书版本2、3中才有
         subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL, --证书主体ID(可选),只在证书版本2、3中才有
         extensions [3] EXPLICIT Extensions OPTIONAL --证书扩展段(可选),只在证书版本2、3中才有
         }
         
         Version ::= INTEGER { v1(0), v2(1), v3(2) }
         
         CertificateSerialNumber ::= INTEGER
         
         Validity ::= SEQUENCE {
         notBefore Time, -- 证书有效期起始时间
         notAfter Time } -- 证书有效期终止时间
         
         Time ::= CHOICE {
         utcTime UTCTime,
         generalTime GeneralizedTime }
         
         UniqueIdentifier ::= BIT STRING
         
         SubjectPublicKeyInfo ::= SEQUENCE {
         algorithm AlgorithmIdentifier, -- 公钥算法
         subjectPublicKey BIT STRING } -- 公钥值
         
         Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension
         
         Extension ::= SEQUENCE {
         extnID OBJECT IDENTIFIER,
         critical BOOLEAN DEFAULT FALSE,
         extnValue OCTET STRING }
         
      

  6.   

    vb、VC等程序设计语言,编写程序可以考虑调用微软的安全API,这个API是一组,有一批函数,我也在找它们的使用方法。对PHP、ASP等服务端脚本开发的WEB应用,没必要自己写代码,在服务端验证证书时,配置WEB服务器支持SSL就可以验证客户端证书,在客户端验证服务器证书是由浏览器内部进行的。
      

  7.   

    用java实现行不?
    java2中的java.security,cert.Certificate类和JSSE(jdk14包括了)中的javax.security.cert.Certificate类有个 pubilc abstract void verify(PublicKey pk) or public abstract void verify(PublicKey pk, String provider)可以实现:)
      

  8.   

    现在比较通用的是X509Certificate证书,具体为java.security.certi.X509Certificate,checkValidity()和checkValidity(DATE d)检查指定日期是否在证书有效期内,还有好多函数的,可以自己查查看,有了进展通知我,我正需要这方面资料那:)
      

  9.   

    看来要用到java之类的了,呵呵
      

  10.   

    验证网站证书,有两个途径:
    1. 通过CRL,你需要下载CA(该网站证书的发证机构)所发布的CRL,安装后IE会自己判断(透明处理,无须用户干预)
    2. 通过OCSP验证,这个需要CA开通OCSP(在线证书状态协议)服务虽然我就是做CA的,但还是没明白你具体想要的是什么,能否具体的说说.
      

  11.   

    java的 要不要?那是我以前的一个测试文档里的 原理上可以绕过ocsp,因为不知道具体服务端想干什么和一些乱七八糟的东西,所以我逃避了一下
    delphi的也可以,但是我可能需要修改一下