憑證指紋擷取
讀取 .cer、.crt、.pem、.der、.p7b 憑證,算出 MD5/SHA-1/SHA-256 指紋、匯出 SPKI 公鑰並逐項解析有效期限與擴充
拖拽证书文件到此处,或点击选择
支持 .cer / .crt / .pem / .der 的 X.509 证书,可一次选多个文件
PEM 文本与 DER 二进制都能识别,证书链会逐张列出 · 全程在浏览器本地解析,文件不上传
PEM 文本与 DER 二进制都能识别,证书链会逐张列出 · 全程在浏览器本地解析,文件不上传
工具介紹
拿到一張憑證,最常見的是兩個動作:確認它是不是你要的那一張(比對指紋),以及把公鑰交出去(匯出 PEM)。這兩件事原本一條指令就能做完,但手上沒有 openssl 環境、或者只是想快速看一眼的時候,直接拖檔案更省事。這個工具在瀏覽器裡讀取檔案位元組、自行解析 ASN.1 DER,憑證內容不會傳到任何伺服器。
能讀到什麼
- 三種指紋、四種寫法:MD5、SHA-1、SHA-256 同時給出,可切換小寫無冒號、大寫無冒號、大寫冒號分隔、小寫冒號分隔,對照
openssl x509 -fingerprint與keytool -printcert的輸出不必手動改格式 - PEM 與 DER 都認:不靠副檔名判斷,先按文字尋找
-----BEGIN CERTIFICATE-----,找不到再按 DER 結構切段,所以.cer、.crt、.der混在一起拖進來也能讀 - 多憑證檔案自動拆開:憑證鏈檔案與 PKCS#7(
.p7b)裡的憑證會逐個列出並按檔案順序編號,點擊即可切換,鏈裡最後一個通常就是站台本身那張 - 公鑰匯出:從 SPKI 段直接切出原始 DER 位元組,輸出
BEGIN PUBLIC KEYPEM、每 64 字元換行的 Base64、或單行 Base64 三種,公鑰與憑證指紋互不混淆 - 憑證資訊逐項解析:版本號、序號、簽章演算法、主體與簽發者 DN(按 DER 順序逐個屬性列出)、生效與到期時間(換算為台北時間,同時給出剩餘天數與已過期提示)、公鑰演算法與位數(RSA 取模數實際位長,EC 給出曲線名),以及關鍵擴充的取值
- 擴充解碼:BasicConstraints 的 CA 與 pathLen、KeyUsage 的九個位(附標準英文識別)、ExtendedKeyUsage、SubjectAltName 的 DNS 與 IP 條目、SubjectKeyIdentifier 與 AuthorityKeyIdentifier、CRL 發佈點;無法解讀的擴充給出名稱與位元組數,不假裝看懂
- 指令對照區:把目前憑證的檔名填進範本,直接給出 openssl 與 keytool 的等效指令,本機複核時照抄即可
- 不含私鑰的邊界:
.p12、.pfx、.keystore、.jks是含私鑰的金鑰庫,結構與公開憑證完全不同,工具會明確拒絕而不是硬解
使用情境
- 上線前核對伺服器上的憑證檔案與備份裡的是不是同一張,比對 SHA-256 指紋比看檔名可靠
- 瀏覽器裡看到的憑證疑似被替換,匯出伺服器檔案算一遍指紋,兩邊一致才排除中間人
- 對接方要求提供公鑰用於驗簽,從憑證裡匯出 SPKI,而不是把整張憑證送出去
- 驗證 RS256 簽章前,先用憑證公鑰替換 JWKS 裡的
n與e手動比對 - 看一張憑證能不能替別人簽發(
CA:TRUE加上 keyCertSign),判斷誤用中繼憑證的風險 - 換證季盤點到期時間,剩餘天數直接寫在有效期限那一行
- 收到一個只寫了
.pem的檔案,先確認它到底是憑證、公鑰還是私鑰
指紋格式對照
| 寫法 | 範例(SHA-1 片段) | 誰這樣輸出 |
|---|---|---|
| 大寫冒號分隔 | AA:1B:2C:... | openssl -fingerprint、瀏覽器憑證檢視器 |
| 大寫無冒號 | AA1B2C... | keytool 的 SHA1/MD5 行 |
| 小寫無冒號 | aa1b2c... | 程式裡做比對、寫進設定或工單備註 |
| 小寫冒號分隔 | aa:1b:2c:... | 部分 Windows 憑證匯出與封包擷取工具 |
常見問題
- 指紋是對什麼算的?對整張憑證的 DER 編碼位元組做摘要,不是只對公鑰,也不是對 PEM 文字。同一段 DER 無論包成 PEM 還是保持 DER,指紋都一樣;一旦 PEM 裡的 Base64 被改動過一個字元,指紋必然對不上
- MD5 指紋還能用嗎?作為「兩個檔案是不是同一張」的比對識別足夠,但 MD5 已不能用於抗偽造判斷,正式核驗請看 SHA-256
- 為什麼提示「內容被截斷」?DER 的每個結構都自帶長度宣告,工具據此判斷。如果宣告有 1028 位元組而檔案只有 900 位元組,多半是複製貼上時少了尾部,或者下載中斷;這種憑證 openssl 同樣會報錯
- 年份怎麼還原?X.509 的 UTCTime 只寫兩位年,依 RFC 5280 約定小於 50 記為 20xx、大於等於 50 記為 19xx;GeneralizedTime 寫四位年。帶時區位移的一律換算成台北時間顯示,避免差八小時的誤判
- 匯出的公鑰能直接給別的程式用嗎?能。SPKI 段本身就是完整獨立的 DER 結構,包含演算法識別與公鑰位元串,多數語言與函式庫可直接讀取
BEGIN PUBLIC KEY - 拖進去提示不是憑證?工具會分辨內容類型:
BEGIN PUBLIC KEY是裸公鑰、BEGIN CERTIFICATE才是憑證,兩者結構不同,讀錯類型的檔案不會硬湊出一個結果 - 沒有 https 環境能用嗎?能。優先使用瀏覽器原生 WebCrypto 計算摘要,不可用時自動切到內建的純 JS MD5/SHA-1/SHA-256 實作,本機雙擊開啟網頁也能出結果
- 憑證內容會上傳嗎?不會。檔案用 FileReader 讀進記憶體,ASN.1 解析與摘要計算全在瀏覽器裡完成,頁面不發送任何請求
只想算任意檔案的摘要見檔案 MD5 計算與雜湊計算器;把單行 Base64 公鑰還原成 PEM 或反過來可用 Base64 編解碼;核對有效期限起止時間戳用時間戳轉換;用憑證公鑰驗證簽章的令牌結構見 JWT 解析工具。