本日はRHEL8、CentOS8で起動するウェブサーバーであるNGINXにSSL設定をおこないます。「Let’s Encrypt」を使用して無料で設定することができます。サーバー証明書を設定するにあたって予めポート番号443を開放しておく必要があります。OSそのものと、ルーターなど両方に設定しておきます。最近はクラウドサービスの利用が増えてきているので、その場合も同様に開放しておきます。
まず最初に、Let’s EncryptのクライアントのCertbotというツールをインストールします。Windowsでも設定できるプログラムがあります。
sudo dnf install certbot
インストール完了後にcertbotを起動してウィザードにそって進めていきます。
certbot --nginx
エラーが発生しました。
The following error was encountered:
[Errno 13] Permission denied: ‘/var/log/letsencrypt’
Either run as root, or set –config-dir, –work-dir, and –logs-dir to writeable paths.
管理者権限でインストールするのを忘れてました。
sudo certbot --nginx
しかし、またエラーが発生しました。示されたログを見て対処します。
Saving debug log to /var/log/letsencrypt/letsencrypt.log
The requested nginx plugin does not appear to be installed
2021-06-22 20:47:01,121:DEBUG:certbot._internal.main:certbot version: 1.14.0
2021-06-22 20:47:01,122:DEBUG:certbot._internal.main:Location of certbot entry point: /bin/certbot
2021-06-22 20:47:01,122:DEBUG:certbot._internal.main:Arguments: [‘–nginx’]
2021-06-22 20:47:01,122:DEBUG:certbot._internal.main:Discovered plugins: PluginsRegistry(PluginEntryPoint#manual,PluginEntryPoint#null,PluginEntryPoint#standalone,PluginEntryPoint#webroot)
2021-06-22 20:47:01,138:DEBUG:certbot._internal.log:Root logging level set at 20
2021-06-22 20:47:01,139:INFO:certbot._internal.log:Saving debug log to /var/log/letsencrypt/letsencrypt.log
2021-06-22 20:47:01,143:DEBUG:certbot._internal.plugins.selection:Requested authenticator nginx and installer nginx
2021-06-22 20:47:01,143:DEBUG:certbot._internal.plugins.selection:No candidate plugin
2021-06-22 20:47:01,143:DEBUG:certbot._internal.plugins.selection:Selected authenticator None and installer None
どうやらプラグインが不足しているようです。このプラグインを追加します。
sudo dnf install python3-certbot-nginx
再度、Cerbotコマンドを入力すると今度はうまくいきました。
数点、問われるので答えていきます。NGINXの設定ファイルを確認しているせいか、設定してあるドメインが表示されます。今回は1つだけですが複数ある場合はSSL設定をしたいドメインの番号を入力します。
sudo certbot --nginx
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices)
(Enter ‘c’ to cancel): summer@minokamo.xyz
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
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: y
Account registered.
Which names would you like to activate HTTPS for?
1: betelgeuse.work
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter ‘c’ to cancel): 1
Requesting a certificate for betelgeuse.work
Performing the following challenges:
http-01 challenge for betelgeuse.work
Waiting for verification…
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/drupal.conf
Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/drupal.conf
Congratulations! You have successfully enabled https://betelgeuse.work
Subscribe to the EFF mailing list (email: summer@minokamo.xyz).
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/betelgeuse.work/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/betelgeuse.work/privkey.pem
Your certificate will expire on 2021-09-20. To obtain a new or
tweaked version of this certificate in the future, simply run
certbot again with the “certonly” option. To non-interactively
renew all of your certificates, run “certbot renew” - 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
完了したら、NGINXの設定ファイルを確認してみます。「managed by Certbot」という記述の所がCertbotにより追記されたものです。さらに自動更新の設定も行います。期限切れの前に更新してくれます。
sudo systemctl enable --now certbot-renew.timer
NGINXを再起動してブラウザで確認してみます。
発行者がCloudFlareになっているのは、このドメインのネームサーバーをCloudFlareにしているからです。通常はR3となっていると思います。