Let’s Encrypt 公開ベータ版を導入してみた

久々の更新です。
更新していない間にこのサイトのサーバーを入れ替えたりIPv6 に対応したりと色々やっていました。

12月3日にLet’s Encrypt が公開ベータとしてだれでも使えるようになりました。
https://letsencrypt.org/2015/12/03/entering-public-beta.html
Let’s Encrypt は米電子フロンティア財団が運営する、ウェブサイトを無料でHTTPS 化するプロジェクトです。
ということでLet’s Encrypt でSSL 証明書を導入してみました。

証明書を作る

Let’s Encrypt では証明書を生成するためのクライアントをサーバーに導入します。
ドキュメントは以下にあります。
https://letsencrypt.readthedocs.org/en/latest/

クライアントのインストールはgit で取得します。

$ git clone https://github.com/letsencrypt/letsencrypt

クライアントを取得したらletsencrypt-auto を実行することで、必要なパッケージがインストールされます。

$ cd letsencrypt
$./letsencrypt-auto

letsencrypt-auto コマンドで証明書の作成からウェブサーバー設定までを一括で行うことができます。
対応しているウェブサーバーはApache とnginx ですが、nginx は本記事を書いたときは実験段階になっていました。
本サーバーはnginx で稼働しているため、証明書の作成のみ行います。
また、生成時に80 番ポートか443 番ポートを使ってドメイン名のチェックが行われるためウェブサーバーを動かしている場合は一旦停止する必要があります。

./letsencrypt-auto certonly --standalone

使用するポートを指定するときは–standalone を以下のオプションに置き換えます。
・443 番ポートを使うとき --standalone-supported-challenges tls-sni-01
・80 番ポートを使うとき --standalone-supported-challenges http-01

メールアドレスを入力します。
letsencrypt1

許諾書に同意を選択します。
letsencrypt2

証明書を生成するドメイン名を入力します。
letsencrypt3

これで証明書の生成が完了します。

証明書ファイルは/etc/letsencrypt ディレクトリに書き出されます。
/etc/letsencrypt/live/$domain ディレクトリ下には最後に生成した証明書のシンボリックリンクが置かれます。

nginx に証明書を設定する

nginx の設定ファイルでSSL の設定を行います。
ssl_certificatefullchain.pem ファイルを指定し、ssl_certificate_keyprivkey.pem を指定します。
SSL の細かい設定については省略します。

server {
        listen  443 ssl;
        listen [::]:443 ssl;
        server_name diary.carme-ln.net;

        ssl_certificate     /etc/letsencrypt/live/diary.carme-ln.net/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/diary.carme-ln.net/privkey.pem;
...

nginx -t で設定に問題がないかテストした後、nginx を起動されば設定完了です。

letsencrypt4

まとめ

Let’s Encrypt では無料でHTTPS を使うことができるようになります。
また、OpenSSL コマンドで証明書要求を作成したり、署名の依頼などの作業を省き、コマンド一つで証明書ができるのは非常に楽でした。
ウェブサーバーへの設定は今回は試していませんが、ウェブサーバーの設定までを完了できるということでHTTPS の普及がしやすくなるのではないかと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*