知識の枝

"All is well"

ホームページの作り方⑦常時SSL接続化

約452日前 2020年8月31日21:57
デジタル
ホームページ Django SSL

改訂履歴


2020/8/31 投稿
2021/2/13 改訂1「3.3 - 有効期限延長方法」を追加


「ホームページの作り方」シリーズの第7章(最終章)です。

第1章・・・導入
第2章・・・準備
第3章・・・ベース作り
第4章・・・テンプレート適用
第5章・・・サーバー
第6章・・・ドメイン設定
第7章・・・常時SSL接続化Now


1. 前準備


6章を終えてドメイン名の設定が終わり、ドメインでホームページに接続できることが条件です。
まだの方は第6章の内容に沿ってドメイン設定を実施下さい。
6章へ



2. この章のゴール


ホームページの接続方式をセキュリティ向上の為にSSL化する。
URLの「http」が「https」になる。

3. https化


3.1 - Let's Encrypt


URLの最初には「http」もしくは「https」が付いてるサイトの2種類があります。
前者と後者の違いは「通信が暗号化されているか否か」という点です。

「http」で始まるサイトはChromeブラウザの場合、
URLの横に「保護されていない通信」という表示が出ます。



「https」で始まるサイトはURLの横に「鍵マーク」が表示されます。
※このホームページのURL欄の横にもついています。

このような個人型のブログの場合、訪問者の方が個人情報を入力する機会が無い為、
通信の暗号化は不要かもしれません。

しかし、「保護されていない通信」と出ているのも嫌なので私はhttps化を行いました。

https化の為には「サーバー証明書」というものの取得が必要です。
鍵マークをクリックすると、「証明書(有効)」と書いてあるのでクリックしてみましょう。

発行者「Let's Encrypt Authority X3」と書いてありますね。

サーバー証明書は様々な方法で取得することができるのですが、
その取得方法によっては費用が発生します。

ここで紹介する「Let's Encrypt」は費用が発生しない証明の1つで、
個人がSSL通信化の為に取得するには十分だと思います。

費用が発生するものとの違いについては下記サイトが詳しく説明しているので、
参考にさせて頂きましょう。
SSLは無料と有料で何が違うの!?

3.2 - 導入


Tera Termを起動してサーバーにアクセスしましょう。

証明書の取得に必要なものを2つインストールしていきます。
※どちらもインストール途中で「Is this ok [y/d/N]:」と聞かれるので、「y」と入力してエンターを押しましょう。
[user@IP ~]$ sudo yum install epel-release   #インストール完了まで時間が掛かります
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
epel/x86_64/metalink | 3.8 kB 00:00
epel-debuginfo/x86_64/metalink | 3.9 kB 00:00
epel-source/x86_64/metalink | 4.2 kB 00:00
* base: ty1.mirror.newmediaexpress.com
* epel: nrt.edge.kernel.org
* epel-debuginfo: nrt.edge.kernel.org
* epel-source: nrt.edge.kernel.org
* extras: ftp.iij.ad.jp
* updates: ftp.iij.ad.jp
base | 3.6 kB 00:00
epel | 4.7 kB 00:00
epel-debuginfo | 3.0 kB 00:00
epel-source | 3.5 kB 00:00
extras | 2.9 kB 00:00
ius | 1.3 kB 00:00
updates | 2.9 kB 00:00
(1/6): epel-debuginfo/x86_64/primary_db | 814 kB 00:00
(2/6): epel/x86_64/updateinfo | 1.0 MB 00:00
(3/6): epel-source/x86_64/updateinfo | 1.0 MB 00:00
(4/6): epel-source/x86_64/primary_db | 2.4 MB 00:00
(5/6): updates/7/x86_64/primary_db | 4.5 MB 00:00
(6/6): epel/x86_64/primary_db | 6.9 MB 00:00
Resolving Dependencies
--> Running transaction check
---> Package epel-release.noarch 0:7-11 will be updated
---> Package epel-release.noarch 0:7-12 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package Arch Version Repository Size
================================================================================
Updating:
epel-release noarch 7-12 epel 15 k

