有時候會需要看某些 TLS 證書內的欄位。TLS 證書用編輯器打開總是像亂碼,而且指令總是背不起來。於是有了這篇。
如果你也想要測試看看,可以到 Digicert 下載一些 intermediate certificate (又稱為 certificate chain) 來試試看。裡面也有多種格式可供下載。本篇使用 openssl 示範。

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
,詳見下列指令。
openssl s_client -connect stackexchange.com:443 -servername stackexchange.com -showcerts
Leave a Reply