我最近遇到了一个问题Windows2003(显然也存在于其他版本过),在那里如果一个SSL/TLS服务器被请求客户的证书的认证和它有超过16KB可信的证书DNs,"Internet Explorer"(或任何其他应用程序的使用schannel.dll)是无法完成SSL handshake.(简而言之,服务器打破了消息成块的2^14字节,因为每RFC2246秒。6.2.1,但频道不是书面的支持。我已经得到确认Microsoft的支持,这是一个缺陷频道,他们正在考虑它固定在一个未来的释放。)

所以我试图找到一种方式容易地分析我值得信赖的证书(I使用Apache作为我的服务器,使所有的人都在PEM format)获得总ASN。1幅长度的DNs(其是他们如何获得发送线在握手),并由此看看如果我太接近极限。我还没有能够找到一种方法来做到这一点,但:OpenSSL asn1parse功能接近,但它似乎并没有提供一种方法来获得。1的顺序对于刚刚发行人名称,这是我所需要的。

任何建议?

有帮助吗?

解决方案

由于ASN。1自我介绍,这是相当容易写一ASN。1的分析器。正如你可能知道,ASN。1数据包含一棵树的价值,每个值的类型标识通过全球分配OID(Object ID)。你可以找到一个免费的。1译码器源代码: http://www.geocities.co.jp/SiliconValley-SanJose/3377/asn1JS.html.它;'s javascript编写的,所以你可以用它直接在你的浏览器。

因为你确切的问题-我会:

  1. 使用提供的分析器,找到另外一个或写我自己
  2. 找到OID的信任DNs(检查的说明或简单的解码证书的使用提供ASN。1译码器页)
  3. 结合两个以上提取的大小信任DNs内部证书。

其他提示

openssl asn1parse会做,但你需要做一些手册分析,以找出其中的发序开始。每RFC5280,它是第4项在TBSCertificate序(潜在的第3如果它是一个v1证书),立即签署后的算法。在下面的例子:

    0:d=0  hl=4 l= 621 cons: SEQUENCE
    4:d=1  hl=4 l= 470 cons:  SEQUENCE
    8:d=2  hl=2 l=   3 cons:   cont [ 0 ]
   10:d=3  hl=2 l=   1 prim:    INTEGER           :02
   13:d=2  hl=2 l=   1 prim:   INTEGER           :02
   16:d=2  hl=2 l=  13 cons:   SEQUENCE
   18:d=3  hl=2 l=   9 prim:    OBJECT            :sha1WithRSAEncryption
   29:d=3  hl=2 l=   0 prim:    NULL
   31:d=2  hl=2 l=  64 cons:   SEQUENCE
   33:d=3  hl=2 l=  11 cons:    SET
   35:d=4  hl=2 l=   9 cons:     SEQUENCE
   37:d=5  hl=2 l=   3 prim:      OBJECT            :countryName
   42:d=5  hl=2 l=   2 prim:      PRINTABLESTRING   :US
   46:d=3  hl=2 l=  26 cons:    SET
   48:d=4  hl=2 l=  24 cons:     SEQUENCE
   50:d=5  hl=2 l=   3 prim:      OBJECT            :organizationName
   55:d=5  hl=2 l=  17 prim:      PRINTABLESTRING   :Test Certificates
   74:d=3  hl=2 l=  21 cons:    SET
   76:d=4  hl=2 l=  19 cons:     SEQUENCE
   78:d=5  hl=2 l=   3 prim:      OBJECT            :commonName
   83:d=5  hl=2 l=  12 prim:      PRINTABLESTRING   :Trust Anchor
   97:d=2  hl=2 l=  30 cons:   SEQUENCE
   99:d=3  hl=2 l=  13 prim:    UTCTIME           :010419145720Z
  114:d=3  hl=2 l=  13 prim:    UTCTIME           :110419145720Z
  129:d=2  hl=2 l=  59 cons:   SEQUENCE

发行人DN开始在偏31和具有一头长的两个值的长度为64,总长度为66字节。这不是那么容易脚本,当然...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top