Transaction Summary
================================================================================
Upgrade 1 Package

Total download size: 15 k
Is this ok [y/d/N]: y #「y」と入力してエンターを押しましょう
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
epel-release-7-12.noarch.rpm | 15 kB 00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Updating : epel-release-7-12.noarch 1/2
warning: /etc/yum.repos.d/epel.repo created as /etc/yum.repos.d/epel.repo.rpmnew
Cleanup : epel-release-7-11.noarch 2/2
Verifying : epel-release-7-12.noarch 1/2
Verifying : epel-release-7-11.noarch 2/2

Updated:
epel-release.noarch 0:7-12

Complete!

2つ目です。
[user@IP ~]$ sudo yum install certbot python-certbot-apache   #こちらはすぐに終わります。
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: ty1.mirror.newmediaexpress.com
* epel: nrt.edge.kernel.org
* epel-debuginfo: nrt.edge.kernel.org
* epel-source: nrt.edge.kernel.org
* extras: ftp.iij.ad.jp
* updates: ftp.iij.ad.jp
Resolving Dependencies
--> Running transaction check
---> Package certbot.noarch 0:1.6.0-1.el7 will be installed
--> Processing Dependency: python2-certbot = 1.6.0-1.el7 for package: certbot-1.6.0-1.el7.noarch
---> Package python2-certbot-apache.noarch 0:1.6.0-1.el7 will be installed
--> Processing Dependency: python2-acme >= 0.29.0 for package: python2-certbot-apache-1.6.0-1.el7.noarch
--> Processing Dependency: mod_ssl for package: python2-certbot-apache-1.6.0-1.el7.noarch
--> Running transaction check
---> Package mod_ssl.x86_64 1:2.4.6-93.el7.centos will be installed
--> Processing Dependency: httpd = 2.4.6-93.el7.centos for package: 1:mod_ssl-2.4.6-93.el7.centos.x86_64
---> Package python2-acme.noarch 0:1.6.0-1.el7 will be installed
--> Processing Dependency: pyOpenSSL >= 0.13.1 for package: python2-acme-1.6.0-1.el7.noarch
--> Processing Dependency: python2-josepy >= 1.1.0 for package: python2-acme-1.6.0-1.el7.noarch
--> Processing Dependency: python-ndg_httpsclient for package: python2-acme-1.6.0-1.el7.noarch
--> Processing Dependency: python-requests-toolbelt for package: python2-acme-1.6.0-1.el7.noarch
--> Processing Dependency: python2-cryptography for package: python2-acme-1.6.0-1.el7.noarch
--> Processing Dependency: python2-pyasn1 for package: python2-acme-1.6.0-1.el7.noarch
--> Processing Dependency: python2-pyrfc3339 for package: python2-acme-1.6.0-1.el7.noarch
--> Processing Dependency: python2-six for package: python2-acme-1.6.0-1.el7.noarch
--> Processing Dependency: pytz for package: python2-acme-1.6.0-1.el7.noarch
---> Package python2-certbot.noarch 0:1.6.0-1.el7 will be installed
--> Processing Dependency: python-parsedatetime >= 1.3 for package: python2-certbot-1.6.0-1.el7.noarch
--> Processing Dependency: python2-configargparse >= 0.9.3 for package: python2-certbot-1.6.0-1.el7.noarch
--> Processing Dependency: python2-distro >= 1.0.1 for package: python2-certbot-1.6.0-1.el7.noarch
--> Processing Dependency: python-zope-component for package: python2-certbot-1.6.0-1.el7.noarch
--> Processing Dependency: python-zope-interface for package: python2-certbot-1.6.0-1.el7.noarch
--> Processing Dependency: python2-mock for package: python2-certbot-1.6.0-1.el7.noarch
--> Running transaction check
---> Package httpd.x86_64 0:2.4.6-90.el7.centos will be updated
---> Package httpd.x86_64 0:2.4.6-93.el7.centos will be an update
--> Processing Dependency: httpd-tools = 2.4.6-93.el7.centos for package: httpd-2.4.6-93.el7.centos.x86_64
---> Package pyOpenSSL.x86_64 0:0.13.1-4.el7 will be installed
---> Package python-ndg_httpsclient.noarch 0:0.3.2-1.el7 will be installed
---> Package python-requests-toolbelt.noarch 0:0.8.0-3.el7 will be installed
---> Package python-zope-component.noarch 1:4.1.0-5.el7 will be installed
--> Processing Dependency: python-zope-event for package: 1:python-zope-component-4.1.0-5.el7.noarch
---> Package python-zope-interface.x86_64 0:4.0.5-4.el7 will be installed
---> Package python2-configargparse.noarch 0:0.11.0-2.el7 will be installed
---> Package python2-cryptography.x86_64 0:1.7.2-2.el7 will be installed
--> Processing Dependency: python-idna >= 2.0 for package: python2-cryptography-1.7.2-2.el7.x86_64
--> Processing Dependency: python-cffi >= 1.4.1 for package: python2-cryptography-1.7.2-2.el7.x86_64
--> Processing Dependency: python-enum34 for package: python2-cryptography-1.7.2-2.el7.x86_64
---> Package python2-distro.noarch 0:1.2.0-3.el7 will be installed
---> Package python2-josepy.noarch 0:1.3.0-2.el7 will be installed
---> Package python2-mock.noarch 0:1.0.1-10.el7 will be installed
---> Package python2-parsedatetime.noarch 0:2.4-6.el7 will be installed
--> Processing Dependency: python2-future for package: python2-parsedatetime-2.4-6.el7.noarch
---> Package python2-pyasn1.noarch 0:0.1.9-7.el7 will be installed
---> Package python2-pyrfc3339.noarch 0:1.1-3.el7 will be installed
---> Package python2-six.noarch 0:1.9.0-0.el7 will be installed
---> Package pytz.noarch 0:2016.10-2.el7 will be installed
--> Running transaction check
---> Package httpd-tools.x86_64 0:2.4.6-90.el7.centos will be updated
---> Package httpd-tools.x86_64 0:2.4.6-93.el7.centos will be an update
---> Package python-cffi.x86_64 0:1.6.0-5.el7 will be installed
--> Processing Dependency: python-pycparser for package: python-cffi-1.6.0-5.el7.x86_64
---> Package python-enum34.noarch 0:1.0.4-1.el7 will be installed
---> Package python-idna.noarch 0:2.4-1.el7 will be installed
---> Package python-zope-event.noarch 0:4.0.3-2.el7 will be installed
---> Package python2-future.noarch 0:0.18.2-2.el7 will be installed
--> Running transaction check
---> Package python-pycparser.noarch 0:2.14-1.el7 will be installed
--> Processing Dependency: python-ply for package: python-pycparser-2.14-1.el7.noarch
--> Running transaction check
---> Package python-ply.noarch 0:3.4-11.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package Arch Version Repository
Size
================================================================================
Installing:
certbot noarch 1.6.0-1.el7 epel 44 k
python2-certbot-apache noarch 1.6.0-1.el7 epel 138 k
Installing for dependencies:
mod_ssl x86_64 1:2.4.6-93.el7.centos base 113 k
pyOpenSSL x86_64 0.13.1-4.el7 base 135 k
python-cffi x86_64 1.6.0-5.el7 base 218 k
python-enum34 noarch 1.0.4-1.el7 base 52 k
python-idna noarch 2.4-1.el7 base 94 k
python-ndg_httpsclient noarch 0.3.2-1.el7 epel 43 k
python-ply noarch 3.4-11.el7 base 123 k
python-pycparser noarch 2.14-1.el7 base 104 k
python-requests-toolbelt noarch 0.8.0-3.el7 epel 78 k
python-zope-component noarch 1:4.1.0-5.el7 epel 228 k
python-zope-event noarch 4.0.3-2.el7 epel 79 k
python-zope-interface x86_64 4.0.5-4.el7 base 138 k
python2-acme noarch 1.6.0-1.el7 epel 81 k
python2-certbot noarch 1.6.0-1.el7 epel 374 k
python2-configargparse noarch 0.11.0-2.el7 epel 31 k
python2-cryptography x86_64 1.7.2-2.el7 base 502 k
python2-distro noarch 1.2.0-3.el7 epel 29 k
python2-future noarch 0.18.2-2.el7 epel 806 k
python2-josepy noarch 1.3.0-2.el7 epel 89 k
python2-mock noarch 1.0.1-10.el7 epel 92 k
python2-parsedatetime noarch 2.4-6.el7 epel 78 k
python2-pyasn1 noarch 0.1.9-7.el7 base 100 k
python2-pyrfc3339 noarch 1.1-3.el7 epel 16 k
python2-six noarch 1.9.0-0.el7 epel 2.9 k
pytz noarch 2016.10-2.el7 base 46 k
Updating for dependencies:
httpd x86_64 2.4.6-93.el7.centos base 2.7 M
httpd-tools x86_64 2.4.6-93.el7.centos base 92 k

