越来越ASN。1发串从PEM文件吗?
题
我最近遇到了一个问题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编写的,所以你可以用它直接在你的浏览器。
因为你确切的问题-我会:
- 使用提供的分析器,找到另外一个或写我自己
- 找到OID的信任DNs(检查的说明或简单的解码证书的使用提供ASN。1译码器页)
- 结合两个以上提取的大小信任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字节。这不是那么容易脚本,当然...