Let’s Encryptは、Webサイトに無料のSSL証明書を提供する認証局です。ただし、SSL証明書を提供するだけではありません。また、証明書の作成、検証、署名、実装、および証明書の更新を自動化します。
Let’s Encryptは、2億5000万を超えるWebサイトで使用されている、世界最大の認証局です。すべてのウェブサイトが安全でHTTPSを使用することを目的として、2014年11月に開始されました。
現在、Let’s Encryptは、Apache、Nginx、Plex、およびHaproxyへの証明書の自動インストールをサポートしています。
ここでは、Debian11にNginx用のLet'sEncryptSSL証明書をインストールする方法を説明します。
前提条件
先に進む前に、システムにNginxWebサーバーのインストールを設定することをお勧めします。
読む: Debian11にLEMPスタックをインストールする方法
仮想ホストの作成
まず、HTTPバージョンのWebサイトを提供するためにNginx仮想ホストを作成する必要があります。
sudo nano /etc/nginx/conf.d/www.itzgeek.net.conf
Webサイトには以下の構成を使用してください。要件に基づいて値を変更することを忘れないでください。
WordPress、JoomlaなどのCMS、またはPHPベースのアプリケーションを使用していない場合は、PHPFastCGIセクションを削除できます。
server { server_name itzgeek.net www.itzgeek.net; root /usr/share/nginx/www.itzgeek.net/; location / { index index.html index.htm index.php; } access_log /var/log/nginx/www.itzgeek.net.access.log; error_log /var/log/nginx/www.itzgeek.net.error.log; location ~ \.php$ { include fastcgi_params; fastcgi_intercept_errors on; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
仮想ホスト構成ファイルを作成したら、Webサイトのファイルを保持するルートディレクトリを作成します。
sudo mkdir -p /usr/share/nginx/www.itzgeek.net/
次に、ディレクトリの所有権とグループを変更します。
sudo chown -R www-data:www-data /usr/share/nginx/www.itzgeek.net/
最後に、テストHTMLファイルをドメインのドキュメントルートに配置します。
echo "This is a test site @ www.itzgeek.net" | sudo tee /usr/share/nginx/www.itzgeek.net/index.html
次に、構成を再読み込みするためにNginxサービスを再起動する必要があります。
sudo systemctl restart nginx
DNSレコードの作成/更新
ドメインのLet’s Encrypt SSL証明書を生成するには、ドメインがサーバーIPを指すようにする必要があります。そのため、ドメインレジストラに移動して、ドメインのA/CNAMEレコードを作成します。たとえば、次の画像は、ドメインwww.itzgeek.netのA/CNAMEレコードを示しています。
DNSレコードの変更は、伝播するのに時間がかかります。したがって、DNSレコードに設定したTTLに応じて、数分から数時間待ちます。
NginxのSSL証明書を暗号化してインストール
Certbotのインストール
ドメインをサーバーIPにポイントすることに加えて、システムにCertbotACMEクライアントをインストールする必要もあります。 Certbotクライアントは、証明書の発行とインストールをダウンタイムなしで処理します。
Certbotは、Debianオペレーティングシステムのスナップパッケージとして利用できるようになりました。したがって、最初にSnapdパッケージをインストールします。
sudo apt update sudo apt install -y snapd
次に、スナップを最新バージョンに更新します。
sudo snap install core; sudo snap refresh core
最後に、snapコマンドを使用してCertbotクライアントをインストールします。
sudo snap install --classic certbot sudo ln -s /snap/bin/certbot /usr/bin/certbot
Let'sEncrypt証明書をインストールする
certbotコマンドを使用して、Let’s Encrypt証明書を作成し、証明書を使用するようにNginxを構成します。
sudo certbot --nginx
インタラクティブなプロンプトに従い、証明書をインストールします。
Saving debug log to /var/log/letsencrypt/letsencrypt.log Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected] << Enter Email ID - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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. Do you agree? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y << Agree to Terms and Conditions - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing, once your first certificate is successfully issued, 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: N << Subscriber to Newsletter Account registered. Which names would you like to activate HTTPS for? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: itzgeek.net 2. www.itzgeek.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel): 1,2 << Choose Site to Install Let's Encrypt SSL Certificate Requesting a certificate for www.itzgeek.net Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/www.itzgeek.net/fullchain.pem Key is saved at: /etc/letsencrypt/live/www.itzgeek.net/privkey.pem This certificate expires on 2022-01-17. These files will be updated when the certificate renews. Certbot has set up a scheduled task to automatically renew this certificate in the background. Deploying certificate Successfully deployed certificate for www.itzgeek.net to /etc/nginx/conf.d/www.itzgeek.net.conf Congratulations! You have successfully enabled HTTPS on https://www.itzgeek.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - If you like Certbot, please consider supporting our work by: * Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate * Donating to EFF: https://eff.org/donate-le - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ドメインに対してHTTPSをアクティブ化すると、Certbotクライアントは、トラフィックをHTTPからHTTPSサイトにリダイレクトするために必要な書き換えルールを配置します。
私の場合、以下のリダイレクトに対して2つのルールが設定されています。
- http://itzgeek.net>> https://itzgeek.net
- http://www.itzgeek.net>> https://www.itzgeek.net
ご覧のとおり、最初のリダイレクトはwwwHTTPSバージョンのWebサイトには到達していません。そのため、以下のセクションに従って設定する必要がある場合があります。
www以外のHTTPリクエストをNginxを使用してwwwHTTPSにリダイレクトする(オプション)
www以外のHTTPサイトからWWWHTTPSサイト( http://itzgeek.net )にトラフィックをリダイレクトするようにNginxサーバーを構成することをお勧めします。>> https://www.itzgeek.net 。
sudo nano /etc/nginx/conf.d/www.itzgeek.net.conf
強調表示されたリダイレクトをSSLセクションに追加します。
listen 443 ssl; # managed by Certbot . . . . . . ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot if ($host = itzgeek.net) { return 301 https://www.itzgeek.net$request_uri; }
次に、Nginxサービスを再起動します。
sudo systemctl restart nginx
Let'sEncrypt証明書を確認する
Let’s Encryptの証明書は、Webサイトにアクセスして確認できます。
http:// your-http-web-siteまたは
https:// your-https-web-site今すぐサイトのHTTPSバージョンを入手する必要があります。
SSL証明書のテスト
以下のURLにアクセスして、Let’sEncryptSSL証明書の問題とそのセキュリティ評価をテストします。
https://www.ssllabs.com/ssltest/analyze.html?d=www.itzgeek.netLet'sEncrypt証明書を更新する
Let's Encryptの証明書の有効期間は90日です。証明書の有効期限が切れる前に、証明書を更新することを強くお勧めします。 1日に2回実行され、期限切れが近づいている証明書を自動的に更新するsystemdサービスに感謝します。
ただし、以下のコマンドを実行して、証明書の自動更新をシミュレートすることをお勧めします。
sudo certbot renew --dry-run
出力:
Saving debug log to /var/log/letsencrypt/letsencrypt.log - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Processing /etc/letsencrypt/renewal/www.itzgeek.net.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Account registered. Simulating renewal of an existing certificate for www.itzgeek.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations, all simulated renewals succeeded: /etc/letsencrypt/live/www.itzgeek.net/fullchain.pem (success) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
更新が正しく機能していることが出力で確認された場合、自動更新は期待どおりに行われます。
結論
それで全部です。 Debian11にNginx用のLet’sEncryptSSL証明書をインストールする方法を学んだことを願っています。コメントセクションでフィードバックを共有してください。