SSLが無料で使えるCertbot(Let’s Encrypt)をNginxに投入した

SSL無料時代がやってきた

Let’s Encrypt

レッツエンクリプトは、通信業大手のシスコやアカマイなどがスポンサーを務める非営利団体Internet Security Research Group(ISRG)が、公共の利益のため、SSLを広く無料で利用できるよう、提供しているオープンプロジェクトです。

SEO的にもSSLは必須

Googleがすでにアナウンスしているとおり、サイトのURLをHTTPSで始まるようにすることはSEO的にも重要となります。もちろん全部のサイトがSSL化されてしまえば、意味のなくなることかもしれませんが、現段階では早めにSSL化するに越したことはありません。

タダより怖いものはない!?

Let’s Encryptをオススメする最大のポイントは何と言っても「無料」である。と、いうこと。大規模サイトならいざ知らず、中小規模のサイトでは、年間で何万円という費用がなくなるのはかなり大きいことです。
もちろんタダですので、それなりの(?)煩わしい部分もあります。

それは、SSLの有効期間が90日間だということです。
しかしこれはcronを設定して処理すればOKです。なので、デメリットと言えるようなデメリットはなく、ただただSSLが無料で利用できる。これを利用しない手はないです。

certbotをインストール(CentOS 6 系)

ダウンロード

Let’s Encryptを利用するための必須ツールです。以前はletsencryptという名称でしたが、certbotに変わりました。公式サイトに書いてあるとおり、wgetでダウンロードしましょう。
https://certbot.eff.org/

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

ホームディレクトリが散らかるのがイヤだという方は、/usr/local/srcあたりにダウンロードして、[ダウンロード先ディレクトリ]/certbot-autoにパスを通しましょう。

追記(2017/1/23):CentOS 7ではyumでインストールできるみたい

見出しのとおりなんですが、CentOS 7系では、普通にyumを使ってインストールできるようです。

$ sudo yum install -y certbot

証明書の取得からサーバー(Nginx)への設定

–standalone と –webroot

証明書作成コマンドを打つ際に–standaloneか、–webrootオプションを指定し、プラグインを選択する必要があります。違いは証明書作成の際にサーバーを停止する必要があるのかないのかぐらいです。すでにWebアプリケーションがあってからのSSL化の場合が多いと思いますので、–webrootプラグインを使用する例で説明していきます。

standaloneプラグイン
証明書作成の際に、certbotに内蔵されているWebサーバーを使用します。80番ポートと443番ポートを使用するため、一旦稼働中のWebサーバーを停止させる必要があります。
webrootプラグイン
webサーバを停止することなく証明書の発行が可能。一緒に「-w」オプションを付与して、webサイトのドキュメントルートを指定する必要があります。

certonly

certonlyオプションを指定すると、Webサーバーに証明書をインストールすることなく、発行だけを行います。
Webサーバーへの設定は自身で行います。利用するWebサーバーによっては自動インストールされないこともあるようなので、certonlyにしておけば無難です。

以上のことから、下記のコマンドを入力します。
別の項で言及しますが、Python2.7がインストールされてなかったり、必要なPythonモジュール(私の場合はvirtualenvがないと言われました)がない場合は途中で作業が中断されますので、必要とされるモジュールをインストールしてもう一度certbotを動かしましょう。

certbot-auto certonly --webroot -w [ドキュメントルート] -d [ドメイン名]

メールアドレスの入力を求められますので、お使いのアドレスを入力してください。あとは、同意が求められるのでAgreeを選択してEnterを押すと証明書の作成が完了します。

証明書をサーバー(Nginx)にインストール

上のコマンドで作成された証明書は、
/etc/letsencrypt/live/[ドメイン名]
に保存されています。よって、Webサーバーの設定ファイルにこのパスを指定します。

server {
  listen 443;
  server_name ドメイン名;
  ssl on;
  ssl_certificate /etc/letsencrypt/live/[ドメイン名]/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/[ドメイン名]/privkey.pem;
}

Python2.7が必要

CentOS6系で使われているのはPython2.6

certbotはPython2.7で動いていますので、Python2.6が使われているcentOS6系では新たにインストールしないといけません。これは別にまとめてありますので、そちらをご覧ください。

SAKURAのVPSでCentOS6のPythonを2.7にアップデートする

要注意!yumはPythonで動いている!

パッケージマネージャーのyumはPythonで動いています。そのため、python2.7をインストールすると、yumのパスが書き換わっているため、これを元のPython2.6へと書き換える必要があります。

vi /usr/bin/yum
#!/usr/bin/python2.6

この辺も上記投稿にまとめてあります。

(Visited 85 times, 1 visits today)