contemporary workplace with office supplies and computer

如何用 openssl 查看 TLS certificate 內容?

有時候會需要看某些 TLS 證書內的欄位。TLS 證書用編輯器打開總是像亂碼,而且指令總是背不起來。於是有了這篇。

如果你也想要測試看看,可以到 Digicert 下載一些 intermediate certificate (又稱為 certificate chain) 來試試看。裡面也有多種格式可供下載。本篇使用 openssl 示範。

https://www.digicert.com/kb/digicert-root-certificates.htm

der 格式 (.cer)

解析憑證的指令如下。

openssl x509 -inform der -noout -text -in crt.cer

.pem 格式

可直接用文字編輯器打開,但會看不懂。

-----BEGIN CERTIFICATE-----
MIIFyzCCBLOgAwIBAgIQCgWbJfVLPYeUzGYxR3U4ozANBgkqhkiG9w0BAQsFADBh
(...)
p0sARNb+9i1R4Fg5zPNvHs2BbIve0vkwxAy+R4727qYzl3027w9jEFC6HMXRaDc=
-----END CERTIFICATE-----

解析證書的指令如下。

openssl x509 -inform pem -noout -text -in crt.pem

如果格式用錯,造成打開失敗的話會有下列的錯誤訊息。

Could not read certificate from xxx
Unable to load certificate

如何取得證書

可以用 openssl 取得證書。除了在 connect 加上域名之外,也要加在 -servername 裡面。這是為了 SNI extension 的欄位。

openssl s_client -connect stackexchange.com:443 -servername stackexchange.com -showcerts

以上的指令只會印出最後一張證書。如果要把中繼證書也印出來的話。要使用 -showcerts ,詳見下列指令。

openssl s_client -connect stackexchange.com:443 -servername stackexchange.com -showcerts

Posted

in

by

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *