X.509証明書の構造は、ASN.1を使用して定義されます。X.509証明書の全体的な構造定義の抜粋を次に示します。
Certificate ::= SEQUENCE {
tbsCertificate TBSCertificate,
signatureAlgorithm AlgorithmIdentifier,
signatureValue BIT STRING }
TBSCertificate ::= SEQUENCE {
version [0] EXPLICIT Version DEFAULT v1,
serialNumber CertificateSerialNumber,
signature AlgorithmIdentifier,
issuer Name,
validity Validity,
subject Name,
subjectPublicKeyInfo SubjectPublicKeyInfo,
issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,
-- If present, version MUST be v2 or v3
subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,
-- If present, version MUST be v2 or v3
extensions [3] EXPLICIT Extensions OPTIONAL
-- If present, version MUST be v3
}
Certificate
値(含まれている値が入力されている)は、バイナリ形式であるDER形式を使用してエンコードされます。
Base64は、読み取り可能なASCII文字に使用されるバイトセットを減らすことにより、バイナリシーケンスをテキストにエンコードする一般的な方法です(したがって、この表現は長くなります)。
PEM形式の証明書は、証明書のDERエンコーディングのBase64エンコーディングであり、各64文字チャンクの最後に行リターンがあり、区切り文字の間に配置されます。
-----BEGIN CERTIFICATE-----
MIIB2zCCAUSgAwIBAwIBADANBgkqhkiG9w0BAQQFADAYMRYwFAYDVQQDEw1OZXRn
...
-----END CERTIFICATE-----
PEM形式の秘密鍵を使用することもできます。その場合、たとえば、区切り文字は-----BEGIN RSA PRIVATE KEY-----
(および一致するEND
)になります。
有線では、TLS接続中にDERが使用されます。
Windows証明書ストアが内部で何を使用するかは実際には問題ではなく、DERまたはPEM/Base64証明書をインポート/エクスポートできる必要があります。
証明書の「タイプ」は、DER/base64形式よりも幅広いトピックです。SSL/TLSに使用されるほとんどの証明書はX.509証明書です。次に、使用状況プロファイルを取得します。最も一般的なものは、インターネットX.509公開鍵インフラストラクチャ証明書および証明書失効リスト(CRL)プロファイルです。これは、認証局が証明書を発行する方法と、エンティティがリモート証明書を検証する方法を基本的に定義します。
これらの質問にも興味があるかもしれません:
より一般的には、PKIに関する本を入手することが役立つはずです。