Webサイト開設メモ(その4)SSL証明書(Let’s Encrypt)を取得してSSL化する

Web Site

前回までに、さくらインターネットのVPSを使って、WordPressを利用したWebサイトを開設することが出来ました。

今回は、ドメインを取得して登録した後、Let’s Encrypt のSSL証明書を取得して、WebサイトをSSL化します。

SSL化のための準備

Apache設定ファイルへのドメイン登録

Apacheの設定ファイル httpd.conf の「ServerName」の項目を編集して、取得したドメイン名を登録します。
->取得したドメイン名(例):example.net とします。

# 設定ファイルの編集
[root@^ ~]# vi /etc/httpd/conf/httpd.conf
-------------------------------------
ServerName www.example.net:80          #ServerName www.example.com:80
-------------------------------------

# 確認
[root@^ ~]# httpd -t
Syntax OK

# 再起動
[root@^ ~]# systemctl restart httpd

Webサイトが http://www.example.net で表示されることを確認します。

firewalld設定

ファイアーウォールにhttpsのサービスを追加します。

# firewalldにhttps追加
[root@^ ~]# firewall-cmd --add-service=https --permanent
success

# 再読み込み
[root@^ ~]# firewall-cmd --reload
success

# 設定確認
[root@^ ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens3
  sources:
  services: cockpit dhcpv6-client http https ssh
  ports: 50000/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

SSL通信モジュールのインストール

SSL通信用のモジュール mod_ssl をインストールします。

[root@^ ~]# dnf install mod_ssl
メタデータの期限切れの最終確認: 2:02:17 時間前の 2021年04月29日 19時40分15秒 に 実施しました。
依存関係が解決しました。
================================================================================
 パッケージ
           Arch     バージョン                                Repo        サイズ
================================================================================
インストール:
 mod_ssl   x86_64   1:2.4.37-30.module_el8.3.0+561+97fdbbcc   appstream   133 k
依存関係のインストール:
 sscg      x86_64   2.3.3-14.el8                              appstream    49 k

トランザクションの概要
================================================================================
インストール  2 パッケージ

ダウンロードサイズの合計: 182 k
インストール済みのサイズ: 360 k
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
(1/2): sscg-2.3.3-14.el8.x86_64.rpm             941 kB/s |  49 kB     00:00
(2/2): mod_ssl-2.4.37-30.module_el8.3.0+561+97f 1.9 MB/s | 133 kB     00:00
--------------------------------------------------------------------------------
合計                                            430 kB/s | 182 kB     00:00
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                        1/1
  インストール     : sscg-2.3.3-14.el8.x86_64                               1/2
  インストール     : mod_ssl-1:2.4.37-30.module_el8.3.0+561+97fdbbcc.x86_   2/2
  scriptletの実行中: mod_ssl-1:2.4.37-30.module_el8.3.0+561+97fdbbcc.x86_   2/2
  検証             : mod_ssl-1:2.4.37-30.module_el8.3.0+561+97fdbbcc.x86_   1/2
  検証             : sscg-2.3.3-14.el8.x86_64                               2/2

インストール済み:
  mod_ssl-1:2.4.37-30.module_el8.3.0+561+97fdbbcc.x86_64
  sscg-2.3.3-14.el8.x86_64

完了しました!

これで準備は完了です。

Let’s EncryptのSSL証明書取得

EPELリポジトリの有効化

EPEL リポジトリを有効化します。

[root@^ ~]# dnf install epel-release
メタデータの期限切れの最終確認: 2:22:29 時間前の 2021年04月29日 19時40分15秒 に 実施しました。
依存関係が解決しました。
================================================================================
 パッケージ            Arch            バージョン         リポジトリー    サイズ
================================================================================
インストール:
 epel-release          noarch          8-8.el8            extras           23 k

トランザクションの概要
================================================================================
インストール  1 パッケージ

ダウンロードサイズの合計: 23 k
インストール済みのサイズ: 32 k
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
epel-release-8-8.el8.noarch.rpm                 1.7 MB/s |  23 kB     00:00
--------------------------------------------------------------------------------
合計                                            101 kB/s |  23 kB     00:00
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                        1/1
  インストール     : epel-release-8-8.el8.noarch                            1/1
  scriptletの実行中: epel-release-8-8.el8.noarch                            1/1
  検証             : epel-release-8-8.el8.noarch                            1/1

インストール済み:
  epel-release-8-8.el8.noarch

完了しました!

certbotインストール

Let’s Encrypt のSSL証明書を取得するためのユーティリティ certbot をインストールします。

[root@^ ~]# dnf install certbot certbot-apache
メタデータの期限切れの最終確認: 0:00:30 時間前の 2021年04月29日 22時03分46秒 に 実施しました。
依存関係が解決しました。
================================================================================
 パッケージ                Arch   バージョン                    Repo      サイズ
================================================================================
インストール:
 certbot                   noarch 1.14.0-1.el8                  epel       51 k
 python3-certbot-apache    noarch 1.14.0-1.el8                  epel      143 k
依存関係のインストール:
 augeas-libs               x86_64 1.12.0-5.el8                  baseos    436 k
 python3-acme              noarch 1.14.0-1.el8                  epel       88 k
 python3-augeas            noarch 0.5.0-12.el8                  appstream  31 k
 python3-certbot           noarch 1.14.0-1.el8                  epel      391 k
 python3-chardet           noarch 3.0.4-7.el8                   baseos    195 k
 python3-configargparse    noarch 0.14.0-6.el8                  epel       36 k
 python3-distro            noarch 1.4.0-2.module_el8.3.0+562+e162826a
                                                                appstream  37 k
 python3-josepy            noarch 1.8.0-1.el8                   epel      102 k
 python3-parsedatetime     noarch 2.5-1.el8                     epel       79 k
 python3-pip               noarch 9.0.3-18.el8                  appstream  20 k
 python3-pyasn1            noarch 0.3.7-6.el8                   appstream 126 k
 python3-pyrfc3339         noarch 1.1-1.el8                     epel       19 k
 python3-pysocks           noarch 1.6.8-3.el8                   baseos     34 k
 python3-pytz              noarch 2017.2-9.el8                  appstream  54 k
 python3-requests          noarch 2.20.0-2.1.el8_1              baseos    123 k
 python3-requests-toolbelt noarch 0.9.1-4.el8                   epel       91 k
 python3-setuptools        noarch 39.2.0-6.el8                  baseos    163 k
 python3-urllib3           noarch 1.24.2-4.el8                  baseos    176 k
 python3-zope-component    noarch 4.3.0-8.el8                   epel      313 k
 python3-zope-event        noarch 4.2.0-12.el8                  epel      210 k
 python3-zope-interface    x86_64 4.6.0-1.el8                   epel      158 k
 python36                  x86_64 3.6.8-2.module_el8.3.0+562+e162826a
                                                                appstream  19 k
弱い依存関係のインストール:
 python-josepy-doc         noarch 1.8.0-1.el8                   epel       22 k
モジュールストリームの有効化中:
 python36                         3.6

トランザクションの概要
================================================================================
インストール  25 パッケージ

ダウンロードサイズの合計: 3.0 M
インストール済みのサイズ: 11 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
(1/25): python3-pip-9.0.3-18.el8.noarch.rpm     593 kB/s |  20 kB     00:00
(2/25): python3-augeas-0.5.0-12.el8.noarch.rpm  876 kB/s |  31 kB     00:00
(3/25): python3-distro-1.4.0-2.module_el8.3.0+5 897 kB/s |  37 kB     00:00
(4/25): python36-3.6.8-2.module_el8.3.0+562+e16 1.5 MB/s |  19 kB     00:00
(5/25): python3-pytz-2017.2-9.el8.noarch.rpm    2.2 MB/s |  54 kB     00:00
(6/25): python3-pyasn1-0.3.7-6.el8.noarch.rpm   3.0 MB/s | 126 kB     00:00
(7/25): python3-pysocks-1.6.8-3.el8.noarch.rpm  1.4 MB/s |  34 kB     00:00
(8/25): python3-chardet-3.0.4-7.el8.noarch.rpm  3.9 MB/s | 195 kB     00:00
(9/25): python3-requests-2.20.0-2.1.el8_1.noarc 2.7 MB/s | 123 kB     00:00
(10/25): python3-setuptools-39.2.0-6.el8.noarch 3.3 MB/s | 163 kB     00:00
(11/25): augeas-libs-1.12.0-5.el8.x86_64.rpm    3.9 MB/s | 436 kB     00:00
(12/25): python3-urllib3-1.24.2-4.el8.noarch.rp 4.4 MB/s | 176 kB     00:00
(13/25): python-josepy-doc-1.8.0-1.el8.noarch.r 709 kB/s |  22 kB     00:00
(14/25): certbot-1.14.0-1.el8.noarch.rpm        1.2 MB/s |  51 kB     00:00
(15/25): python3-certbot-apache-1.14.0-1.el8.no 3.9 MB/s | 143 kB     00:00
(16/25): python3-acme-1.14.0-1.el8.noarch.rpm   1.6 MB/s |  88 kB     00:00
(17/25): python3-certbot-1.14.0-1.el8.noarch.rp 5.0 MB/s | 391 kB     00:00
(18/25): python3-josepy-1.8.0-1.el8.noarch.rpm  1.6 MB/s | 102 kB     00:00
(19/25): python3-configargparse-0.14.0-6.el8.no 506 kB/s |  36 kB     00:00
(20/25): python3-pyrfc3339-1.1-1.el8.noarch.rpm 1.4 MB/s |  19 kB     00:00
(21/25): python3-parsedatetime-2.5-1.el8.noarch 1.6 MB/s |  79 kB     00:00
(22/25): python3-requests-toolbelt-0.9.1-4.el8. 2.6 MB/s |  91 kB     00:00
(23/25): python3-zope-interface-4.6.0-1.el8.x86 3.0 MB/s | 158 kB     00:00
(24/25): python3-zope-event-4.2.0-12.el8.noarch 2.6 MB/s | 210 kB     00:00
(25/25): python3-zope-component-4.3.0-8.el8.noa 3.2 MB/s | 313 kB     00:00
--------------------------------------------------------------------------------
合計                                            1.6 MB/s | 3.0 MB     00:01
警告: /var/cache/dnf/epel-6519ee669354a484/packages/certbot-1.14.0-1.el8.noarch.rpm: ヘッダー V4 RSA/SHA256 Signature、鍵 ID 2f86d6a1: NOKEY
Extra Packages for Enterprise Linux 8 - x86_64  1.6 MB/s | 1.6 kB     00:00
GPG 鍵 0x2F86D6A1 をインポート中:
 Userid     : "Fedora EPEL (8) <epel@fedoraproject.org>"
 Fingerprint: 94E2 79EB 8D8F 25B2 1810 ADF1 21EA 45AB 2F86 D6A1
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
これでよろしいですか? [y/N]: y
鍵のインポートに成功しました
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                        1/1
  インストール     : python3-pyrfc3339-1.1-1.el8.noarch                    1/25
  インストール     : python3-setuptools-39.2.0-6.el8.noarch                2/25
  インストール     : python36-3.6.8-2.module_el8.3.0+562+e162826a.x86_6    3/25
  scriptletの実行中: python36-3.6.8-2.module_el8.3.0+562+e162826a.x86_6    3/25
  インストール     : python3-pip-9.0.3-18.el8.noarch                       4/25
  インストール     : python3-zope-event-4.2.0-12.el8.noarch                5/25
  インストール     : python3-zope-interface-4.6.0-1.el8.x86_64             6/25
  インストール     : python3-zope-component-4.3.0-8.el8.noarch             7/25
  インストール     : python3-pytz-2017.2-9.el8.noarch                      8/25
  インストール     : python3-parsedatetime-2.5-1.el8.noarch                9/25
  インストール     : python3-configargparse-0.14.0-6.el8.noarch           10/25
  インストール     : python-josepy-doc-1.8.0-1.el8.noarch                 11/25
  インストール     : python3-josepy-1.8.0-1.el8.noarch                    12/25
  インストール     : python3-pysocks-1.6.8-3.el8.noarch                   13/25
  インストール     : python3-urllib3-1.24.2-4.el8.noarch                  14/25
  インストール     : python3-chardet-3.0.4-7.el8.noarch                   15/25
  インストール     : python3-requests-2.20.0-2.1.el8_1.noarch             16/25
  インストール     : python3-requests-toolbelt-0.9.1-4.el8.noarch         17/25
  インストール     : augeas-libs-1.12.0-5.el8.x86_64                      18/25
  scriptletの実行中: augeas-libs-1.12.0-5.el8.x86_64                      18/25
  インストール     : python3-augeas-0.5.0-12.el8.noarch                   19/25
  インストール     : python3-pyasn1-0.3.7-6.el8.noarch                    20/25
  インストール     : python3-acme-1.14.0-1.el8.noarch                     21/25
  インストール     : python3-distro-1.4.0-2.module_el8.3.0+562+e162826a   22/25
  インストール     : python3-certbot-1.14.0-1.el8.noarch                  23/25
  インストール     : certbot-1.14.0-1.el8.noarch                          24/25
  scriptletの実行中: certbot-1.14.0-1.el8.noarch                          24/25
  インストール     : python3-certbot-apache-1.14.0-1.el8.noarch           25/25
  scriptletの実行中: python3-certbot-apache-1.14.0-1.el8.noarch           25/25
  検証             : python3-augeas-0.5.0-12.el8.noarch                    1/25
  検証             : python3-distro-1.4.0-2.module_el8.3.0+562+e162826a    2/25
  検証             : python3-pip-9.0.3-18.el8.noarch                       3/25
  検証             : python3-pyasn1-0.3.7-6.el8.noarch                     4/25
  検証             : python3-pytz-2017.2-9.el8.noarch                      5/25
  検証             : python36-3.6.8-2.module_el8.3.0+562+e162826a.x86_6    6/25
  検証             : augeas-libs-1.12.0-5.el8.x86_64                       7/25
  検証             : python3-chardet-3.0.4-7.el8.noarch                    8/25
  検証             : python3-pysocks-1.6.8-3.el8.noarch                    9/25
  検証             : python3-requests-2.20.0-2.1.el8_1.noarch             10/25
  検証             : python3-setuptools-39.2.0-6.el8.noarch               11/25
  検証             : python3-urllib3-1.24.2-4.el8.noarch                  12/25
  検証             : certbot-1.14.0-1.el8.noarch                          13/25
  検証             : python-josepy-doc-1.8.0-1.el8.noarch                 14/25
  検証             : python3-acme-1.14.0-1.el8.noarch                     15/25
  検証             : python3-certbot-1.14.0-1.el8.noarch                  16/25
  検証             : python3-certbot-apache-1.14.0-1.el8.noarch           17/25
  検証             : python3-configargparse-0.14.0-6.el8.noarch           18/25
  検証             : python3-josepy-1.8.0-1.el8.noarch                    19/25
  検証             : python3-parsedatetime-2.5-1.el8.noarch               20/25
  検証             : python3-pyrfc3339-1.1-1.el8.noarch                   21/25
  検証             : python3-requests-toolbelt-0.9.1-4.el8.noarch         22/25
  検証             : python3-zope-component-4.3.0-8.el8.noarch            23/25
  検証             : python3-zope-event-4.2.0-12.el8.noarch               24/25
  検証             : python3-zope-interface-4.6.0-1.el8.x86_64            25/25

インストール済み:
  augeas-libs-1.12.0-5.el8.x86_64
  certbot-1.14.0-1.el8.noarch
  python-josepy-doc-1.8.0-1.el8.noarch
  python3-acme-1.14.0-1.el8.noarch
  python3-augeas-0.5.0-12.el8.noarch
  python3-certbot-1.14.0-1.el8.noarch
  python3-certbot-apache-1.14.0-1.el8.noarch
  python3-chardet-3.0.4-7.el8.noarch
  python3-configargparse-0.14.0-6.el8.noarch
  python3-distro-1.4.0-2.module_el8.3.0+562+e162826a.noarch
  python3-josepy-1.8.0-1.el8.noarch
  python3-parsedatetime-2.5-1.el8.noarch
  python3-pip-9.0.3-18.el8.noarch
  python3-pyasn1-0.3.7-6.el8.noarch
  python3-pyrfc3339-1.1-1.el8.noarch
  python3-pysocks-1.6.8-3.el8.noarch
  python3-pytz-2017.2-9.el8.noarch
  python3-requests-2.20.0-2.1.el8_1.noarch
  python3-requests-toolbelt-0.9.1-4.el8.noarch
  python3-setuptools-39.2.0-6.el8.noarch
  python3-urllib3-1.24.2-4.el8.noarch
  python3-zope-component-4.3.0-8.el8.noarch
  python3-zope-event-4.2.0-12.el8.noarch
  python3-zope-interface-4.6.0-1.el8.x86_64
  python36-3.6.8-2.module_el8.3.0+562+e162826a.x86_64

完了しました!

SSL証明書取得

証明書の対象となるドキュメントルート、ドメイン名を指定して、SSL証明書の発行を要求します。連絡先メールアドレスなど、質問に適宜回答します。
・ドキュメントルート(例):/var/www/html
・ドメイン名(例):www.example.net
・連絡先mail(例):mail@example.net

[root@^ ~]# certbot certonly --apache -w /var/www/html -d www.example.net
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): mail@example.net

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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.
Requesting a certificate for www.example.net
Performing the following challenges:
http-01 challenge for www.example.net
Using the webroot path /var/www/html for all unmatched domains.
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/www.example.net/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/www.example.net/privkey.pem
   Your certificate will expire on 2021-08-01. To obtain a new or
   tweaked version of this certificate in the future, simply run
   certbot again. 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

