UbuntuへのLet's Encrypt導入が想像以上に簡単だった


一部のウェブブラウザが全てのHTTPページに警告を出すようになりました。
これに伴い、弊社のウェブサイトでもSSL化を実施しています。

今回使用したのは無料で使用できる「Let's Encrypt」。 当初は無料ツールということで色々と扱いにくい点があるかと考えていましたが、 実際に導入してみると想像以上に簡単でした。

導入ツールの設定

Let's Encryptは自動でインストールを行うツールが提供されているので、今回はそれを使用しました。 まずはツールを設置するためのディレクトリを作成します。

なお、Let's Encryptのツールはroot権限を持つユーザでないと操作できないとのことです。 私の場合はrootのホームフォルダ直下にツール置き場を作成しました。

	$> cd ~
	$> mkdir letsencrypt_tools
	$> cd letsencrypt_tools

弊社で使用しているUbuntuは14.04LTSですが、Let's Encryptのツールはaptには対応していないようです。 そのため、Webサイトで公開されているツールをダウンロードしてきます。 ダウンロードした「certbot-auto」に実行権限を与えれば設定完了です。

※ここではwgetで取得していますが、もちろん別途ダウンロードしたものをSFTP等でアップロードする形でも問題ありません。

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

証明書の導入

では、さっそく実行してみましょう。

	$> ./certbot-auto

ここからは対話形式で証明書のインストールが進みます。今回は下記のように回答しました。

  1. メールアドレスを聞かれたので、任意のアドレスを入力
  2. 規約に同意するかと聞かれたので「A」  ※Agreeの「A」
  3. 登録したメールアドレスでメルマガを受け取るかと聞かれたので「N」

上記に回答すると、続いてどのホストをHTTPS化するか聞いてきます。 どうやら、Apacheのバーチャルホスト設定を自動的に読み込んでいるようです。

Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: sysdays.co.jp
2: www.sysdays.co.jp
3: dummysite1.com
4: dummysite2.com
5: dummysite3.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel):

Let's Encryptは「Subject Alternative Name(SAN)」という仕組みに対応しているので、 1つのサーバで複数のホストを暗号化することが出来ます。 弊社では1と2を暗号化するため「1,2」と入力しました。

最後に、HTTPアクセスをHTTPSをリダイレクトするか聞かれるので、「2(リダイレクトする)」を選択しました。 これでもう、導入作業は完了です。Apacheを再起動したらHTTPSでのアクセスが有効になります。

	$> service apache2 restart

あとは実際にWebサイトにHTTPSアクセスして確認してみてください。 ちなみに、導入した証明書は /etc/letsencrypt/archive/ に配置されるようです。

自動化の設定

Let's Encryptは証明書の有効期限が90日間しかありません。 90日ごとに手動で証明書を入れ直すのは現実的ではないので、自動化の仕組みを導入しましょう。

仕組みと言ってもやることはごく単純で、cronを仕込んで定期的に更新ツールを実行するだけです。 Let's Encryptのツールはrootで動作させないといけないので、rootのcronに仕込みます。

# m h  dom mon dow   command
0 4 * * 5 /root/letsencrypt_tools/certbot-auto renew --post-hook "service apache2 restart"

これで、毎週金曜日の朝5時に更新処理が実行されます。 期限が2週間を切るまでは「Cert not yet due for renewal」と言われて更新がスキップされるので、 毎週実行させても問題はありません。

結局、たったこれだけの作業で証明書を無料導入することが出来ました。 今後はもう、証明書はこれ一本で考えても良さそうです。


宮野 清隆株式会社シスデイズ代表取締役社長
プロジェクトマネージャ・アプリケーションエンジニア・テクニカルエンジニアなど、
多数の高度情報処理資格を保有するITのスペシャリスト。2008年にシスデイズを設立し、代表に就任。
2012年より上位2%のIQを保有するものだけが参加できる団体「JAPAN MENSA」に所属。
2014年よりJAPAN MENSA財務担当、2016年よりJAPAN MENSA副会長に就任。
お問い合わせ

同じカテゴリの記事