Transaction Summary
================================================================================
Install 2 Packages (+25 Dependent packages)
Upgrade ( 2 Dependent packages)

Total download size: 6.5 M
Is this ok [y/d/N]: y #「y」と入力してエンターを押しましょう
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
(1/29): certbot-1.6.0-1.el7.noarch.rpm | 44 kB 00:00
(2/29): httpd-tools-2.4.6-93.el7.centos.x86_64.rpm | 92 kB 00:00
(3/29): mod_ssl-2.4.6-93.el7.centos.x86_64.rpm | 113 kB 00:00
(4/29): pyOpenSSL-0.13.1-4.el7.x86_64.rpm | 135 kB 00:00
(5/29): httpd-2.4.6-93.el7.centos.x86_64.rpm | 2.7 MB 00:00
(6/29): python-enum34-1.0.4-1.el7.noarch.rpm | 52 kB 00:00
(7/29): python-cffi-1.6.0-5.el7.x86_64.rpm | 218 kB 00:00
(8/29): python-pycparser-2.14-1.el7.noarch.rpm | 104 kB 00:00
(9/29): python-ply-3.4-11.el7.noarch.rpm | 123 kB 00:00
(10/29): python-idna-2.4-1.el7.noarch.rpm | 94 kB 00:00
(11/29): python-ndg_httpsclient-0.3.2-1.el7.noarch.rpm | 43 kB 00:00
(12/29): python-zope-component-4.1.0-5.el7.noarch.rpm | 228 kB 00:00
(13/29): python-requests-toolbelt-0.8.0-3.el7.noarch.rpm | 78 kB 00:00
(14/29): python-zope-event-4.0.3-2.el7.noarch.rpm | 79 kB 00:00
(15/29): python2-acme-1.6.0-1.el7.noarch.rpm | 81 kB 00:00
(16/29): python2-certbot-apache-1.6.0-1.el7.noarch.rpm | 138 kB 00:00
(17/29): python-zope-interface-4.0.5-4.el7.x86_64.rpm | 138 kB 00:00
(18/29): python2-configargparse-0.11.0-2.el7.noarch.rpm | 31 kB 00:00
(19/29): python2-distro-1.2.0-3.el7.noarch.rpm | 29 kB 00:00
(20/29): python2-future-0.18.2-2.el7.noarch.rpm | 806 kB 00:00
(21/29): python2-certbot-1.6.0-1.el7.noarch.rpm | 374 kB 00:00
(22/29): python2-josepy-1.3.0-2.el7.noarch.rpm | 89 kB 00:00
(23/29): python2-pyasn1-0.1.9-7.el7.noarch.rpm | 100 kB 00:00
(24/29): python2-mock-1.0.1-10.el7.noarch.rpm | 92 kB 00:00
(25/29): python2-pyrfc3339-1.1-3.el7.noarch.rpm | 16 kB 00:00
(26/29): python2-six-1.9.0-0.el7.noarch.rpm | 2.9 kB 00:00
(27/29): pytz-2016.10-2.el7.noarch.rpm | 46 kB 00:00
(28/29): python2-parsedatetime-2.4-6.el7.noarch.rpm | 78 kB 00:00
(29/29): python2-cryptography-1.7.2-2.el7.x86_64.rpm | 502 kB 00:00
--------------------------------------------------------------------------------
Total 5.5 MB/s | 6.5 MB 00:01
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : python2-pyasn1-0.1.9-7.el7.noarch 1/31
Installing : pyOpenSSL-0.13.1-4.el7.x86_64 2/31
Installing : python2-pyrfc3339-1.1-3.el7.noarch 3/31
Installing : python-zope-interface-4.0.5-4.el7.x86_64 4/31
Installing : pytz-2016.10-2.el7.noarch 5/31
Installing : python2-six-1.9.0-0.el7.noarch 6/31
Installing : python-ndg_httpsclient-0.3.2-1.el7.noarch 7/31
Installing : python-zope-event-4.0.3-2.el7.noarch 8/31
Installing : 1:python-zope-component-4.1.0-5.el7.noarch 9/31
Updating : httpd-tools-2.4.6-93.el7.centos.x86_64 10/31
Updating : httpd-2.4.6-93.el7.centos.x86_64 11/31
Installing : 1:mod_ssl-2.4.6-93.el7.centos.x86_64 12/31
Installing : python2-mock-1.0.1-10.el7.noarch 13/31
Installing : python-ply-3.4-11.el7.noarch 14/31
Installing : python-pycparser-2.14-1.el7.noarch 15/31
Installing : python-cffi-1.6.0-5.el7.x86_64 16/31
Installing : python2-distro-1.2.0-3.el7.noarch 17/31
Installing : python2-future-0.18.2-2.el7.noarch 18/31
Installing : python2-parsedatetime-2.4-6.el7.noarch 19/31
Installing : python2-configargparse-0.11.0-2.el7.noarch 20/31
Installing : python-requests-toolbelt-0.8.0-3.el7.noarch 21/31
Installing : python-enum34-1.0.4-1.el7.noarch 22/31
Installing : python-idna-2.4-1.el7.noarch 23/31
Installing : python2-cryptography-1.7.2-2.el7.x86_64 24/31
Installing : python2-josepy-1.3.0-2.el7.noarch 25/31
Installing : python2-acme-1.6.0-1.el7.noarch 26/31
Installing : python2-certbot-1.6.0-1.el7.noarch 27/31
Installing : certbot-1.6.0-1.el7.noarch 28/31
Installing : python2-certbot-apache-1.6.0-1.el7.noarch 29/31
Cleanup : httpd-2.4.6-90.el7.centos.x86_64 30/31
Cleanup : httpd-tools-2.4.6-90.el7.centos.x86_64 31/31
Verifying : python-idna-2.4-1.el7.noarch 1/31
Verifying : python2-six-1.9.0-0.el7.noarch 2/31
Verifying : pytz-2016.10-2.el7.noarch 3/31
Verifying : python-ndg_httpsclient-0.3.2-1.el7.noarch 4/31
Verifying : httpd-2.4.6-93.el7.centos.x86_64 5/31
Verifying : python-enum34-1.0.4-1.el7.noarch 6/31
Verifying : 1:python-zope-component-4.1.0-5.el7.noarch 7/31
Verifying : python-requests-toolbelt-0.8.0-3.el7.noarch 8/31
Verifying : python2-configargparse-0.11.0-2.el7.noarch 9/31
Verifying : python2-future-0.18.2-2.el7.noarch 10/31
Verifying : python-zope-interface-4.0.5-4.el7.x86_64 11/31
Verifying : python2-acme-1.6.0-1.el7.noarch 12/31
Verifying : python2-distro-1.2.0-3.el7.noarch 13/31
Verifying : python2-josepy-1.3.0-2.el7.noarch 14/31
Verifying : python-pycparser-2.14-1.el7.noarch 15/31
Verifying : certbot-1.6.0-1.el7.noarch 16/31
Verifying : 1:mod_ssl-2.4.6-93.el7.centos.x86_64 17/31
Verifying : python-cffi-1.6.0-5.el7.x86_64 18/31
Verifying : python-ply-3.4-11.el7.noarch 19/31
Verifying : pyOpenSSL-0.13.1-4.el7.x86_64 20/31
Verifying : python2-mock-1.0.1-10.el7.noarch 21/31
Verifying : httpd-tools-2.4.6-93.el7.centos.x86_64 22/31
Verifying : python2-certbot-1.6.0-1.el7.noarch 23/31
Verifying : python-zope-event-4.0.3-2.el7.noarch 24/31
Verifying : python2-pyrfc3339-1.1-3.el7.noarch 25/31
Verifying : python2-pyasn1-0.1.9-7.el7.noarch 26/31
Verifying : python2-certbot-apache-1.6.0-1.el7.noarch 27/31
Verifying : python2-parsedatetime-2.4-6.el7.noarch 28/31
Verifying : python2-cryptography-1.7.2-2.el7.x86_64 29/31
Verifying : httpd-tools-2.4.6-90.el7.centos.x86_64 30/31
Verifying : httpd-2.4.6-90.el7.centos.x86_64 31/31

