LetsEncryptは、ユーザーに無料のSSL / TLS証明書を提供するサービスです。 Certbotは、これを簡単に実行および自動化できるクライアントです。また、ApacheとNginx用のプラグインがあり、証明書の生成の自動化をさらに簡単にします。
ほとんどのLinuxディストリビューションのインストール手順は、CertbotのWebサイトにあります。
パッケージがインストールされると、新しい証明書を生成する準備が整います。
Apache
CertbotとApacheプラグインをインストールした後、証明書の生成は次のコマンドで行われます。
certbot certonly --apache --noninteractive --agree-tos --email YOUR_EMAIL -d DOMAIN_NAME
「SSLCertificateFile」および「SSLCertificateKeyFile」セクションを更新してから、サービスを再起動します。
証明書が自動的に更新されるように、ジョブをcronに追加します。
echo "0 0 * * * root certbot renew --quiet --no-self-upgrade --post-hook $0027systemctl reload apache2$0027" | sudo tee -a /etc/cron.d/renew_certbot
HAProxy
HAProxyには現在Certbotプラグインがありません。これを回避するには、Certbotをスタンドアロンモードで実行し、ネットワークを介してトラフィックをプロキシします。
上記の構成でフロントエンドとバックエンドを有効にしてから、Certbotを実行します。
certbot certonly --standalone --preferred-challenges http-01 --http-01-port 8888 --noninteractive --agree-tos --email YOUR_EMAIL -d DOMAIN_NAME
ポートは任意に変更できますが、HAProxy設定とCertbotコマンドが一致していることを確認してください。
HAProxyは、正しく読み取るために、証明書と連結されたキーファイルを同じファイルに含める必要があります。これは、次のコマンドで実行できます。
cat /etc/letsencrypt/live/domain_name/fullchain.pem /etc/letsencrypt/live/domain_name/privkey.pembind *:443と設定のリダイレクトセクションを分解し、サービスをリロードします。
証明書の自動更新
次のスクリプトを/ usr / local / bin /に配置して、SSL証明書を自動的に更新します。
SITE = DOMAIN_NAME#は、ディレクトリを暗号化する正しいファイルに渡しますcd / etc / letsencrypt / live / $SITIO# catファイルは、haproxycat fullchain.pem privkey.pem> /etc/ssl/$SITIO.pem1TPxer reloadの.pemスクリプトが実行可能であることを確認してください。
chmod u + x /usr/local/bin/letsencrypt-renew.sh証明書が自動的に更新されるように、ジョブをcronに追加します。
@mensual / usr / bin / certbot renew --renew-hook "/usr/local/bin/letsencrypt-renew.sh"; /var/log/letsencrypt-renewal.logNginx
CertbotとNginxプラグインをsudo apt install certbot python3-certbot-nginxでインストールした後、証明書を生成します。
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email YOUR_EMAIL -d YOUR_DOMAIN代わりに4096ビットの鍵が必要な場合は、パラメーター--rsa-key-size 4096を追加します。
上記のNginxサンプル構成ファイル全体をコピーして貼り付け、構成に応じてパラメーターを変更し、行のコメントを外します。
証明書が自動的に更新されるように、ジョブをcronに追加します。
echo "0 0 * * * root certbot renew --quiet --no-self-upgrade --post-hook $0027systemctl reload nginx$0027" | sudo tee -a /etc/cron.d/renew_certbot