【Nginx】HTTPSの設定とか

前作ってた環境をHTTPSにしたよ。

certbot コマンド で Let’s encryptの証明書を発行しNginxに適用していきます。

certbot

■インストール
sudo curl https://dl.eff.org/certbot-auto -o /usr/bin/certbot-auto
■権限変更
chmod 700 /usr/bin/certbot-auto 
■確認
certbot-auto --help
■Web Root を確認

nginxの設定ファイルの中身を確認します。デフォルトのままなら以下のファイルでいいはず。

less /etc/nginx/sites-enabled/default

今回は「/var/www/html」をWebRootと想定します。ありがちですねw

証明書の発行

sudo /usr/bin/certbot-auto certonly --webroot -w /var/www/html -d test.com --email test@test.com

certonly 証明書の取得のみ
–webroot Webサーバーを使用して証明書作製をする
-w WebRoot
-d ドメイン
–email メールアドレス

※途中で足りないパッケージがあると勝手にインストールされます。


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y

 
同意して作製が成功すると以下の場所に証明書が作製されているはずです。
/etc/letsencrypt/live/ドメイン名/

privkey.pem 秘密鍵
cert.pem 証明書
chain.pem 中間証明書
fullchain.pem 証明書と中間証明書を連結したファイル

nginxの設定ファイルを編集して証明書を設定します。

証明書の設定

sudo vi /etc/nginx/sites-enabled/default 

server {

        # SSL configuration
        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;

        # SSL Certificate
        ssl_certificate     /etc/letsencrypt/live/test.net/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/test.net/privkey.pem;

}
■設定ファイルを再読み込み
service nginx reload
■ブラウザでアクセスして確認

https://ドメイン名

注意事項
AWSのセキュリティで443を許可するのを忘れないでください。私は忘れましたw

証明書の更新

■自動更新の設定

cronで証明書を自動更新されるようにしましょう。

crontab -e

0 2 1 * * /usr/bin/certbot-auto renew && /bin/systemctl reload nginx

上記設定で毎月1日の2時に更新されると思います。
※crontab -eは危ないので使わないほうがいいです。今回はめんどいのでcrontab -eで実行しました。

■cronが動いてるか確認
sudo service cron stutas
■cron 起動
sudo service cron start
■HTTPSリダイレクト

一応HTTPでアクセスされたらHTTPSにリダイレクトしておく
nginxの設定ファイルを編集します。

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        return 301 https://$host$request_uri;
}

server {
        #listen 80 default_server;
        #listen [::]:80 default_server;

        # SSL configuration
        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;
        ・・・・
}
■設定ファイルを再読み込み
service nginx reload

あとはとりあえず状況みてなんとかして!!!!

以上。

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください