GMO グローバルサインで、クイック認証 SSL(ワイルドカード)を取得して Nginx に設定する機会がありました。実行したコマンドや参考にしたドキュメントのメモを残しておきます。Amazon EC2 の Amazon Linux2 で動作確認を行っています。
目次
Nginx をインストールする
root ユーザで作業を行います。まず、動作確認用に Nginx をインストールします。
amazon-linux-extras install nginx
秘密鍵 を作成する
OpenSSL がインストールされていることを確認します。Amazon Linux2 にはデフォルトで入っているはずです。
openssl version
Nginx の設定ファイルがあるディレクトリに移動します。
cd /etc/nginx
2048bit の秘密鍵を作成します。秘密鍵のファイル名には、その年の番号などを含め、更新のたびに毎年作り直します。秘密鍵にパスフレーズを設定したほうが秘密鍵の漏洩時に一定のセキュリティを確保できますが、Web サーバーの再起動時にパスフレーズ入力が必要となるため、運用のしやすさを考慮してパスフレーズを未設定にしています。
openssl genrsa -out ./2020.wild.example.com.key 2048
以下のコマンドで秘密鍵の確認ができます。
openssl rsa -text -noout -in ./2020.wild.example.com.key
証明書署名要求(CSR) を作成する
CSR を作成します。
openssl req -new -key ./2020.wild.example.com.key -out ./2020.wild.example.com.csr
入力を求められます。以下例です。今回はワイルドカード証明書なので、FQDN にアスタリスクをつけています。
Country Name (国を示す2文字のISO略語) []:JP
State or Province Name (組織が置かれている都道府県) []:Tokyo
Locality Name (組織が置かれている市区町村) []:Shinjuku-ku
Organization Name (組織の名称) []:My Company Name
Organizational Unit Name (組織での部署名) []:Sales
Common Name (ウェブサーバのFQDN) []:*.example.com
Email Address (入力不要) []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password (入力不要) []:
An optional company name (入力不要) []:
以下のコマンドで CSR を確認できます。
openssl req -text -noout -in ./2020.wild.example.com.csr
参考サイト
[CSR生成] nginx + OpenSSL(新規・更新) | GMOグローバルサイン サポート
サーバ証明書の購入をする
SSLサーバ証明書ご購入|GMOグローバルサイン から証明書を購入します。入力フォームに CSR のファイルの中身を入力する場所があるので、作成した CSR の内容を貼り付けます。
サーバ証明書を Nginx で利用する
サーバ証明書を購入するとメール本文や管理画面から証明書の情報を確認することができます。サーバ証明書のデータ -----BEGIN CERTIFICATE-----
から -----END CERTIFICATE-----
までをコピーし /etc/nginx/2020.ssl.example.com.crt
ファイルに保存します。
続いて、メール本文にある中間CA証明書のデータ -----BEGIN CERTIFICATE-----
から -----END CERTIFICATE-----
までをコピーし /etc/nginx/dvcacert.cer
ファイルに保存します。
2 つのファイルを cat
コマンドで結合します。
cat 2020.wild.example.com.crt dvcacert.cer > 2020.wild.example.com.pem
結合した結果、以下のようになっていれば OK です。
-----BEGIN CERTIFICATE-----
[サーバ証明書]
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
[中間CA証明書]
-----END CERTIFICATE-----
エディタの改行コードの関係で結合後のファイルが -----END CERTIFICATE----------BEGIN CERTIFICATE-----
のようになってしまう場合は以下のコマンドで間に改行をはさみます。
cat 2020.wild.example.com.crt <(echo) dvcacert.cer > 2020.wild.example.com.pem
Nginx の設定ファイルで以下のように設定をします。
server {
listen 443;
server_name ssl.example.com;
ssl on;
ssl_certificate 2020.wild.example.com.pem;
ssl_certificate_key 2020.wild.example.com.key;
}
Nginx のリロードで反映されます。
systemctl reload nginx
Nginx の SSL の推奨設定は以下のサイトのテンプレートを参考にすると良いです。
Mozilla SSL Configuration Generator
参考サイト