2012-06-13 32 views
6

我有一个网页,其中显示了正在与服务器一起使用的SSL证书的详细信息。我认为的toString()可能是正确的,但它看起来像这样:有没有办法可以打印出X509Certificate?

[0]   Version: 3 
     SerialNumber: 117262955582477610212812061435665386300 
      IssuerDN: CN=localhost 
      Start Date: Wed Jun 13 15:15:05 EST 2012 
      Final Date: Tue Jun 08 15:15:05 EST 2032 
      SubjectDN: CN=localhost 
      Public Key: DSA Public Key 
      y: 6ef96c2ace616280c5453dda2[TRUNCATED BY ME] 

    Signature Algorithm: SHA1withDSA 
      Signature: 302c021450b1557d879a25ccf6b89e7ac6de8dc6 
         0b13df7e0214559cdc810cdb1faa3a645da837cd 
         5efdeb81d62e 
     Extensions: 
         critical(true) 2.5.29.17 value = DER Sequence 
    Tagged [7] IMPLICIT 
     DER Octet String[4] 

,我与它的问题是扩展的模糊的表示。我希望看到“subjectAltNames”和替代名称列表,就像我在查看证书信息时在Web浏览器中看到的内容。

有没有办法做到这一点?我的班级路线上有整个BouncyCastle,所以我希望能在那里找到它,但我似乎无法找到它。

最糟糕的是最糟糕的我知道我可以把时间花在我自己的所有零碎上,但我不知道我是否会错过某个人可能会在那里找到的扩展。

回答

1

用我自己的解决方案回答我自己的问题。

事实证明,这个蹩脚的toString()输出仅在使用Sun的X509Certificate实现时才会发生。在使用BouncyCastle的时候,它看起来好多了(或者更详细一点,至少)。

事实证明,在页面呈现之前我们没有初始化BC的提供者。初始化被推迟,直到我们想用它来真正生成一个证书,现在它已经在webapp启动时完成了,toString()看起来好多了。从公元前提供商

1

几乎所有的“零碎”应该可以从标准X509Certificate类:

你应该能够很容易地格式化任何你想要的,但是你想。您还可以访问并遍历“getIssuerAlternativeNames()”集合。

PS:

下面是关于执行X509Certificate类优良的链接:

下面是从谁在使用充气城堡某人的链接(该解决方案还包括上述链接):

0

尝试PEMReader API

byte[] content = data.getBytes(); 
// create new buffered reader 
PEMReader pemReader = new PEMReader(br, null);  
Object obj = pemReader.readObject(); 

一旦打印OBJ它会给你的toString格式

相关问题