はじめに
こんにちは。kenjiです。
Cent7.3、nginx1.10.2、php-fpm7.1
とインストールをしてきました。
今回はゴール目標であるHTTP2の設定に入っていきます。
SSL証明書が必要になるのですが、SSL証明書は
Let's Encrypt 製のものを利用します。
Let's Encryptについては以下のサイトを参考にお願いします
https://letsencrypt.jp/
概要
Cent7.3、nginx1.10.2、php-fpm7.1の環境にてSSLを有効にします。
Let's Encryptの利用にあたり、独自ドメインが必須となります。
実行環境
Cent7.3
nginx1.10.2
php-fpm7.1
独自ドメイン
インストール方法
インストールをしていくのですが、Let's Encrypt 自体の動作をさせるにあたり、certbotが必要になります。
こちらをまずはインストールしていきます。
certbotインストール
yumにてcertbotをインストールします
(epelリポジトリは前回のphp-fpmインストール時に利用可能になっています。)
1 |
yum install --enablerepo=epel certbot |
certbotにて証明書取得
certbotコマンドが利用可能になったので、certbot経由でSSL証明書を取得します。
※-dに続く部分は利用可能なSSLに利用するドメイン名を入力してください
ここではtestssl.skyarch.netとします。
また、ドメイン名には既にAレコードを設定済みのものとします。
1 2 3 4 |
certbot certonly --webroot --webroot-path /usr/share/nginx/html -d testssl.skyarch.net メールアドレスを聞かれた場合は、利用可能なメールアドレスを入力する。 "Congratulations!"が表示されれば正常終了 |
nginxにssl設定
nginxにSSL設定を実施します。
以下を実行。
※設定するドメインをtestssl.skyarch.netとします。
実際に利用する場合は読み替えて下さい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
mkdir /etc/nginx/ssl openssl dhparam 2048 -out /etc/nginx/ssl/dhparam.pem cat > /etc/nginx/conf.d/ssl.conf << EOF server { listen 443 ssl http2; server_name testssl.skyarch.net; ssl_certificate /etc/letsencrypt/live/testssl.skyarch.net/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/testssl.skyarch.net/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/testssl.skyarch.net/fullchain.pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_session_tickets off; ssl_dhparam /etc/nginx/ssl/dhparam.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; ssl_prefer_server_ciphers on; add_header Strict-Transport-Security max-age=15768000; ssl_stapling on; ssl_stapling_verify on; location / { root /usr/share/nginx/html; index index.html index.htm; location ~ \.php$ { fastcgi_pass localhost:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } EOT |
nginx再起動
nginxのconfを変更しているため、ngixの再起動をする必要がある。
以下のコマンドにてnginxを起動させる
1 2 3 4 5 6 7 8 9 |
構文チェック nginx -t (エラーが無いことを確認) 起動 systemctl restart nginx 起動確認 ps auxfww|grep nginx |
動作確認
以下のサイトから動作確認ができます。
https://tools.keycdn.com/http2-test
自ドメインを入力して「test」をクリック
以下のような画面が出れば、正常に設定できています!
まとめ
いかがでしたでしょうか。
4部に渡り、CentOS7.3、nginx1.10.2、php7.1、SSL設定と実施してきました。
追加でRDSの利用や、mysqlのインストールなどを実施することで、高速かつ安全なwordpress環境の構築も可能になります。
(phpインストール時に既にphp-mysqlをインストール済みです)
CentOS5系で稼働していてリプレースが近い!しかし脆弱性や暗号化が心配、
iOSでアプリ提供しているから、SSL対応を考えないと・・
などなど、ぜひ本件を参考に頂けると嬉しく思います。
より進んだ対応やバーチャルホスト対応、キャッシュ設定、圧縮転送設定なども可能ですので、不明な点あればぜひお気軽にご連絡ください
投稿者プロフィール
-
2013年入社の平成生まれです。
初めて触ったコンピュータはPC9821でダイヤルアップでした。
その時に鯖落ちや人大杉の対応をしてくださる鯖缶になりたいと憧れ、
みなさんのお役に立てればと思っております!
#今では個人所有のパソコン・サーバだけで20台ほどあります…。
サーバー大好き!