Let’s Encryptは、Webサイトに無料のSSL証明書を提供する認証局です。すべてのウェブサイトが安全でHTTPであることを目標に、2014年に開始されました。
SSL証明書を提供するだけでなく、証明書の実装と自動更新にも役立ちます。 Let’s Encryptは、2億5000万を超えるWebサイトで使用されている世界最大の認証局です。
この投稿を書くとき、Let’s Encryptは、Apache、Nginx、Plex、およびHaproxyへの証明書の自動インストールをサポートしています。
ここでは、Debian11のApacheにLet'sEncryptSSL証明書をインストールする方法を説明します。
前提条件
ApacheWebサーバーをインストールする
先に進む前に、システムにApacheWebサーバーをインストールすることをお勧めします。
読む: Debian11にLAMPスタックをインストールする方法
または
apt
を使用する ApacheWebサーバーをインストールするコマンド。
sudo apt update sudo apt install -y apache2
モジュールを有効にする
以下のコマンドを使用して、SSLを有効にし、モジュールを書き換えます。
sudo a2enmod ssl rewrite
仮想ホストの作成
まず、HTTPバージョンのWebサイトを提供するためにApache仮想ホストを作成する必要があります。
sudo nano /etc/apache2/sites-available/www.itzgeek.net.conf
Webサイトには以下の構成を使用してください。要件に基づいて値を変更することを忘れないでください。 wwwサブドメインを使用しない場合は、ServerAlias
を削除できます 。
<VirtualHost *:80> ServerName itzgeek.net ServerAlias www.itzgeek.net ServerAdmin [email protected] DocumentRoot /var/www/html/www.itzgeek.net ErrorLog ${APACHE_LOG_DIR}/www.itzgeek.net_error.log CustomLog ${APACHE_LOG_DIR}/www.itzgeek.net_access.log combined <Directory /var/www/html/www.itzgeek.net> Options FollowSymlinks AllowOverride All Require all granted </Directory> </VirtualHost>
仮想ホスト構成ファイルを作成したら、サイトを有効にします。
sudo a2ensite www.itzgeek.net
次に、ウェブサイトのファイルを保持するルートディレクトリを作成します。
sudo mkdir -p /var/www/html/www.itzgeek.net/
次に、ディレクトリの所有権とグループを変更します。
sudo chown -R www-data:www-data /var/www/html/www.itzgeek.net/
最後に、テストHTMLファイルをWebサイトのドキュメントルートに配置します。
echo "This is a test site @ www.itzgeek.net" | sudo tee /var/www/html/www.itzgeek.net/index.html
Apacheサービスを再起動して、構成を再読み取りします。
sudo systemctl reload apache2
DNSレコードの作成/更新
Let’s Encrypt SSL証明書を生成するには、ドメインがサーバーIPを指すようにする必要があります。そのため、ドメインレジストラに移動して、ドメインのA/CNAMEレコードを作成します。たとえば、次の画像は、ドメインwww.itzgeek.netのA/CNAMEレコードを示しています。
注:DNSレコードに変更を加えた後、DNSレコードに設定したTTLに応じて、数分から数時間待つ必要があります。
Let'sEncryptのSSL証明書をApacheにインストールする
Certbotのインストール
Certbot ACMEクライアントは、ダウンタイムなしで証明書の発行とインストールを処理します。 Debianオペレーティングシステム用のスナップパッケージとして利用できます。したがって、最初にSnapdパッケージをインストールします。
sudo apt update sudo apt install -y snapd
次に、スナップを最新バージョンに更新します。
sudo snap install core; sudo snap refresh core
最後に、snapコマンドを使用してCertbotクライアントをインストールし、リンクして、現在の作業ディレクトリに関係なく、どこからでもcertbotコマンドを呼び出すことができるようにします。
sudo snap install --classic certbot sudo ln -s /snap/bin/certbot /usr/bin/certbot
Let'sEncrypt証明書をインストールする
certbotコマンドを使用して、Let’s Encrypt証明書を作成し、証明書を使用するようにApacheを構成します。
sudo certbot --apache
対話型プロンプトに従い、証明書をインストールする必要があります。 itzgeek.netとwww.itzgeek.netの両方の仮想ホストを作成したので、両方のドメインにSSL証明書もインストールする必要があります。次に、書き換えルールを使用してすべてのトラフィックをwww.itzgeek.netにリダイレクトします。
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 << Select the site to Install Let's Encrypt SSL Certificate Requesting a certificate for itzgeek.net and www.itzgeek.net Successfully received certificate. Certificate is saved at: /etc/letsencrypt/live/itzgeek.net/fullchain.pem Key is saved at: /etc/letsencrypt/live/itzgeek.net/privkey.pem This certificate expires on 2022-01-21. 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 itzgeek.net to /etc/apache2/sites-available/www.itzgeek.net-le-ssl.conf Successfully deployed certificate for www.itzgeek.net to /etc/apache2/sites-available/www.itzgeek.net-le-ssl.conf Congratulations! You have successfully enabled HTTPS on https://itzgeek.net and 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バージョンへの最初のリダイレクトには到達していません。そのため、以下のセクションに従って設定する必要がある場合があります。
www以外のHTTPリクエストをApacheを使用してwwwHTTPSにリダイレクトする
www以外のHTTPサイトからWWWWHTTPSサイト( http://itzgeek.net )にトラフィックをリダイレクトするようにApacheWebサーバーを構成することをお勧めします。>> https://www.itzgeek.net 。
Let’s Encrypt SSL仮想ホストファイル(元の仮想ホストファイルではありません)を編集します。
sudo nano /etc/apache2/sites-available/www.itzgeek.net-le-ssl.conf
</VirtualHost>
の前に以下のルールを追加します 。要件に応じてドメイン名を変更します。
# Redirect NON-WWW HTTP to WWW HTTPS RewriteEngine on RewriteCond %{SERVER_NAME} =itzgeek.net RewriteRule ^ https://www.itzgeek.net%{REQUEST_URI} [END,NE,R=permanent]1,L]
次に、Apacheサービスを再起動します。
sudo systemctl restart apache2
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日であり、期限内に更新されるようにする必要があります。更新プロセスは現在自動化されており、Certbotクライアントによって提供されるsystemdサービスのおかげです。したがって、手動で更新する必要はありません。
ただし、以下のコマンドを実行してSSL証明書の自動更新をシミュレートすることにより、証明書の更新をテストすることをお勧めします。
sudo certbot renew --dry-run
出力:
Saving debug log to /var/log/letsencrypt/letsencrypt.log - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Processing /etc/letsencrypt/renewal/itzgeek.net.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Account registered. Simulating renewal of an existing certificate for itzgeek.net and www.itzgeek.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations, all simulated renewals succeeded: /etc/letsencrypt/live/itzgeek.net/fullchain.pem (success) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
テストの更新が成功したことを出力で確認すると、期待どおりに自動更新が行われます。
結論
それで全部です。 Debian11のApacheにLet’sEncryptSSL証明書をインストールする方法を学んだことを願っています。