knowledge

黒い画面は怖くない!簡単!NginxでSSLを設定するお話

Nginx SSL 設定
こんにちは。
お久しぶりです山王です。
今日はnginxでSSL通信を行うための設定を紹介します。

導入環境

  • OS…Linux CentOS 7
  • webサーバー…nginx

今回はさくらインターネットでSureServer企業認証SSLを申し込み
上記のケース以外もやることはほとんど変わらないと思います。

SSL化の手順

1.申請する

https://ssl.sakura.ad.jp/

さくらインターネットにログイン

さくらインターネットにログイン
今回は赤で囲った企業認証SSLで行っていきます。しかしラピッドSSL安いですね~
内容は割愛しますが、順に沿って会社情報などを入力していってください。

CSR(証明書情報)の内容確認

CSR(証明書情報)の内容確認
ここでいったんストップ。これ以降は黒い画面を少し触ったりします。でも大丈夫です。まずはCSRを作成しましょう

2.CSR・秘密鍵を作成

ターミナルやteratermなどでサーバーにログイン
秘密鍵ファイル・証明書ファイルを設置するディレクトリを作成しそこに移動

mkdir /etc/nginx/ssl_certs
cd /etc/nginx/ssl_certs

秘密鍵作成

openssl genrsa -des3 -out (秘密鍵ファイル名) (キー長)
秘密鍵生成時には、必ず2048bitを指定してください。
以下例になります。

openssl genrsa -out example.com.2016.key 2048

CSRの作成

openssl req -new -sha256 -key example.com.2016.key -out example.com.2016.csr

以下弊社例(項目がない箇所は空欄でエンター)
Country Name :JP
State or Province Name:osaka
Locality Name:osaka
Organization Name:UNIONNET Inc.
Organizational Unit Name:
Common Name:unionnet.jp
Email Address:
A challenge password:
An optional company name

作業ディレクトリの中を確認
lsと打つとカレントディレクトリの内容が見れます
example.com.2016.csrができていると思います。

3.証明書申し込み

vi example.com.2016.csr

中身を全部コピーし
さくらインターネットの申し込みページの
CSR(証明書情報)の内容確認ページでペースト
表示された内容で問題なければそのまま申し込み
さくらインターネットよりメールが来るので
証明書ダウンロード用のパスワードを保存しておく
今回は企業認証なので数日後に会社が存在するか認証局から電話が来ます。
確認が取れると証明書が発行されメールが届きます。

証明書をダウンロード

メールに記載されたURLからそれぞれの証明書をダウンロードします
中間証明書のダウンロードですが、ダウンロード先に行くと3つダウンロード先があるのでSureServer for SAKURA [Apache/IIS共通]
をダウンロード今回はPUBCAG3.txtで作成します。
サーバー証明書をダウンロードすると***.cerというファイルがダウンロードされるのでリネームもしくはそのまま使用
今回はexample.cerでいきます

4.証明書のインストール

PUBCAG3.txt、example.cerを/etc/nginx/ssl_certs/にアップロード
ssl_certsに移動

cd /etc/nginx/ssl_certs/

中間証明書とサーバー証明書を連結

cat example.cer PUBCAG3.txt > example.com.2016.pem

カレントディレクトリの中を確認するとexample.com.2016.pemができていると思います。

vi example.com.2016.pem
—–END CERTIFICATE—–
—–BEGIN CERTIFICATE—–

となるように改行を入れます。※僕はこれを忘れていて中間証明書が無きものにされてました・・

5.confファイルを編集

vi /etc/nginx/***.conf/
server {
  listen 443;
  ssl on;
  ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
  ssl_certificate  /etc/nginx/ssl_certs/example.com.2016.pem;
  ssl_certificate_key /etc/nginx/ssl_certs/example.com.2016.key;
}
nginx -t

エラーが無ければ

systemctl restart nginx

SSL通信確認

openssl s_client -connect www.example.com:443 -showcerts

Verify return code: 0 (ok)
になればおk
WEB上でも確認可能です。
https://sstool.cybertrust.ne.jp/support_tool/index01.php

設定確認して問題なければ完了です。

最後に

いかがでしたか?
レンタルサーバーなどに比べると多少めんどくさいですよね
エックスサーバーのドメイン認証SSLなんてほんの数分で終わりますからねw
今回やったの作業は黒い画面多少触りますが難易度はさほど高くないですね。
今後SSL証明書の更新をするために忘れないようにしたいと思います。

  • WEB制作
  • サーバー

この記事を書いた人

やまおう / エンジニア