サイトをhttpsにする

サイトをhttpsにすることで、ブラウザとサーバーサイドの通信を暗号化することができ、盗聴などを防ぐことができるようになります。
下の例はLaravelで作成したサイトをhttpsにする例となっています。

Certbotのインストール


sudo apt update
sudo apt install certbot python3-certbot-nginx


Nginx の設定ファイルを編集


sudo nano /etc/nginx/sites-available/default

と入力し、設定ファイルを開き以下のように書き換えます。

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

server_name 自分のドメイン名に置き換える;

root /var/www/アプリケーションのパス/public;
index index.php index.html index.htm index.nginx-debian.html;

location / {
try_files $uri $uri/ /index.php?$query_string;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
}

location ~ /\.ht {
deny all;
}

# Let's Encrypt の ACME チャレンジ用
location ~ /.well-known/acme-challenge {
allow all;
}
}

となるようにLet's Encrypt の ACME チャレンジ用の部分を書き足してください。


Certbot を使用して証明書を取得


sudo certbot --nginx -d 自身のドメイン名


証明書を自動更新するように設定する


sudo crontab -e

と入力し、番号を聞かれたら使用するテキストエディタを選択してください。
1を選択するとnanoで開かれます。
その後開かれたファイルの末尾に
0 3 * * * /usr/bin/certbot renew --quiet

と追加してください。
上のコードは3時に自動更新となっているので3の部分を任意の時間に更新することで自動更新する時間を変更することができます。

Nginx を再起動して設定の変更を適用


sudo systemctl restart nginx