お手軽無料のSSL証明書発行サービス Let’s Encryptを使ってみる

ちょいと前ですが、正式サービスが開始されたようなのでLet’s Encrypt を使ってみた。

README / Introduction — Certbot 0.7.0.dev0 documentation

インストール

user@webserver:~$ git clone https://github.com/letsencrypt/letsencrypt
user@webserver:~$ cd letsencrypt
user@webserver:~/letsencrypt$ ./letsencrypt-auto --help

インストールなのかヘルプなのかよくわからないコマンドですが・・・。

インストールが終わるとパスが表示されるので、パスを通すなりなんなりする。

詳しい使い方はヘルプで。

$ letsencrypt --help all

SSL証明書の発行の仕方

nginxはbuggyだって書いてるので、certonlyで行う。apacheならインストールまでしてくれるっぽい。

nginxを使っていて、

  • domainが hoge.com
  • webのrootが /var/www/hoge.com

の場合

まず、普通にウェブを80ポートで動かして、アクセスできる状態にする。
認証の仕組みとしては、上記の webrootに認証用のファイルを配置して、letsencryptのサーバーからそこにアクセスして確認するっぽい。

証明書の発行は次のコマンド

sudo letsencrypt certonly --webroot -d hoge.com -w /var/www/hoge.com

処理が終わると、/etc/letsencrypt/live/hoge.com に証明書が保存される。

nginxへの設定

今回はすでに別のSSL証明書を設定しているnginxにドメインを追加しての設定だったので、SNI機能が有効かを確認。

$ nginx -V 2>&1 | grep SNI
TLS SNI support enabled

問題なければ、設定ファイルをつくる。

server {
    listen 443;
    server_name hoge.com
    ssl on 
    ssl_certificate /etc/letsencrypt/live/hoge.com/cert.pem
    ...

証明書の更新

サーバーにインストールしているすべての証明書のうち期限が近い証明書を更新する。

sudo letsencrypt renew

個別に更新したい場合には、発行時と同じコマンドを動かし、Renewを選択する

sudo letsencrypt certonly --webroot -d hoge.com -w /var/www/hoge.com

直接操作できないサーバーの場合

FTPのみの場合であれば、–manualで表示された内容を自分で設置すると同じようにSSL証明書を作成できる。

sudo letsencrypt certonly --manual -d hoge.com

redmineをhttpsで動かす

httpsで動かしたくてがんばってたら、なんとなーく動いたんだけど、微妙にhttpのURLがでてくるっ。

現象はこれ

http://www.redmine.org/issues/show/672

解決法はかいてるとおり、proxyの設定に

RequestHeader set X_FORWARDED_PROTO 'https'

を追加してあげるとよい。
で、mod_headerを有効にする。

これでちょっと安心します。別に公開しないけど。ちょー自己満足。