Installed:
certbot.noarch 0:1.6.0-1.el7 python2-certbot-apache.noarch 0:1.6.0-1.el7

Dependency Installed:
mod_ssl.x86_64 1:2.4.6-93.el7.centos
pyOpenSSL.x86_64 0:0.13.1-4.el7
python-cffi.x86_64 0:1.6.0-5.el7
python-enum34.noarch 0:1.0.4-1.el7
python-idna.noarch 0:2.4-1.el7
python-ndg_httpsclient.noarch 0:0.3.2-1.el7
python-ply.noarch 0:3.4-11.el7
python-pycparser.noarch 0:2.14-1.el7
python-requests-toolbelt.noarch 0:0.8.0-3.el7
python-zope-component.noarch 1:4.1.0-5.el7
python-zope-event.noarch 0:4.0.3-2.el7
python-zope-interface.x86_64 0:4.0.5-4.el7
python2-acme.noarch 0:1.6.0-1.el7
python2-certbot.noarch 0:1.6.0-1.el7
python2-configargparse.noarch 0:0.11.0-2.el7
python2-cryptography.x86_64 0:1.7.2-2.el7
python2-distro.noarch 0:1.2.0-3.el7
python2-future.noarch 0:0.18.2-2.el7
python2-josepy.noarch 0:1.3.0-2.el7
python2-mock.noarch 0:1.0.1-10.el7
python2-parsedatetime.noarch 0:2.4-6.el7
python2-pyasn1.noarch 0:0.1.9-7.el7
python2-pyrfc3339.noarch 0:1.1-3.el7
python2-six.noarch 0:1.9.0-0.el7
pytz.noarch 0:2016.10-2.el7

