カテゴリー: Server

Amazon Linux 2でLet’s Encryptが使えない

はじめに

知人からタイトルのような質問をされました。
「そんなわけないだろ」と思い、(この時私には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のパッケージ管理はこいつを使ってやるようです。

$ 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の使い方にしたがって実行しました。

$ 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”

正直詳細なことは分かりませんが、上記を元にした手順を記載します。

# Python2系が必要です
$ python -V
Python 2.7.5
# pipもインストールしておきます
$ sudo yum install python-pip
# 指定のディレクトリにcertbotをダウンロードします
$ curl -OL https://dl.eff.org/certbot-auto

ダウンロードしたディレクトリ内にある `certbot-auto` というファイルを編集したいので、コピーをとっておきます。

$ cp certbot-auto certbot-auto.orig
$ vim certbot-auto
  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` オプションをつけた方が良さそうです。

./certbot-auto certonly --webroot -w path/to/webroot -d yourdomain --email --debug

さいごに

もし同様のことでお困りの方は試してみてはどうでしょうか?
(自己責任でお願い致します!)
Amazon Linux 2はもう少し知見がたまってから使っても良いのかもしれません。

naoki85

シェア
執筆者:
naoki85
タグ: AWS

最近の投稿

フロントエンドで動画デコレーション&レンダリング

はじめに 今回は、以下のように…

3週間 前

Goのクエリビルダー goqu を使ってみる

はじめに 最近携わっているとあ…

1か月 前

【Xcode15】プライバシーマニフェスト対応に備えて

はじめに こんにちは、suzu…

2か月 前

FSMを使った状態管理をGoで実装する

はじめに 一般的なアプリケーシ…

3か月 前