[英]Is there a way to pretty print an X509Certificate?
我有一個網頁,其中顯示服務器正在使用的SSL證書的詳細信息。 我以為toString()可能還可以,但是看起來像這樣:
[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,所以我希望可以在其中找到它,但似乎無法找到它。
最糟糕的是最糟糕的,我知道我可以花些時間自己弄清所有的點點滴滴,但我不知道我是否會錯過有人可能會期望在那里找到的擴展。
用我自己的解決方案回答我自己的問題。
事實證明,這種糟糕的toString()輸出僅在使用Sun的X509Certificate實現時發生。 使用BouncyCastle時,它看起來要好得多(至少更詳細)。
事實證明,在呈現頁面之前,我們沒有初始化BC的提供程序。 初始化被延遲了,直到我們想要使用它來實際生成證書為止,並且現在已經在Webapp啟動時完成了,toString()看起來要好得多。
幾乎所有的“零散”都應該從標准X509Certificate類中獲得:
您應該能夠輕松地格式化所需的任何格式,但是可以根據需要進行格式化。 您還可以通過“ getIssuerAlternativeNames() ”集合進行訪問和迭代。
PS:
這是有關實現X509Certificate類的絕佳鏈接:
這是使用Bouncy Castle的人的鏈接(解決方案還涉及上述鏈接):
從BC Provider嘗試PEMReader API
byte[] content = data.getBytes();
// create new buffered reader
PEMReader pemReader = new PEMReader(br, null);
Object obj = pemReader.readObject();
一旦您打印了obj,它將為您提供toString格式
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.