Let's Encryptとは
Let's Encryptは無料のオープンソースの証明書発行機関で、インターネットセキュリティを強化するために設立されました。ユーザーは簡単にSSL/TLS証明書を取得し、Webサイトの安全なHTTPS接続を実現できます。Let's Encryptは自動化されたプロセスを提供しており、証明書の取得と更新を容易に行えるため、特に小規模なWebサイトや個人の開発者にとって理想的な選択肢です。
SSL照明証の重要性
SSL(Secure Sockets Layer)証明書は、インターネット上で情報を安全に送受信するために不可欠です。SSL証明書を使用すると、Webサイトとそのユーザー間のデータが暗号化され、第三者によるデータの盗聴や改ざんを防ぐことができます。これは、特に個人情報や金融情報などの機密データを扱うWebサイトにとって重要です。さらに、SSL証明書はWebサイトの信頼性を高め、Googleなどの検索エンジンによるランキング向上にも寄与します。
Let's Encryptのインストール
sudo apt-get install letsencrypt
SSL証明書の発行
まずはnginxを停止する
sudo systemctl stop nginx
それから以下のコマンドで証明書を取得する。your_domain
のところはドメイン名を指定する。
sudo letsencrypt certonly --standalone -d your_domain.com
このようなメッセージが出たら、証明書の発行が成功した。
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/your_domain/fullchain.pem
Your key file has been saved at:
nginxの設定
以下の例はyour_domain.com
に対する設定です。
server {
listen 80;
server_name localhost your_domain.com;
return 301 https://$host$1$request_uri;
}
server {
listen 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;
証明書の更新
手動の場合
SSL証明書の有効期限は90日なので、まだ期限が切れないうちに更新する必要があります。
更新するには、まずはnginxを停止して、SSLを更新して、それからnginxを起動するフローです。
sudo systemctl stop nginx
sudo letsencrypt renew
sudo systemctl start nginx
これによってウェブサーバーが一旦停止されるのが留意点。
自動の場合
cronで自動化することができます。設定するには sudo crontab -e
コマンドを実行して、それから以下の内容を入れます。
# Renew the Let's Encrypt SSL certificates at 3:00 AM on the 1st of every month
00 03 01 * * sudo systemctl stop nginx; sudo letsencrypt renew; sudo systemctl start nginx
保存してから反映されます、サーバーの再起動は必要ありません。
これによって、毎月1日の朝3時に、nginx停止 → SSL証明書更新 → nginx起動というフローで自動的にSSL証明書が更新されます。
午前3時を設定する理由は、その時にサイトを利用するユーザーがあまりいないからです。