ConoHaでSSL化してみる(CentOS7/nginx)
流れは常時SSL化なので波にのっちゃうしかないでしょ。
まずはポートの確認
target: default icmp-block-inversion: no interfaces: eth0 sources: services: ssh dhcpv6-client http ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
うん、httpsが空いてないね、なので空けます
firewall-cmd --permanent --add-service=https --zone=public firewall-cmd --reload
これだけ、再度確認して、httpsが追加されてればOKです
証明書をインストールする
あくまで個人サイトのレベルなので無償で証明書を作ってくれるLet's Encryptを利用します。
有名なやつですね。
Let's Encryptは証明期間が90日なのですが、90日立つたびに手作業で証明を入れ替えるのはめんどうです。
故にcertbotと呼ばれるものを利用します。
git clone https://github.com/certbot/certbot
gitが入っていないようであれば「yum install git」とでも打ってインストールしちゃってください。
次に証明を作っていきます。
cd ./certbot sudo ./certbot-auto certonly --webroot -w /home/hogehoge/html/ -d hogehoge.com
「/home/hogehoge/html/」はnginxのルートディレクトリ、
hogehoge.comは取得したドメインに書き換えてくださいね。
あとは質問に答えていきます。
メールアドレスの入力とライセンスに同意するかの確認、
また、メールアドレスにメルマガ的な通知がいるかの確認、そして最後にドメインの入力です。
うまく証明書ができあがると下記フォルダにデータが出来上がります。
/etc/letsencrypt/
サーバに設定するときは「/etc/letsencrypt/live/」配下のフォルダにあるシンボリックリンクを使うようです。
シンボリックリンクは常に最新を指し示すようです。
nginxを設定する
nginxの設定は特になにも変えてなければ「/etc/nginx/nginx.conf」にあるかと思います。
そのファイルの中にhttpの設定があると思いますので、
その中にhttpsの設定を書き加えます。
server { ・・・ listen 443 ssl; ssl_certificate /etc/letsencrypt/live/hogehoge.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/hogehoge.com/privkey.pem; ・・・ }
「sudo nginx -s reload」でサービスを再起動してhttpsでアクセスしてみましょう!
どうですか?見れましたか?やったね★
httpのアクセスをhttpsへリダレクトする
httpsを設定したなら積極的に使いたいですよね!
httpアクセスをhttpsへリダイレクトするようにしてみます。
「/etc/nginx/nginx.conf」を以下のように書き換えました。
変更前
server { listen 80 default_server; listen [::]:80 default_server; server_name hogehoge.com; root /home/hogehoge/html; # SSL listen 443 ssl; ssl_certificate /etc/letsencrypt/live/hogehoge.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/hogehoge.com/privkey.pem; ・・・ }
変更後
server { listen 80 default_server; listen [::]:80 default_server; server_name hogehoge.com; root /home/hogehoge/html; return 301 https://$host$request_uri; } server { listen 443 ssl; ssl_certificate /etc/letsencrypt/live/hogehoge.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/hogehoge.com/privkey.pem; server_name hogehoge.com; root /home/hogehoge/html; ・・・ }
証明書を自動更新してみる
cronをつかって定期的に証明書を自動生成するようにしてみます。
0 2 1 * * /home/hogehoge/certbot/certbot-auto renew --post-hook "/bin/systemctl reload nginx"
これで月初めの夜中の2時に動くはずです!たぶん!