これで、SSL証明書が /etc/letsencrypt/live/www.example.net に作成されました。

設定ファイルの編集

mod_sslをインストールした際に、SSL設定ファイル(ssl.conf)が作成されています。このファイルのバックアップを作成した後、「SSLCertificateFile」「SSLCertificateKeyFile」の項目をSSL証明書で取得した内容に修正します。

# フォルダ移動
[root@^ ~]# cd /etc/httpd/conf.d/

# バックアップ作成
[root@^ conf.d]# cp ssl.conf ssl.conf.bak

# 設定ファイル編集
[root@^ conf.d]# vi ssl.conf
---------------------------------------------------------------------------------
#SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateFile /etc/letsencrypt/live/www.example.net/fullchain.pem
#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCertificateKeyFile /etc/letsencrypt/live/www.example.net/privkey.pem
---------------------------------------------------------------------------------

# 確認
[root@^ conf.d]# httpd -t
Syntax OK

# 再起動
[root@^ conf.d]# systemctl restart httpd

WordPress設定の修正

WordPressの管理画面にログインし、ダッシュボードを開きます。
–> アクセス先:http://198.51.100.255/wordpress/wp-admin
または、http://www.example.net/wordpress/wp-admin

ダッシュボードのメニューで、「設定」>「一般」を選択し、「一般設定」の画面とします。この中で、「WordPressアドレス(URL)」「サイトアドレス(URL)」の項目を次のように変更して保存します。

