CSR(証明書署名要求)
CSR(Certificate Signing Request)は、 CA へ 証明書 の発行を要求するための署名付きデータ。
一般にPKCS #10形式が使用される。
CSRに含まれるもの
Section titled “CSRに含まれるもの”CSRには主に次の情報が含まれる。
- Subject
- 公開鍵
- 要求するX.509拡張
- 対応する秘密鍵で作成したCSR自身の署名
Subject公開鍵拡張要求 ↓申請者の秘密鍵で署名CSR自身の署名により、CSRが改変されていないことと、申請者が公開鍵に対応する秘密鍵を保持していることを確認できる。
CSRは証明書ではない
Section titled “CSRは証明書ではない”CSRにはCAの署名、証明書のシリアル番号、最終的な有効期間などがないため、証明書としては使用できない。
CSR ↓ CAが内容を確認 ↓ CA秘密鍵で署名証明書| CSR | 証明書 |
|---|---|
| 発行を要求するデータ | CAが発行したデータ |
| 申請者の秘密鍵でCSR自身へ署名 | Issuerの秘密鍵で署名 |
| 公開鍵と要求内容を含む | 公開鍵、用途、制約、有効期間などを含む |
| Trust Storeからは信頼されない | 証明書チェーン によって検証される |
Subject
Section titled “Subject”CSRのSubjectは、証明書の対象として要求するDistinguished Nameである。
/C=JP/ST=Tokyo/L=Shinjuku/O=JEC/OU=CC/CN=www.example.comCAはこの値を確認し、必要に応じて変更または拒否できる。CSRに書かれている値が、そのまま証明書になるとは限らない。
CSRはSANなどの X.509拡張 を要求できる。
openssl req -new \ -key server.key \ -out server.csr \ -addext "subjectAltName=DNS:www.example.com"CSRの作成と確認
Section titled “CSRの作成と確認”作成:
openssl req -new \ -key server.key \ -out server.csr内容と自己署名の確認:
openssl req \ -in server.csr \ -text \ -verify \ -noout-verify はCSR自身の署名を検証する。CAによる証明書チェーンの検証ではない。
秘密鍵はCSRに含まれない
Section titled “秘密鍵はCSRに含まれない”CSRはCAへ渡してよいが、秘密鍵は渡さない。
CAへ渡す server.csr手元に保持する server.key- RFC 2986 PKCS #10証明書署名要求の構文。
OpenSSL公式ドキュメント
Section titled “OpenSSL公式ドキュメント”- openssl-req CSRの作成、表示、自己署名の検証、拡張要求。