2015/11/24

CentOS6 で Let's Encrypt #letsencrypt

https がお手軽に使えるという letsencrypt を CentOS6.x で試そうとすると python2.7 の壁に当たる。CentOS6.x のデフォルトだと python のバージョンが 2.6 だから。そんでもって letsencrypt のスクリプトは対応が python2.7 からで python2.6 だとうまく動いてくれないという手厳しい状態になる。よっしゃ、じゃあ python2.7 入れたろかいと rpm 探すけど公式のは見当たらず、んじゃあソースからビルドしてみるかーっとやってみるけど今度は yum に怒られる(yum は pythonなのね)。いったん yum を忘れて突き進むものの、自分の力では letsencrypt が実行時にコピーする python のバイナリをどうしても 2.7 にすることができなくて断念した。

うわ、これは困った!

と思ったけど、CentOS には SCL という仕組みがあって、これを利用することで、公式に python2.7 を利用でき、letsencrypt も割とすんなり試すことができる。

SCL というのは、RedHat Software Collections の CentOS 版というもので、ひとことで言うと、CentOS ながら新しめのパッケージを利用するための仕組み。どこかの野良 yum リポジトリを追加したりすることなく、また、インストールしたパッケージは組み込みのものと切り離して利用できる。

### SCL インストール
$ sudo yum install centos-release-SCL

### python2.7
$ sudo yum install python27 python27-python-tools

### etc
$ sudo yum install dialog

ここまで準備できたらいよいよ Let's encrypt!

$ sudo su
# scl enable python27 bash
# cd /tmp
# git clone https://github.com/letsencrypt/letsencrypt
# cd letsencrypt
# ./letsencrypt-auto --verbose --agree-dev-preview --server https://acme-v01.api.letsencrypt.org/directory certonly

letsencrypt-auto を実行すると、GUI っぽいインタラクティブUI でもろもろ入力して進む。ACME プロトコルで認証が進むので、Webサーバがすでに稼動している場合、一時的に止める必要があったり、443 port を開けておく必要がある(もろもろ手順は日ごとに変わってるっぽいのでダイアログの指示に従って進めば OK)。

認証が完了すると、/etc/letsencrypt/archive/DOMAIN/ に証明書が作成されているので、あとは apache や nginx や h2o で設定を書いたら ssl 対応した webページが出来上がる。

取り急ぎベータで SSL 化できたぞーっと。https://bayashi.net/

とにもかくにも SCL++

see also

サイト内検索