技術ブログ

GMOグローバルサインでSSL証明書を取得しNginxに設定する

2020年11月25日

OpenSSL

GMO グローバルサインで、クイック認証 SSL(ワイルドカード)を取得して Nginx に設定する機会がありました。実行したコマンドや参考にしたドキュメントのメモを残しておきます。Amazon EC2 の Amazon Linux2 で動作確認を行っています。

目次

  1. Nginx をインストールする
  2. 秘密鍵 を作成する
  3. 証明書署名要求(CSR) を作成する
  4. サーバ証明書の購入をする
  5. サーバ証明書を Nginx で利用する

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

参考サイト

[インストール] nginx + OpenSSL(新規・更新)| GMOグローバルサイン サポート

-技術ブログ
-