Let's Encryptロゴ

Google App Engine(独自ドメイン運用)にSSL/TLS証明書「Let’s Encrypt」を導入する。

Let’s Encryptとは

無料で利用できるSSL/TLS証明書です。
サイトのhttps化は、もう既に必須と言っても過言ではありません。
しかし、https化にはSSL/TLS証明書が必要であり、Symantecなどが販売している従来のSSL/TLS証明書は高価なものです。
当サイトのような個人が運営するサイトで導入するには、かなりハードルの高いものでした。
そこで最低限必要な機能のみに絞ったSSL/TLS証明書が出てきました。
Let’s Encryptは、電子フロンティア財団(EFF)が中心となった電子証明書無料配布プロジェクトです。

Let’s Encryptで出来ること、出来ないこと

SSL/TLSサーバ証明書には「ドメイン認証」「企業実在認証」「Extended Validation(EV)」の3種類が存在します。
Let’s Encryptは「ドメイン認証」の証明書です。
証明書を発行する際に、サイト内へチャレンジコードを設置する必要があるため、ドメインを所有している人しか証明書を取得できません。
その為、Let’s Encryptを利用することにより、サイト運営者がドメインを所有していることが証明されることになります。

「企業実在認証」や「Extended Validation(EV)」は、電話での所在確認や必要書類の提出など、厳格な審査が行われるため企業の物理的な存在が証明されます。

その他、サイト内にシールを表示する必要がある場合は、有料のSSL/TLS証明書を取得する必要があります。
また、Let’s Encryptの有効期限は90日であるため、有料のSSL/TLS証明書に比べて有効期限が短いです。
通常のLinuxサーバなどでしたら、Cronを利用し自動更新する設定が可能です。
※2017年1月現在、Google App Engineでは都度の手動更新が必要です。

詳細は、グローバルサイン社のブログをご参照ください。
SSL/TLS証明書無料化は進むか? ~Let’s Encryptに見る無料SSL/TLS証明書の台頭とその注意点~

Let’s Encryptの導入方法

こちらのブログを参考にさせて頂きました。
GAEでSSLの設定(Let’s Encrypt の導入備忘録)

個人的な備忘録として以下に纏めました。
1.Cloud Shwllを起動し、チャレンジ・レスポンス確認モードでコマンドを実行する。

cd certbot
sudo ./certbot-auto -a manual certonly

2.証明書を発行するFQDNを入力する。

3.メッセージが表示されるが、まだEnterは押さない。

4.チャレンジコードを含むURLとレスポンスコードが表示されるため、以下のURLにファイルを置く。(GAEではapp.yamlを使って設定する。)
http://独自ドメイン/.well-known/acme-challenge/チャレンジコード

※app.yamlでの設定方法
・app.yamlに以下を記述する。

- url: /.well-known/acme-challenge/?(.{5}).*
  static_files: static/letsencrypt/\1.txt
  upload: static/letsencrypt/(.+)
  mime_type: text/plain

・static/letsencrypt/にチャレンジコードの頭五桁をファイル名としたテキストファイルを設置する。

・テキストファイル内にレスポンスコードを記載する。

5.先程のメッセージ表示を確認の上、Enterキーを押す。

6.以下のディレクトリに公開鍵証明書が作成されているため確認する。
/etc/letsencrypt/archive/hiromeru.net/fullchain.pem

7.確認したキーの内容をCloud Consoleの「設定」→「SSL証明書」→「新しい証明書をアップロード」に貼り付ける。

8.以下のディレクトリにRSA秘密鍵が作成されているため、以下のコマンドで内容を確認する。

sudo openssl rsa -inform pem -in /etc/letsencrypt/archive/独自ドメイン/privkey.pem -outform pem | less

9.上記7で表示しているアップロード画面に貼り付ける。

10.アップロードしたSSL証明書のリンクをクリックし「次のカスタム ドメインに対して SSL を有効にします」の項目で設定したいドメインにチェックを入れて、保存ボタンを押します。