証明書署名要求

公開鍵基盤のシステムにおいて、証明書署名要求 (: CSR, certificate signing request または certification request) とは公開鍵証明書を申し込むために申請者から認証局へ送られるメッセージのことである。CSRを作成する前に、申請者はまず公開鍵と秘密鍵のペアを生成し、秘密鍵を秘匿する。CSRには (X.509証明書の場合はディレクトリ名などの) 申請者を識別する情報と、申請者によって選択された公開鍵が含まれる。対応する秘密鍵はCSRに含まれないが、要求全体の電子署名に使われる。CSRは認証局によって要求される他の資格証明や身元証明を伴うことがあり、認証局は追加情報を得るために申請者へ連絡を取ることがある。

要求が成功すると、認証局は公開鍵証明書を送り返す。この証明書は認証局の秘密鍵で電子署名されている。

PKCS#10標準はX.509で使うCSRを符号化するためのバイナリ形式を定義している。PKCS#10はASN.1で表現される。以下は OpenSSLを使ってASN.1の構造を調べる方法の例である。

openssl asn1parse -in your_request

CSRはBase64で符号化されたPKCS#10として表現されることがある。その例は以下の通り。

-----BEGIN CERTIFICATE REQUEST----- MIIBnTCCAQYCAQAwXTELMAkGA1UEBhMCU0cxETAPBgNVBAoTCE0yQ3J5cHRvMRIw EAYDVQQDEwlsb2NhbGhvc3QxJzAlBgkqhkiG9w0BCQEWGGFkbWluQHNlcnZlci5l eGFtcGxlLmRvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAr1nYY1Qrll1r uB/FqlCRrr5nvupdIN+3wF7q915tvEQoc74bnu6b8IbbGRMhzdzmvQ4SzFfVEAuM MuTHeybPq5th7YDrTNizKKxOBnqE2KYuX9X22A1Kh49soJJFg6kPb9MUgiZBiMlv tb7K3CHfgw5WagWnLl8Lb+ccvKZZl+8CAwEAAaAAMA0GCSqGSIb3DQEBBAUAA4GB AHpoRp5YS55CZpy+wdigQEwjL/wSluvo+WjtpvP0YoBMJu4VMKeZi405R7o8oEwi PdlrrliKNknFmHKIaCKTLRcU59ScA6ADEIWUzqmUzP5Cs6jrSRo3NKfg1bd09D1K 9rsQkRc9Urv9mRBIsredGnYECNeRaK5R1yzpOowninXC -----END CERTIFICATE REQUEST----- 

上記CSRの (opensslによって解析された) ASN.1構造は以下の通り。

    0:d=0  hl=4 l= 413 cons: SEQUENCE     4:d=1  hl=4 l= 262 cons:  SEQUENCE     8:d=2  hl=2 l=   1 prim:   INTEGER           :00    11:d=2  hl=2 l=  93 cons:   SEQUENCE    13:d=3  hl=2 l=  11 cons:    SET    15:d=4  hl=2 l=   9 cons:     SEQUENCE    17:d=5  hl=2 l=   3 prim:      OBJECT            :countryName    22:d=5  hl=2 l=   2 prim:      PRINTABLESTRING   :SG    26:d=3  hl=2 l=  17 cons:    SET    28:d=4  hl=2 l=  15 cons:     SEQUENCE    30:d=5  hl=2 l=   3 prim:      OBJECT            :organizationName    35:d=5  hl=2 l=   8 prim:      PRINTABLESTRING   :M2Crypto    45:d=3  hl=2 l=  18 cons:    SET    47:d=4  hl=2 l=  16 cons:     SEQUENCE    49:d=5  hl=2 l=   3 prim:      OBJECT            :commonName    54:d=5  hl=2 l=   9 prim:      PRINTABLESTRING   :localhost    65:d=3  hl=2 l=  39 cons:    SET    67:d=4  hl=2 l=  37 cons:     SEQUENCE    69:d=5  hl=2 l=   9 prim:      OBJECT            :emailAddress    80:d=5  hl=2 l=  24 prim:      IA5STRING         :[email protected]   106:d=2  hl=3 l= 159 cons:   SEQUENCE   109:d=3  hl=2 l=  13 cons:    SEQUENCE   111:d=4  hl=2 l=   9 prim:     OBJECT            :rsaEncryption   122:d=4  hl=2 l=   0 prim:     NULL   124:d=3  hl=3 l= 141 prim:    BIT STRING   268:d=2  hl=2 l=   0 cons:   cont [ 0 ]   270:d=1  hl=2 l=  13 cons:  SEQUENCE   272:d=2  hl=2 l=   9 prim:   OBJECT            :md5WithRSAEncryption   283:d=2  hl=2 l=   0 prim:   NULL   285:d=1  hl=3 l= 129 prim:  BIT STRING 

(これはBase64符号化されたCSRをコマンドopenssl asn1parse -inform PEM -iに与えることで生成されたもの。ここでPEMはPrivacy-enhanced mailの略であり、ASN.1のDistinguished Encoding Rules (DER) による符号化をbase64形式で記述したものである)

外部リンク

[編集]
  • CSR Decoder — Base64で符号化されたCSRのデコードと分析に使える。
  • CSR Decoder — 同上 - ただしOpenSSLに基づかない。