Let’s Encrypt あらため certbot でSSL証明書インストール

この記事は古いです。現在ではほとんどのLinux Distributions がcertbotのパッケージをサポートしているはずですので、そちらを使ってください。
カスタムで設定を入れる必要があるとすると、証明書が更新した後に該当するサービス(dovecot, postfix など)をどうやってリロードするかだと思います。
これは、/etc/letsencrypt/renewal-hooks/post  に 100-dovecot のようなファイルを作って、
/bin/systemctl restart dovecot.service
のような形で設定すればOKだと思います。

Let’s Encrypt がついにβフェーズを終わって正式リリースされました。そして、EFF提供のcertbotになりました。

インストールと設定も、βのころに比べると格段に楽になりました。

まず、https://certbot.eff.org/ に行ってください。すると、Web Server と OS を選ぶ画面が出てきます。

Certbot Front Screen
図)自分が使っているWeb ServerとOSを指定すると、インストラクションが出てくる。

ここで、自分の使っている Webserver と OS を選ぶと、お使いの環境ごとのマニュアルが出てきます(英語ですが)ので、それに従うだけです。たとえば、Apache + Ubuntu 14.04 だと、

$ wget https://dl.eff.org/certbot-auto
$ chmod a+x certbot-auto

で、certbot のインストールファイルを落としてきて権限変更し、

$ ./certbot-auto

とすることで、certobot のインストールができます。

certbotのインストールが終わったら、証明書のインストールです。Apacheを使っている場合は、

$ ./path/to/certbot-auto --apache

でできます。使い勝手はほぼ Let’s encrypt と同じです。

自動更新の設定は?

さて、ここまで来ると、証明書の自動更新をしたく成るのが人情というものです。ドキュメンテーションを読むと、cronに登録して1日2回更新リクエストを走らせるのがおすすめのようです。(走らせても、証明書が更新時期になければ何もしません。)

ところがですね、Ubuntu などでは、root では certbot は動作しません。一般ユーザで実行しなければなりませんが、それだとパスワードを入れなければならなくて困りますよね。これを回避するには、Certbotをインストールしたユーザが「foo」である場合、

$ sudo visudo

して、/etc/sudoersに以下の記述を追加します。

foo ALL=(root) NOPASSWD:SETENV: /home/foo/.local/share/letsencrypt/bin/letsencrypt

下線を入れた「foo」は、Certbotをインストールしたユーザ名で置き換えてください。これで、certbot-autoしてもパスワードを聞かれなくなったはずです。レッツ・トライ。

/home/foo/certbot-auto renew –dry-run

どうです、パスワードを聞かれずに、上手く行きましたか?上手くいったなら、Crontabへの登録です。

$ crontab -e

して、以下のような感じで記入します。(以下の例では、毎日3:45, 15:45 の2回走らせるようにしています。この時間は皆がランダムにするべきですので、適当に変えてください。)

45 3,15 * * * /home/foo/certbot-auto renew –quiet –no-self-upgrade

番外編:ついでに、Courier MTA のSSL certs も切り替えてみよう

さて、Apache はほとんど全自動で設定できたのではないでしょうか?ついでですから、Courier MTAのSSL certs もこれに切り替えちゃいましょう。

Courier MTA で使う .pem ファイルは、プライベート・キー+証明書+証明書チェーンとつなげたものです。certbotの場合、あなたのドメインが「example.com」だった場合、/etc/letsencrypt/live/example.com/ にこれらのファイルは入っています。Courier MTA SSL の設定ファイル(/etc/courier/esmtpd-ssl ) から読んでいる .pem ファイルが /etc/courier/esmtpd.pem だったとしましょう。その場合、

$ sudo cd /etc/letsencrypt/live/example.com/
$ sudo cat privkey.pem cert.pem fullchain.pem > /etc/courier/esmtpd.pem
$ sudo /etc/init.d/courier-mta-ssl restart

で良いはず。例によって、保証はしませんがね。

番外編2:Dovecot も設定しないとね

ついうっかり忘れていたので…。

Dovecot のprivate key のデフォルトは /etc/dovecot/private/dovecot.pem なので、こいつを /etc/letsencrypt/live/example.com/privkey.pem にリンクしておかないとですな。

$ sudo ln -s /etc/letsencrypt/live/example.com/privkey.pem dovecot.pem
$ sudo doveadm reload

コメントを残す

メールアドレスが公開されることはありません。

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください