Let’s Encrypt は無償でSSL/TLS証明書が発行できて、サービス開始当初からありがたく使わせてもらっています。
証明書の有効期限は90日と短いので、3か月ごとに更新が必要です。
cron 使って自動更新もできるので、さほど問題にはなりません。
ただ、ワイルドカードで使う場合は自動更新できないので手動で更新します。
AWS で EC2インスタンスを使って、Amazon Linux 2 で公開しているWebサイトで、もうすぐ期限を迎える証明書があるので、更新作業に着手。
しかし、ここで困ったことに・・・。
いつも通り、certbot-auto コマンドを実行したところ、以下のメッセージが表示され、更新できない。
1 2 3 4 |
Skipping bootstrap because certbot-auto is deprecated on this system. Your system is not supported by certbot-auto anymore. Certbot cannot be installed. Please visit https://certbot.eff.org/ to check for other alternatives. |
もともと、certbot-auto は Amazon Linux 2 を公式にサポートしていなかったんだけど、普通にインストールして、3か月前までは普通に使えてた。
それが急に使えなくなったので困ってしまった。
調べてみると、Amazon Linux 2 に限らず、どのOSでも certbot-auto のサポートをやめたみたい。
【参考】Let’s Encryptのコミュニティサイト
https://community.letsencrypt.org/t/certbot-auto-no-longer-works-on-debian-based-systems/139702/7
(意訳)おれら少人数だし、たくさんのOSに対応するの疲れたから、バージョン1.10.0のリリースをもってcertbot-auto のサポートやめるね。
さぁ困った。期限切れまであとわずか。
しかし、いつまでも困っていても困ってしまうので困るのはこれくらいにして、対処方法を探したところ、AWSの公式サイトで見つけました。
【参考】チュートリアル: Amazon Linux 2 に SSL/TLS を設定するhttps://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/SSL-on-amazon-linux-2.html#install
なんだ、結局 EPELリポジトリから certbot をインストールしたらいいみたい。
EPEL は Extra Packages for Enterprise Linux の略で、エンタープライズLinux用の高品質な追加パッケージセットが含まれているそうです。
で、早速やってみた。
ちなみに、今回はDNSプラグインもWebサーバーへの反映も要らないので、シンプルに EPELリポジトリから certbot だけインストールします。Snap はよくわからないし、馴染みがないので入れません。
まずは、Amazon Linux Extra コマンドで EPEL を有効化する。
1 |
amazon-linux-extras install -y epel |
EPEL が有効になったことを確認する。enabled になっていたら準備おっけー。
1 |
24 epel=latest enabled [ =7.11 =stable ] |
yumコマンドで certbot をインストールする。「certbot-auto」ではなく「certbot」です。
1 |
yum install certbot |
ちなみに、Apache使っている場合「python2-certbot-apache」、nginx使っている場合は「python2-certbot-nginx」をインストールするとある程度自動化できるらしい。
今回はワイルドカードの証明書を発行するため、自動化はしない。
ちなみに無事にインストールできたけど、依存関係のためたくさんのパッケージが入った。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Installed: certbot.noarch 0:1.11.0-1.el7 Dependency Installed: audit-libs-python.x86_64 0:2.8.1-3.amzn2.1 checkpolicy.x86_64 0:2.5-6.amzn2 libcgroup.x86_64 0:0.41-21.amzn2 libselinux-python.x86_64 0:2.5-12.amzn2.0.2 libsemanage-python.x86_64 0:2.5-11.amzn2 policycoreutils-python.x86_64 0:2.5-22.amzn2 pyOpenSSL.x86_64 0:0.13.1-3.amzn2.0.2 python-IPy.noarch 0:0.75-6.amzn2.0.1 python-ndg_httpsclient.noarch 0:0.3.2-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.amzn2.0.2 python2-acme.noarch 0:1.11.0-1.el7 python2-certbot.noarch 0:1.11.0-1.el7 python2-configargparse.noarch 0:0.11.0-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-pyrfc3339.noarch 0:1.1-3.el7 python2-six.noarch 0:1.9.0-0.el7 pytz.noarch 0:2016.10-2.amzn2.0.1 setools-libs.x86_64 0:3.3.8-2.amzn2.0.2 Complete! |
certbot コマンドのオプションはこんな感じ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - certbot [SUBCOMMAND] [options] [-d DOMAIN] [-d DOMAIN] ... Certbot can obtain and install HTTPS/TLS/SSL certificates. By default, it will attempt to use a webserver both for obtaining and installing the certificate. The most common SUBCOMMANDS and flags are: obtain, install, and renew certificates: (default) run Obtain & install a certificate in your current webserver certonly Obtain or renew a certificate, but do not install it renew Renew all previously obtained certificates that are near expiry enhance Add security enhancements to your existing configuration -d DOMAINS Comma-separated list of domains to obtain a certificate for (the certbot apache plugin is not installed) --standalone Run a standalone webserver for authentication (the certbot nginx plugin is not installed) --webroot Place files in a server's webroot folder for authentication --manual Obtain certificates interactively, or using shell script hooks -n Run non-interactively --test-cert Obtain a test certificate from a staging server --dry-run Test "renew" or "certonly" without saving any certificates to disk manage certificates: certificates Display information about certificates you have from Certbot revoke Revoke a certificate (supply --cert-name or --cert-path) delete Delete a certificate (supply --cert-name) manage your account: register Create an ACME account unregister Deactivate an ACME account update_account Update an ACME account --agree-tos Agree to the ACME server's Subscriber Agreement -m EMAIL Email address for important account notifications More detailed help: -h, --help [TOPIC] print this message, or detailed help on a topic; the available TOPICS are: all, automation, commands, paths, security, testing, or any of the subcommands or plugins (certonly, renew, install, register, nginx, apache, standalone, webroot, etc.) -h all print a detailed help page including all topics --version print the version number - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
ひとまず今回は EPELリポジトリから certbot をインストールするところまで。
次回はワイルドカードの証明書を対話形式で発行するまで書きます。