x509
好的,以下是一篇整合版的「X.509 與 RSA」指南。
X.509 與 RSA:從憑證到簽章的完整指南
為什麼需要這篇?
當我們談到 HTTPS、代碼簽章或裝置驗證時,幾乎一定會同時遇到兩個名詞:X.509(憑證格式/標準)與 RSA(公開金鑰密碼學演算法)。X.509 定義了憑證該怎麼長、該裝哪些欄位;RSA 則提供簽章與加解密的數學基礎。這篇文章把兩者一次說清楚,並示範它們如何在實務中搭配運作。
什麼是 X.509?
X.509 是一種 公開金鑰基礎建設 (PKI) 的標準,用來定義 數位憑證 (Digital Certificates) 的格式與驗證方式,最常見於:
- 驗證身分(Authentication)
- 建立安全連線(TLS/SSL,像是 HTTPS 網站)
- 數位簽章與資料完整性
它由 ITU-T 在 X.500 目錄服務 的標準中提出,現今網際網路的憑證幾乎都遵循 X.509 v3。
X.509 憑證的結構(重點欄位)
- 版本號 (Version):v3 最常見,支援擴展 (extensions)
- 序號 (Serial Number):由 CA 指派的唯一 ID
- 簽章演算法 (Signature Algorithm):例如
SHA256withRSA - 發行者 (Issuer):簽發憑證的 CA
- 主體 (Subject):憑證持有者資訊(CN、O、C...)
- 有效期限 (Validity):
Not Before/Not After - 主體公鑰資訊 (Subject Public Key Info, SPKI):公鑰與其演算法(RSA、ECDSA...)
- 擴展欄位 (Extensions):
- Key Usage:金鑰用途(簽章、加密、憑證簽發等)
- Extended Key Usage (EKU):更細的用途(
TLS Web Server Authentication、Email Protection) - Subject Alternative Name (SAN):主體替代名稱(多網域
example.com、www.example.com)
- 簽章 (Signature):由發行者(CA)的私鑰對憑證內容做的簽章
常見封裝格式
- PEM (.pem, .crt, .cer):Base64 編碼,含
-----BEGIN CERTIFICATE----- - DER (.der):二進位編碼(Java/某些系統偏好)
- PFX / PKCS#12 (.pfx, .p12):可包含憑證 + 私鑰(常用於 Windows/iOS)