Dependency Updated:
httpd.x86_64 0:2.4.6-93.el7.centos httpd-tools.x86_64 0:2.4.6-93.el7.centos

Complete!

インストールが終わったら/etc/httpd/conf.d/フォルダ内に
「wsgi.conf」を作成して設定を書き込みます。
[user@IP ~]$ sudo vi /etc/httpd/conf.d/wsgi.conf

viエディタが起動したら、下記内容を書き込みましょう。
※「homepage」の部分は、あなたがDjangoフォルダ内に作成したホームぺージ用フォルダの名前です。
LoadModule wsgi_module /home/username/test_django/lib/python3.6/site-packages/mod_wsgi/server/mod_wsgi-py36.cpython-36m-x86_64-linux-gnu.so
WSGIPythonPath /home/django/homepage
WSGIScriptAlias / /home/django/homepage/config/wsgi.py

<VirtualHost *:80>
DocumentRoot /home/django/homepage/
ServerName あなたのドメイン名(http://以降の部分)
ServerAlias あなたのドメイン名

<Directory /home/django/homepage/config>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>

Alias /static/ /home/django/homepage/static/
<Directory /home/django/homepage/static/>
Require all granted
</Directory>

設定が書き終わったら「:wq」で上書き保存をしましょう。

では証明書を取得していきます。
下記コマンドを実行下さい。
[user@IP ~]$ sudo 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): #メールアドレスを聞かれるので入力しましょう
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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 at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A #「A」と入力してエンターを押します

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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 #「Y」と入力してエンターを押します

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: abc.com #ここにあなたのドメイン名が表示されます。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1 #「1」と入力してエンターを押します。
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for ドメイン名
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/httpd/conf.d/wsgi-le-ssl.conf
Deploying Certificate to VirtualHost /etc/httpd/conf.d/wsgi-le-ssl.conf
Redirecting vhost in /etc/httpd/conf.d/wsgi.conf to ssl vhost in /etc/httpd/conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://ドメイン名
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Subscribe to the EFF mailing list (email: あなたのメールアドレス).
Starting new HTTPS connection (1): supporters.eff.org

IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/ドメイン名/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/ドメイン名/privkey.pem
Your cert will expire on 2020-11-21. 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

完了したら最後にfirewallの設定でhttps接続を許可します。
【許可前のfirewallの設定】
[user@IP ~]$ sudo firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client http ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

下記3つのコマンドで設定を書き換えていきます。
[user@IP ~]$ sudo firewall-cmd --add-port=443/tcp --zone=public --permanent
success
[user@IP ~]$ sudo firewall-cmd --add-service=https --zone=public --permanent
success
[user@IP ~]$ sudo firewall-cmd --reload
success

【許可後のfirewallの設定】
[user@IP ~]$ sudo firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client http https ssh #「https」が追加されました
ports: 443/tcp #「443/tcp」が追加されました
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:

これでhttps化の設定は完了です!


改訂1

3.3 - 有効期限延長方法


今回紹介した「Let's Encrypt」の証明書の有効期限は3ヵ月となっています。
3ヵ月を過ぎると証明書の有効期限切れとなり、せっかくhttps化したのにhttpに戻ってしまいます。

期限が切れる前に手動 or 自動で更新する方法があるので紹介します。


■手動で更新する方法
有効期限の残り日数が20日を下回ると下記コマンドの実行で延長ができます。
[user@IP ~]$ sudo certbot renew

