CentOS7のサーバーに無料SSLのLet's Encryptをインストールする方法をまとめました。
現在は、Certbotを使って、誰でも簡単にインストールできるようになっているので、
まだSSLを導入されていない方は試してみて下さい。
コンテンツ
Certbotをインストール
Certbotについて
Certbotとは、Let's Encryptが発行する無料SSLの証明書を簡単に取得できるようしてくれるソフトウェアです。
Certbotのコマンドを使って誰でも簡単にインストールできるようになったので、
非常にありがたいソフトウェアです。
Certbotのインストール方法については、ディストリビューションごとに以下のサイトに記載されています。
[ Certbot クライアントのインストール - Let's Encrypt 総合ポータル ]
一応、こちらのブログでも、CentOS7環境へのインストール方法については記載しておきます。
↓
【CentOS7】EPELリポジトリからCertbotをインストール
EPELリポジトリにCertbotが含まれているので、そちらを利用してインストールします。
これで、Certbotのインストールは完了です!
証明書のインストール
証明書を発行
※「-w」の後ろの「/var/www/html」の箇所は、実際に証明書を発行するドメインの公開ディレクトリに変更して下さい。
※「-d」の後ろの「example.com」の箇所は、実際に証明書を発行するドメイン名に変更して下さい。
※「-m」の後ろの「info@example.com」は、ご自分のメールアドレスに変更して下さい。
これで証明書の発行は完了です。
もし、エイリアス(www)あり、なし両方のドメインに対してSSLの設定を行う場合には、
「-d example.com -d www.example.com」として下さい。
※「-d」というオプションを増やすことで、複数のドメインを指定することができます。
↓
正常に終了すれば、以下のようなメッセージが表示されます。
・
・
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/eep-dcorenet.demo.jp/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on 2020-01-23. 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
で、以下の4つのファイルが作成されていることを確認できれば、OKです。
↓
cert.pem -> ../../archive/example.com/cert1.pem
chain.pem -> ../../archive/example.com/chain1.pem
fullchain.pem -> ../../archive/example.com/fullchain1.pem
privkey.pem -> ../../archive/example.com/privkey1.pem
このあとは、Apacheのconfファイルを編集して、証明書を読み込めるように設定します。
↓
証明書をインストール
それでは、発行した証明書をApacheから読み込めるようにインストールしてきます。
で、以下を追記します。
<VirtualHost 162.133.263.158:443> ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/html CustomLog /var/log/httpd/ssl.example.com-access_log combined ErrorLog /var/log/httpd/ssl.example.com-error_log SSLEngine on SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem <Directory "/var/www/html"> AllowOverride All Require all granted </Directory> </VirtualHost>
「162.133.263.158」の部分はダミーのIPアドレスなので、ご自分のサーバーのIPアドレスに変えて下さい。
また、「/var/www/html」や「example.com」も、各自の環境のものに変更して下さい。
あとは、念の為に、httpd.confに記述した内容の構文チェックを行い、
問題が無ければ、Apacheの再起動を行います。
「Syntax OK」と表示されればOK。
これで、証明書のインストールまで完了しました。
最後は、
https://example.com/
と
https://www.example.com/
にアクセスしてみて下さい。
画面が正常に表示されればOKです。
HTTPS通信で画面が表示されない場合
※上記で正常に画面が表示されている場合は、この項目は読み飛ばして下さい。
もし、
https://example.com/
や
https://www.example.com/
で画面が表示されない場合ですが、
・どこかの時点で間違った設定を行っているか、
・HTTPSの通信で使用するポート番号「443」が許可されていない
といった可能性もあります。
まずは、設定内容を見直して、間違っている個所がないかの確認を行って下さい。
特に問題が無さそうであれば、
ポート番号が許可されているか確認を行って下さい。
「dhcpv6-client・・・」の後ろに、「https」が無ければ、HTTPS通信が許可されていません。
↓
「tcp dpt:443」や「tcp spt:443」の記述が無ければ、HTTPS通信が許可されていません。
許可されていない場合は、ポートを開放する必要があります。
方法については、以下にまとめておきます。
※因みに、
例えば、「mod_sslが有効になっていない」など、他にも、理由はいろいろと考えられます。
その辺は、今回は説明しないので、調べてみて下さい。
ファイアウォールでHTTPS(443番ポート)を開放する方法
■「firewalld」を使用している場合
■「iptables」を使用している場合
これで、完了です。
証明書の自動更新設定
Let's Encryptは、90日毎に更新作業が必要になります。
が、その都度、更新の作業を行うのは手間です。
そこで、自動で更新されるように設定を行っておきます。
certbot-renew.timerを使って証明書の自動更新設定を行う
以前は、Cronを使って自動更新の設定を行っていたのですが、
今は、EPELリポジトリのCertbotに付いている「certbot-renew.timer」を利用して設定することが可能です。
↓
以下が追加されていればOKです。
NEXT LEFT LAST PASSED UNIT ACTIVATES
Sat 2019-09-29 11:12:44 JST 16h left n/a n/a certbot-renew.timer certbot-renew.service
Cronを使って証明書の自動更新設定を行う
念の為、Cronを使った証明書の自動更新設定についても、方法をまとめておきます。
今回は、デイリーのCronに更新用のコマンドを設定します。
として、以下を記述します。
certbot renew --post-hook "systemctl restart httpd.service"
これで完了です。
簡単ですね。
この記事へのコメントはありません。