さくらのVPSでCentOS8 (14) Let’s Encryptにて証明書取得

前回は、証明書取得のための環境を整えた。

今回は、実際に証明書を取得して、HTTPSでの閲覧が可能な状態にしていく。

まずはApacheの設定から。

HTTPSでの閲覧ができるようにするためには、mod_sslというApacheのモジュールを準備する必要がある。

入っていないと、certbotの実行中、次のようなエラーが表示される。

Could not find ssl_module; not disabling session tickets.

インストールされているモジュールを表示するには、次のコマンドを実行する。

$ httpd -M

opensslも必要なので、念の為に一緒に記載するが、これまでの流れで、すでにインストールされているはず。

# dnf install mod_ssl openssl

これだけでApache自体はSSLに対応できた。

ちなみに、追加された構成ファイルは、次のコマンドで確認できる。

$ rpm -ql mod_ssl

設定ファイルに限定すると、次のファイルが作成される。

/etc/httpd/conf.d/ssl.conf
/etc/httpd/conf.modules.d/00-ssl.conf

しかし、すぐにApacheを再起動しても、起動に失敗するので注意が必要。

Apacheの設定ファイルをチェックしてみると、

$ apachectl configtest
 AH00526: Syntax error on line 85 of /etc/httpd/conf.d/ssl.conf:
 SSLCertificateFile: file '/etc/pki/tls/certs/localhost.crt' does not exist or is empty

localhost.crtという証明書ファイルが無いと言われる。

設定がエラーになると、certbotの実行時にもエラーとなり処理されないので、設定ファイルを一旦削除する。か、改名する。

# rm /etc/httpd/conf.d/ssl.conf
# mv /etc/httpd/conf.d/ssl.conf /etc/httpd/conf.d/ssl.org

2行をコメントアウトすれば、次のように、設定の検証はOKとなる。

# apachectl configtest
Syntax OK

certbotコマンドを実行すれば、Apacheの設定ファイルから証明書が自動生成されて、設定ファイルも書き換えられる。

だが、実際は、設定ファイルに必要な項目があったり、条件がある。

色々試して、次の手順が個人的にはオススメ。

まず、デフォルトのVirtualHostの設定ファイルを作成する。

# vi /etc/httpd/conf.d/default.conf

ファイルの中身は次の最低限の3行。

<VirtualHost _default_:80>
    ServerName [ホスト名].sakura.ne.jp
</VirtualHost> 

[ホスト名]部分は、所有しているサーバーのホスト名に。

そして、certbotコマンドの実行。

# certbot --apache
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Enter email address (used for urgent renewal and security notices)
 (Enter 'c' to cancel): webmaster@example.com ←あなたのメールアドレス
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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: n ←メールとかは要らない
Account registered.

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: [ホスト名].sakura.ne.jp
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel):  ←何も入力しない
Requesting a certificate for [ホスト名].sakura.ne.jp
Performing the following challenges:
http-01 challenge for [ホスト名].sakura.ne.jp
Waiting for verification…
Cleaning up challenges
Created an SSL vhost at /etc/httpd/conf.d/default-le-ssl.conf
Deploying Certificate to VirtualHost /etc/httpd/conf.d/default-le-ssl.conf
Redirecting vhost in /etc/httpd/conf.d/default.conf to ssl vhost in /etc/httpd/conf.d/default-le-ssl.conf
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://[ホスト名].sakura.ne.jp
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/[ホスト名].sakura.ne.jp/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/[ホスト名].sakura.ne.jp/privkey.pem
   Your certificate will expire on 2021-04-16. 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 

と、この時点で、既にHTTPSでのWebサーバへの接続が可能になっている。

試しに、Webブラウザで、「http://[ホスト名].sakura.ne.jp」と入力し、接続してみる。

この時、「http://〜」であっても、「https://〜」で転送される。

主な変更点は、/etc/httpd/conf/httpd.confの最後に、次の設定が追加され、

<IfModule mod_ssl.c>
Listen 443
</IfModule>

/etc/httpd/conf.d/default.confが次のように、転送の設定が追加され、

<VirtualHost default:80>
    ServerName [ホスト名].sakura.ne.jp
RewriteEngine on
RewriteCond %{SERVER_NAME} =[ホスト名].sakura.ne.jp
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

/etc/httpd/conf.d/default-le-ssl.confが次のような内容で追加され、

<IfModule mod_ssl.c>
<VirtualHost default:443>
    ServerName [ホスト名].sakura.ne.jp
SSLCertificateFile /etc/letsencrypt/live/[ホスト名].sakura.ne.jp/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/[ホスト名].sakura.ne.jp/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

/etc/letsencrypt/options-ssl-apache.confというファイルも、次のような内容で追加される。

# This file contains important security parameters. If you modify this file
# manually, Certbot will be unable to automatically provide future security
# updates. Instead, Certbot will print and log an error message with a path to
# the up-to-date file that you will need to refer to when manually updating
# this file.

 SSLEngine on

# Intermediate configuration, tweak to your needs
SSLProtocol             all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite          ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder     off
SSLSessionTickets       off
SSLOptions +StrictRequire
# Add vhost name to log entries:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" vhost_combined
LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost_common

今回は、WebサーバをLet’s Encryptの証明書で、HTTPSに対応させた。

次回は、webminをインストールしたいと思う。

さくらインターネットのVPS

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です