先日、弊社が構築しました「民泊大学」という民泊総合情報メディアのSSL証明書の有効期限が近くなってきたので、SSL証明書を更新しました。
SSL証明書を取得するためには、CSRと呼ばれるファイルを作成する必要があります。
CSRとは、”Certificate Signing Request”の略で、中身はテキストファイルなのですが、その中には、公開鍵やコモンネーム(FQDN)、組織名、部署名等が暗号化されて含まれています。

目次

ランダムデータと秘密鍵の作成

秘密鍵を作成するためのランダムデータを作成します。

$ sudo openssl sha1 /usr/bin/* > rand.dat

次に、そのランダムデータを使って、秘密鍵を作成します。

$ openssl genrsa -rand rand.dat -des3 2048 > key.pem.2019
61616 semi-random bytes loaded
Generating RSA private key, 2048 bit long modulus
…………………………….+++
…………………………………+++
e is 65537
Enter pass phrase: ← パスフレーズを入力
Verifying – Enter pass phrase: ← パスフレーズを再入力

CSRの作成

秘密鍵が作成されましたので、次はCSRを作成します。

$ openssl req -new -key key.pem.2019 -out csr.pem.2019
Enter pass phrase for key.pem.2019: ← 秘密鍵を作成する時に入力したパスフレーズを入力
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-ku
Organization Name (eg, company) [Default Company Ltd]:Chapter8, Inc.
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server’s hostname) []:minpaku-univ.com
Email Address []: ← メールアドレスを入力

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

入力する項目を説明します

Country Name:
国名
ISOによる2文字の国名の符号
日本の場合は”JP”となります

State or Province Name:
都道府県名

Locality Name:
市区町村名

Organization Name:
組織名

Organizational Unit Name:
部署名

Common Name:
サーバのFQDN
アクセスさせたいFQDNになります。
ドメインではないので、注意してください。

CSRの内容確認

下記コマンドでCSRの内容が確認できます。

$ openssl req -noout -text -in csr.pem.2019

これでCSRが作成されましたので、SSL証明書の販売事業者からSSL証明書を購入します。
秘密鍵は大事ですので大切に保管してください。

秘密鍵のパスフレーズの外し方

SSL証明書をサーバに設定すると、Webサーバ起動時にSSL証明書のパスフレーズを毎回、聞かれてしまうので、SSL証明書のパスフレーズを削除します。

$ openssl rsa -in ./key.pem.2019 -out ./no-pass-key.pem.2019
Enter pass phrase for ./key.pem.2019: ← 秘密鍵を作成する時に入力したパスフレーズを入力
writing RSA key