【無料SSL化】EC2でLet's EncryptのSSLサーバ証明書を取得する
環境
・ec2(Amazon Linux2)
・Apache2.4
すでにやってある事と想定
・ec2にウェブサーバApacheはインストール済み、独自ドメインは取得済み、DNSのAレコードは設定済みで、「http://(独自ドメイン)」にアクセスできる状態。
・epelインストール済み
・ELBやACMは使わない。1つのec2での運用を想定。ec2にあるApacheにSSL証明書を導入してSSL化する。
Let's EncryptのSSL証明書を初めて取得する
apacheの拡張モジュールmod_sslをインストールする。自分の環境ではopensslは最初から入っていましたが、opensslがないならインストールも必要だと思います。
$ sudo yum -y install mod_ssl
続いて、Let's EncryptのSSL証明書を取得するためにcertbotをインストールする。
$ sudo yum -y install certbot
そして、Let's EncryptのSSL証明書等を取得します。
ここでは、(独自ドメイン)と(www.独自ドメイン)
をSSL化して、https://(独自ドメイン)とhttps://(www.独自ドメイン)
でアクセスできるようにします。
あと、下のコマンドはApacheは起動したままだとエラーが出たので、停止してから実行しました。
$ sudo certbot certonly --standalone -d (独自ドメイン) -d (www.独自ドメイン) -m (EMAIL)
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator standalone, Installer None
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for (独自ドメイン)
http-01 challenge for (www.独自ドメイン)
Waiting for verification...
Cleaning up challenges
〜
これで問題なくできていれば、SSLサーバ証明書(中間証明書込み)と秘密鍵が以下のパスに生成されます(下のパスはシンボリックリンク)。
#SSLサーバ証明書(中間証明書込み)、
/etc/letsencrypt/live/(独自ドメイン)/fullchain.pem
#秘密鍵
/etc/letsencrypt/live/(独自ドメイン)/privkey.pem
続いて、取得したSSLサーバ証明書と秘密鍵をApacheに導入するためにssl.confファイルを編集します。編集箇所は2箇所です。
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
とSSLCertificateKeyFile /etc/pki/tls/private/localhost.key
の2行をコメントアウトし、取得したSSLサーバ証明書と秘密鍵のパスを新しく指定します。
#SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateFile /etc/letsencrypt/live/(独自ドメイン)/fullchain.pem
#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCertificateKeyFile /etc/letsencrypt/live/(独自ドメイン)/privkey.pem
以上で終了ですので、Apacheを起動します。
アクセスするとブラウザのURLの左に鍵アイコンができていて、証明書を見るとLet's Encryptとなっていました。
Let's EncryptのSSL証明書の更新(再取得)をcronで自動化(2回目以降)
Let's EncryptのSSL証明書の有効期限は3ヶ月なので、有効期限が切れる前にSSL証明書を取得し直す必要があります。
SSL証明書の更新処理は自動化したいので、cronで設定しました。
$ crontab -l
5 5 2,17 * * sudo certbot renew --pre-hook "systemctl stop httpd" --post-hook "systemctl start httpd"
月2回(2日と17日)、5時5分に実行するようにしています。日にちや時刻は適当です。
月2回実行しているのは、更新処理を失敗したときなどを考えて余裕を持つためです。
SSL証明書の再取得は、証明書の有効期限が1ヶ月を切らないとできませんが、1ヶ月以上ある時に取得処理を申請してもスルーされるだけなので、問題ないでしょう。
あと、上のコマンドでは、--pre-hookでApacheを停止してからcertbot renewコマンドを実行して、--post-hookでApahceを起動しなおしています。
これで設定は完了です。あとは実際にcronが実行してくれて、SSL証明書を再取得してくれることを祈るのみです。
参考サイト
Let’s Encrypt
Certbot
Let’s EncryptにSSL証明書の取得の申請し、ウェブサイトをSSL化する【無料で初めてのhttps】
Let’s EncryptのSSL証明書を更新する(手動と自動更新)
Author And Source
この問題について(【無料SSL化】EC2でLet's EncryptのSSLサーバ証明書を取得する), 我々は、より多くの情報をここで見つけました https://qiita.com/matsu_qiita/items/c93484ed917016d6b57e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .