SSLサーバー証明書を申請するときに必要になるCSRファイルの作成方法を詳しく解説します。
- SSLサーバー証明書申請時に必要になるCSRファイルのLinux環境での作成手順がわかります
CSRファイルの作成手順
SSL証明書の発行会社(認証局)や利用している環境によってCSRファイルの作成手順は異なります。
当記事ではLinuxサーバーでのOpensslコマンドを使用してCSRファイルを作成する手順を解説します。
全体的な手順の流れは下記になります。
- 秘密鍵を作成
- 秘密鍵のパスフレーズを解除
- CSRファイルを作成
秘密鍵を作成
そもそもCSRファイルはSSLサーバー証明書を認証局に発行を依頼するために必要なファイルです。
なので先ずは秘密鍵を作成する必要があります。秘密鍵は外部に公開しないファイルです。
その秘密鍵とペアになっている証明書を作成する必要があるので、先に作成した秘密鍵とペアになっているCSRファイルを利用して証明書を申請する流れになります。
rootでログインして下記のコマンドを実行します。
openssl genrsa -aes256 -out yublog.jp.key.tmp 2048 Enter pass phrase for yublog.jp.key.tmp:○○○○ パスワードを入力 Verifying - Enter pass phrase for yublog.jp.key.tmp:○○○○ パスワードを再度入力
秘密鍵に設定するパスフレーズ(パスワード)を入力します。
これは仕様なので必ずパスワードを入力しないと秘密鍵を作成できません。
秘密鍵のパスフレーズ(パスワード)を解除
秘密鍵に設定されているパスフレーズ(パスワード)を解除します。
rootでログインして下記のコマンドを実行します。
openssl rsa -in yublog.jp.key.tmp -out yublog.jp.key Enter pass phrase for yublog.jp.key.tmp:○○○○ パスワードを入力 writing RSA key
↑パスワードを入力します
yublog.jp.key.tmpはパスワードが掛かった秘密鍵のファイル名です。それをパスワード解除した yublog.jp.key として出力しています。
秘密鍵のパスワードは仕様上避けて通れないないので作成時に入力しますが、作成後はパスワードを解除するほうが管理しやすくなります。
CSRファイルの作成
先ほどのパスフレーズ(パスワード)を解除した秘密鍵を指定してCSRファイルを作成します。
openssl req -sha256 -new -key yublog.jp.key -out yublog.jp.csr You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:JP State or Province Name (full name) []:Tokyo Locality Name (eg, city) [Default City]:shibuya Organization Name (eg, company) [Default Company Ltd]:yublog Co., Ltd. Organizational Unit Name (eg, section) []:system Common Name (eg, your name or your server's hostname) []:yublog.jp Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
CSRファイルに各項目の情報を入力します。
CSRファイルの入力項目
次の項目は空欄で大丈夫です。
- Email Address
- challenge password
- optional company name
項目名 | 意味 | 説明 |
---|---|---|
Country Name | 国名 | ブログやサイトを運営している組織の所在国 例:JP |
State or Province Name | 都道府県名 | ブログやサイトを運営している組織の所在の都道府県名 例:Tokyo |
Locality Name | 市区町村名 | ブログやサイトを運営している組織の所在の市区町村名 例:shibuya |
Organization Name | 組織名 | ブログやサイトを運営している組織名 例:yublog Co., Ltd. |
Organizational Unit Name | 部署名 | ブログやサイトを運営している部署名 例:system |
Common Name | コモンネーム | ドメイン名 例:yublog.jp |
※日本国内で証明書を発行する場合、Country Nameは必ずJPになります。
CSRファイルの確認
作成したCSRファイルを確認します。
openssl req -noout -text -in yublog.jp.csr ~省略~ Subject: C=JP, ST=Tokyo, L=shibuya, O=yublog Co., Ltd., OU=system, CN=yublog.jp ~省略~
↑Subjectの部分でCSRファイルに入力した情報を確認できます。
CSRファイル確認ツール
外部ツールを使って確認することもできます。
cat yublog.jp.csr -----BEGIN CERTIFICATE REQUEST----- MIICtDCCAZwCAQAwbzELMAkGA1UEBhMCSlAxDjAMBgNVBAgMBVRva3lvMRAwDgYD VQQHDAdzaGlidXlhMRkwFwYDVQQKDBB5dWJsb2cgQ28uLCBMdGQuMQ8wDQYDVQQL DAZzeXN0ZW0xEjAQBgNVBAMMCXl1YmxvZy5qcDCCASIwDQYJKoZIhvcNAQEBBQAD ggEPADCCAQoCggEBAN94v5iKowg0+vIVBDIMyj4142hhU5jfNw5ooPQ/eE8etW/6 X1VM4Z7I4FMij52+fGRE1bCtI3Qe3TGZmZvteeUTPwcDLgCogNUbzw4XoqczIaJL xHMhHdDzgdxVAXegmShvNJIvp+eTwrfLHJisXpQ0oxebblqhPmlqt+aZES6AjGQx FFW0IrSqeKhDAJCcq2x11JMEX3n9p7so81krOgnNTm4kZNY6cTvMrGxJPHW+q9wC 55HTti5F3ThO9mDg92StVNllP/C2l3Tdx5nrXPyZ7+gdA8TJ+nzljj4TwoJrC/1x 66HDUVR370B/OgZE0C9NVR0uzftEh8K2qU0v+tcCAwEAAaAAMA0GCSqGSIb3DQEB CwUAA4IBAQAA4kNf6NOqzPCAu+c7qnRjz8g8aZ3gg8QBODSkcsTn/SnhKQ9O8CqS 31eu994Iep8qyfqQfJa7hkF5y2ma2fHTXcJL0iMPXyK59iWJBe+W5vJLXV80XRRJ ISkAApqjFxF/kuVLKpq9Df5RCsPNb+hICc6Cjm5lFO1XL1t3MW3v8n6U9drqA+uK +ncxohcbtDJnFeG/mACMHAOqacYSuqOjnheVxXWFN4cYnTvvj89SSsVRzgEuWLx/ hlznuLRbxgUhOIPK5tLp4et2vMVzvZrPtCrFHwzNvgEM4FD7dUcqFK+ApjkTVsyA 3V/61R2ghd1L6AHSxrVHpIYK6KrAN/DI -----END CERTIFICATE REQUEST-----
↑—–BEGIN CERTIFICATE REQUEST—–から—–END CERTIFICATE REQUEST—–までをコピーします。
下記のCSRファイル確認ツールに貼り付けます。
https://tech-unlimited.com/csrcheck.html
- CSRファイルの内容を貼り付けます
- 【CSRの内容確認】ボタンを押します
- CSRファイルの内容が表示されます
秘密鍵とCSRファイルの整合性確認
秘密鍵とCSRファイルの組み合わせに問題がないことを確認します。
diff <(openssl rsa -noout -modulus -in 【秘密鍵ファイル】 | md5sum) <(openssl req -noout -modulus -in 【CSRファイル】 | md5sum)
↑確認用のコマンドです。【秘密鍵ファイル】と【CSRファイル】は実際のファイル名に置き換えてください。
diff <(openssl rsa -noout -modulus -in yublog.jp.key | md5sum) <(openssl req -noout -modulus -in yublog.jp.csr | md5sum)
↑コマンドを実行した結果、何も表示されなければ大丈夫です。
もし何か表示された場合は整合性が取れていません。秘密鍵とCSRファイルの組み合わせに間違いないか確認してください。
日本語CSRの作成方法
通常のCSRファイル作成コマンドだと入力する情報にはアルファベットしか使えませんが、日本語を入力することもできます。日本語でCSRファイルを作成するときに使うコマンドを解説します。
openssl req -new -utf8 -sha256 -key 【秘密鍵ファイル】 -out 【作成したいCSRファイル名】
↑【秘密鍵ファイル】は実際のファイル名に、【作成したいCSRファイル名】は任意のCSRファイル名に置き換えてください。
-utf8 を入力すると日本語入力に対応します
openssl req -new -utf8 -sha256 -key yublog.jp.key -out yublog.jp.tmp.csr You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:JP State or Province Name (full name) []:東京都 Locality Name (eg, city) [Default City]:渋谷区 Organization Name (eg, company) [Default Company Ltd]:ユーブログ Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:yublog.jp Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
次の項目は空欄で大丈夫です。
- Email Address
- challenge password
- optional company name
日本語CSRファイル確認
作成した日本語CSRファイルの中身を確認します。
openssl req -noout -text -in yublog.jp.csr ~省略~ Subject: C=JP, ST=\xE6\x9D\xB1\xE4\xBA\xAC\xE9\x83\xBD, L=\xE6\xB8\x8B\xE8\xB0\xB7\xE5\x8C\xBA, O=\xE3\x83\xA6\xE3\x83\xBC\xE3\x83\x96\xE3\x83\xAD\xE3\x82\xB0, CN=yublog.jp ~省略~
↑日本語で入力した部分はこのような英数字の表示になりますが、この表示で正常です。
CSR確認ツールで日本語CSRファイルを確認
CSRファイルに入力した日本語情報の確認は opensslコマンドでは英数字に置き換わっていて出来ないので、外部のCSRファイル確認ツールを利用します。
CSRファイルを開いて中身を表示させます。
cat yublog.jp.csr -----BEGIN CERTIFICATE REQUEST----- MIICqDCCAZACAQAwYzELMAkGA1UEBhMCSlAxEjAQBgNVBAgMCeadseS6rOmDvTES MBAGA1UEBwwJ5riL6LC35Yy6MRgwFgYDVQQKDA/jg6bjg7zjg5bjg63jgrAxEjAQ BgNVBAMMCXl1YmxvZy5qcDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AN94v5iKowg0+vIVBDIMyj4142hhU5jfNw5ooPQ/eE8etW/6X1VM4Z7I4FMij52+ fGRE1bCtI3Qe3TGZmZvteeUTPwcDLgCogNUbzw4XoqczIaJLxHMhHdDzgdxVAXeg mShvNJIvp+eTwrfLHJisXpQ0oxebblqhPmlqt+aZES6AjGQxFFW0IrSqeKhDAJCc q2x11JMEX3n9p7so81krOgnNTm4kZNY6cTvMrGxJPHW+q9wC55HTti5F3ThO9mDg 92StVNllP/C2l3Tdx5nrXPyZ7+gdA8TJ+nzljj4TwoJrC/1x66HDUVR370B/OgZE 0C9NVR0uzftEh8K2qU0v+tcCAwEAAaAAMA0GCSqGSIb3DQEBCwUAA4IBAQBwGKoS 0bxxZ9IytmRifHXlJLn4FkpEorrEhfH/A9czgy+6MB+eymb9IE2sO3JCpWpIimsZ NHpAuXh1/zgc35rBz6EPP2KrhDaz9O2foH66ozuPX3Lrfm5a0DTrp1CjkEWqsmOl orOSX0SkLbgPW0cD1HBNpPBaja6OMJ+DIoKkPNHwCAvitans7Ve94onojo/A644a bnsXtL4QZPdRf1a0weTgn34iMjCDy8LAP47Pt4oUpzeWvnKq8LoXeEf98rl1R7J5 woymrIgYfYco2lpufleKkw4B8v3cCwtzgiJQo/9HDs1x2hOmjwWB/9ZwTBYmTjGJ FK2iwqTElmNndKMp -----END CERTIFICATE REQUEST-----
↑—–BEGIN CERTIFICATE REQUEST—–から—–END CERTIFICATE REQUEST—–までをコピーします。
CSRファイル確認ツールに貼り付けます。
https://tech-unlimited.com/csrcheck.html
- CSRファイルの内容を貼り付けます
- CSRの内容確認ボタンを押します
- CSRファイルの内容が日本語で表示されています
まとめ
当記事で解説したLinuxのOpensslコマンドを利用したCSRファイルの作成は少々難易度が高いですが、ファイル名の指定さえ間違えなければ当記事のコマンドだけで全て完結します。
この後の流れは作成したCSRファイルを証明書の発行会社(認証局)に提出して証明書の発行を待ちます。証明書発行会社に秘密鍵の送付は不要です。
秘密鍵は使い続けることも可能ですが、安全性を高めるため、SSLサーバー証明書を更新する度に秘密鍵を作り直すこともできます。
その際は当記事の手順を最初から実施して再作成することになります。