証明書署名要求

公開鍵基盤のシステムにおいて、証明書署名要求 () とは公開鍵証明書を申し込むために申請者から認証局へ送られるメッセージのことである。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         :admin@server.example.dom
  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に基づかない。

公開鍵基盤