有効期限が20日以上残っていると下記メッセージが出て更新されません。
「Cert not yet due for renewal」

どうしても今更新したいんだ!という方、下記コマンドで強制的に更新可能です。
[user@IP ~]$ sudo certbot renew --force-renew

問題無く更新が成功すると思います。

更新を行った日から3ヵ月後が次の有効期限となりますので、
定期的な更新を忘れないように気を付けましょう!


■自動で更新する方法
とはいっても更新を忘れてしまうこともありえます。
そんなときは上記の更新コマンドを定期的に自動で実行する方法があります。

下記の記事で紹介していますので、ぜひご覧になってください。
「crontab」コマンドで定期作業を自動化
私は自動更新設定を行っています。

更新忘れの心配もなく、3ヵ月の有効期限が実質無いようなものですね。
余裕があれば設定しておきましょう。後が楽ですから。



4. 動作確認


自分のホームページにアクセスしましょう。
URLは「https://ドメイン名」です。

どうですか?URLの横に鍵マークが表示されていますか?
表示されていたらhttps化成功です。

5. 全体のまとめ


みなさんここまでお疲れ様でした。
私も動作確認を行いながら記事を作成しましたが、
一部確認が取れておらず、正しく動作するか怪しい箇所がございます。
(特にこの章certbot --apacheの部分)

もし上手く動作しない 等ありましたら、コメントにてお知らせ願います。
調査後、内容を改定します。

無事ホームページが完成したみなさん、すごいです!
知識ゼロの私がここまで辿り着くのに結構な時間が掛かりました。

私のような初心者が簡単にホームページを作れたらと思いこのシリーズを作成しました。
少しでも役に立てていれば幸いです。ありがとうございました。