OpenSSLを利用してSSL証明書を作るためのCSRを作成したい。
この疑問に回答します。
関連記事 Nginx クライアント証明書による認証の設定方法(OpenSSL)
SSL証明書を作成するにはCSRを作成する必要があります。
CSRファイルとは何のこと?
CSR(Certificate Signing Request)とは、認証局に対し、SSL証明書への署名を申請するためにりようするファイルのことです。簡単に説明すると「証明書署名要求」と言えば判りやすいと思います。
CSR は「公開鍵」「所有者情報」「申請者の秘密鍵」の署名が記載されており、
認証局は証明書にその所有者情報を署名することで、所有者の存在を証明してSSL証明書を作成します。
秘密鍵の作成
CSRファイルを作成する際に利用する秘密鍵を作成します。
※※ 重要 ※※
秘密鍵を作成する際にパスフレーズを「組み込む」「組み込まない」かで、後々の作業に違いが出てきます。
トラブル防止が大切と考えるのであれば、パスフレーズなしの秘密鍵を作成してください。
セキュリティーが大切と考えるのであれば、パスフレーズありの秘密鍵を作成してください。
パスフレーズなし
秘密鍵の作成 # openssl genrsa 2048 > secret.key Generating RSA private key, 2048 bit long modulus ..............................+++ ................................................+++ e is 65537 (0x10001)
パスフレーズあり
秘密鍵の作成 # openssl genrsa -des3 2048 > secret.key Generating RSA private key, 2048 bit long modulus ....................+++ ......................+++ e is 65537 (0x10001) Enter pass phrase: Verifying - Enter pass phrase:
CSR情報の作成
CSRファイルを作成します。CSRには「所有者情報(ディスティングイッシュネーム)」を入力する必要があります。
CSRファイルの作成 # openssl req -new -key secret.key[先ほど作成した秘密鍵] -out csr.pem[CSRファイル] Country Name (2 letter code) [XX]:JP ← 必須入力 State or Province Name (full name) []:Tokyo ← 必須入力 Locality Name (eg, city) [Default City]:Chuo-ku ← 必須入力 Organization Name (eg, company) [Default Company Ltd]:MyCompany CO.,LTD ← 必須入力 Organizational Unit Name (eg, section) []: ← 未入力 Common Name (eg, your name or your server's hostname) []:mydomain ← 必須入力 Email Address []: ← 未入力 A challenge password []: ← 未入力 An optional company name []: ← 未入力
CSR情報の確認
作成されたCSRファイルの内容を確認します。
CSRファイルの確認 # openssl req -noout -text -in csr.pem Certificate Request: Data: Version: 0 (0x0) Subject: C=JP, ST=Tokyo, L=hogehoge, O=hogehoge CN=hogehoge Subject Public Key Info: Public Key Algorithm: rsaEncryption Public-Key: (2048 bit) Modulus: 00:cb:81:d2:78:d9:fc:1c:63:f4:b6:be:2c:4b:a5: b4:54:4f:ca:e0:83:24:6c:16:dd:4c:61:b8:fd:3a: (中略)
後は、CSRファイルを認証局に提出するだけです。
以上、「OpenSSLを利用したCSR情報の作成方法」という記事でした。