はじめに
知人からタイトルのような質問をされました。
「そんなわけないだろ」と思い、(この時私にはAmazon Linux 2の知識はほぼありませんでした。今もそんなにありません。)
手助けに入ったのですが、確かに普通にやったら面倒くさそうでした。
結論から申し上げますと、下記のページで対応できました。
本記事もこちらの内容を取り上げさせていただきたいと思います。
Help with certbot on the new “Amazon Linux 2”
Amazon Linux 2
2017年の12月くらいにリリースされたLinuxディストリビューションです。
Amazon Linux 2 のご紹介
Developers.IO 様で紹介されておりましたので、そちらの記事を貼らせていただきます。
【速報】AWS向けの新ディストリビューション Amazon Linux 2 を発表!
Amazon LinuxはRedhat6系のディストリビューションですが、Amazon Linux 2ではRedhat7系のようです。
Amazon Linux Extras Library
個人的にちょっとびっくりしていました。
Amazon Linux 2のパッケージ管理はこいつを使ってやるようです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ amazon-linux-extras 0 ansible2 disabled [ =2.4.2 ] 1 emacs disabled [ =25.3 ] 2 memcached1.5 disabled [ =1.5.1 ] 3 nginx1.12=latest disabled [ =1.12.2 ] 4 postgresql9.6 disabled [ =9.6.6 ] 5 python3 disabled [ =3.6.2 ] 6 redis4.0 disabled [ =4.0.5 ] 7 R3.4 disabled [ =3.4.3 ] 8 rust1 disabled [ =1.22.1 ] 9 vim disabled [ =8.0 ] 10 golang1.9 disabled [ =1.9.2 ] 11 ruby2.4 disabled [ =2.4.2 ] 12 nano disabled [ =2.9.1 ] 13 php7.2 disabled [ =7.2.0 ] 14 lamp-mariadb10.2-php7.2 disabled [ =10.2.10_7.2.0 ] |
よく使うパッケージが並んでいます。
デフォルトは disabled
なので、これを enabled
にして使用します。
ただEPELリポジトリは参照していないので、別途参照する必要があるようです。
Centos、RHEL、または Amazon Linux が実行されている Amazon EC2 インスタンスに対して EPEL リポジトリを有効にする方法を教えてください。
Let’s Encrypt
Let’s Encrypt 総合ポータル
自動化されたフローにより、SSL証明書を無料で発行してくれる機関(プロジェクトです。)
多くのWebサイトでHTTPS化が迫られていますが、無料でかつ簡便な方法でできるのは非常に助かります。
Certbotというクライアントソフトウェアもあるので、実際に使う際はそちらを使うことをオススメします。
Let’s Encrypt の使い方
本題
さて、本題になります。
上記のLet’s Encryptの使い方にしたがって実行しました。
1 2 3 4 5 6 7 8 9 |
$ curl https://dl.eff.org/certbot-auto -o $ chmod a+x certbot-auto $ ./certbot-auto' Sorry, I don't know how to bootstrap Certbot on your operating system! You will need to bootstrap, configure virtualenv, and run pip install manually. Please see https://letsencrypt.readthedocs.org/en/latest/contributing.html#prerequisites for more info. |
エラーが出ました。
なるほど、 virtualenv
と pip
がいるのかな?という感じで調べていました。
Notes on OS dependencies
ただPythonなんかを入れてもうまく動かず、途方にくれていたところで、はじめに紹介させていただいた記事を見つけました。
Help with certbot on the new “Amazon Linux 2”
正直詳細なことは分かりませんが、上記を元にした手順を記載します。
1 2 3 4 5 6 7 |
# Python2系が必要です $ python -V Python 2.7.5 # pipもインストールしておきます $ sudo yum install python-pip # 指定のディレクトリにcertbotをダウンロードします $ curl -OL https://dl.eff.org/certbot-auto |
ダウンロードしたディレクトリ内にある certbot-auto
というファイルを編集したいので、コピーをとっておきます。
1 2 |
$ cp certbot-auto certbot-auto.orig $ vim certbot-auto |
1 2 3 4 5 6 7 8 9 |
DeprecationBootstrap "macOS" BootstrapMac } BOOTSTRAP_VERSION="BootstrapMac $BOOTSTRAP_MAC_VERSION" - elif [ -f /etc/issue ] && grep -iq "Amazon Linux" /etc/issue ; then + elif grep -i "Amazon Linux" /etc/issue > /dev/null 2>&1 || \ + grep 'cpe:.*:amazon_linux:2' /etc/os-release > /dev/null 2>&1; then Bootstrap() { ExperimentalBootstrap "Amazon Linux" BootstrapRpmCommon } |
amazon_linux:2
でも判定が通るようにした感じですかね?
これで certbot-auto
コマンドが使えるはずです。
Amazon Linuxでは --debug
オプションをつけた方が良さそうです。
1 |
./certbot-auto certonly --webroot -w path/to/webroot -d yourdomain --email --debug |
さいごに
もし同様のことでお困りの方は試してみてはどうでしょうか?
(自己責任でお願い致します!)
Amazon Linux 2はもう少し知見がたまってから使っても良いのかもしれません。