自己証明書を使ってnginxにSSL対応をします。
とても簡単です。
本記事ではSSLと記述しますが、本来であればTLSというのが正しいです。
SSLプロトコルは脆弱性の影響で廃止され、多くのブラウザではすでに支援が終わっています。
今はSSL3.0を基盤+脆弱性に対応したTLSが基本ですが、SSLという名前が既に固着していて混乱を避けるためにあえてSSL使うところがおおいです。
必要なパッケージ確認&インストール
自己証明書発行のためには以下のパッケージが必要です。
openssl、openssl-devel、openssl-libs
インストールされているか確認してみて、なかったらインストールしましょう。
確認
# rpm -qa | grep openssl
openssl-devel-1.0.1e-60.el7_3.1.x86_64
openssl-libs-1.0.1e-60.el7_3.1.x86_64
openssl-1.0.1e-60.el7_3.1.x86_64
インストール
# yum install openssl openssl-devel openssl-libs
自己証明書を発行
# mkdir /etc/nginx/ssl
# openssl req -new -x509 -sha256 -newkey rsa:2048 -days 365 -nodes -out /etc/nginx/ssl/nginx.pem -keyout /etc/nginx/ssl/nginx.key
いろいろ聞かれますが、練習用でやっているのでそのままEnterで大丈夫です。
2つのファイルが作成されますが、それぞれ
nginx.key:暗号化鍵
nginx.pem:自己署名証明書
になります。
重要な情報なので権限設定を厳重にしましょう。
# chown root:root -R /etc/nginx/ssl/
# chmod 600 /etc/nginx/ssl/*
# chmod 700 /etc/nginx/ssl
nginx.conf編集
# vi /etc/nginx/nginx.conf
server {
listen 80;
# httpsにリダイレクト処理
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name _;
# 自己署名証明書
ssl_certificate /etc/nginx/ssl/nginx.pem;
# 暗号化鍵
ssl_certificate_key /etc/nginx/ssl/nginx.key;
# 他の要素は80ポートど同じく設定してください。
}