IT

CSRファイル作成方法と詳細手順読み終わるまで 5

CSRファイル作成方法 アイキャッチ

SSLサーバー証明書を申請するときに必要になるCSRファイルの作成方法を詳しく解説します。

この記事を見ることで得られるメリット

  • SSLサーバー証明書申請時に必要になるCSRファイルのLinux環境での作成手順がわかります

CSRファイルの作成手順

SSL証明書の発行会社(認証局)や利用している環境によってCSRファイルの作成手順は異なります。

当記事ではLinuxサーバーでのOpensslコマンドを使用してCSRファイルを作成する手順を解説します。

全体的な手順の流れは下記になります。

  1. 秘密鍵を作成
  2. 秘密鍵のパスフレーズを解除
  3. 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
CSRファイルの入力項目
項目名意味説明
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ファイル確認ツール
  1. CSRファイルの内容を貼り付けます
  2. 【CSRの内容確認】ボタンを押します
  3. 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ファイル確認ツール
  1. CSRファイルの内容を貼り付けます
  2. CSRの内容確認ボタンを押します
  3. CSRファイルの内容が日本語で表示されています

まとめ

当記事で解説したLinuxのOpensslコマンドを利用したCSRファイルの作成は少々難易度が高いですが、ファイル名の指定さえ間違えなければ当記事のコマンドだけで全て完結します。

この後の流れは作成したCSRファイルを証明書の発行会社(認証局)に提出して証明書の発行を待ちます。証明書発行会社に秘密鍵の送付は不要です。

秘密鍵は使い続けることも可能ですが、安全性を高めるため、SSLサーバー証明書を更新する度に秘密鍵を作り直すこともできます。

その際は当記事の手順を最初から実施して再作成することになります。