以上でSSL化が完了です。上記アドレス(https://www.example.net)でアクセスできることを確認します。

OK !

SSL証明書の更新

SSL証明書の有効期間は90日間なので、この期限が満了する前に更新する必要があります。有効期間など、SSL証明書の情報は、certbot certificates コマンドで確認することができます。

[root@^ ~]# certbot certificates
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Found the following certs:
  Certificate Name: www.example.net
    Serial Number: 39e6・・・・・・・
    Key Type: RSA
    Domains: www.example.net
    Expiry Date: 2021-08-01 12:26:25+00:00 (VALID: 11 days)
    Certificate Path: /etc/letsencrypt/live/www.example.net/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/www.example.net/privkey.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

証明書の更新は、期限満了の30日前から行うことができます。更新は、certbot renew コマンドを実行するだけです。

[root@^ ~]# certbot renew
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/www.example.net.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Renewing an existing certificate for www.example.net

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all renewals succeeded:
  /etc/letsencrypt/live/www.example.net/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

更新が完了しました。

SSL証明書の削除

SSL証明書を削除するには、削除する証明書のpathを指定して、certbot revoke コマンドを実行します。

[root@^ ~]# certbot revoke --cert-path /etc/letsencrypt/live/www.example.net/cert.pem
Saving debug log to /var/log/letsencrypt/letsencrypt.log

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you like to delete the certificate(s) you just revoked, along with all
earlier and later versions of the certificate?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es (recommended)/(N)o: Y

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
The following certificate(s) are selected for deletion:

  * www.example.net

Are you sure you want to delete the above certificate(s)?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Deleted all files relating to certificate www.example.net.
Congratulations! You have successfully revoked the certificate that was located at /etc/letsencrypt/live/www.example.net/cert.pem.

参考

certbot ユーザーガイド
https化の手順
CentOS 8にLet’s Encrypt(Certbot)をインストールする方法



タイトルとURLをコピーしました