目次
はじめに
Let’ Encrypt は CLI(コマンドラインインターフェイス)でコマンドを実行し、無料のSSL証明書を取得することでサーバにSSL証明書を適用することができます。
ただし、どうしても CLI で Let’ Encrypt を使いたくない場合は「ZeroSSL」という素晴らしい Webサービスがあり、画面に従ってポチポチ作業するとあっという間に Let’ Encrypt のSSL証明書を取得できます。特に、GCP の Load Balancer は GUI 画面で証明書、中間証明書、秘密鍵を適用すれば良いだけなので、全てブラウザのGUIだけで済むため非常に便利です。
注意点は、Let’ Encrypt の有効期限は90日間ですので、更新を忘れないようカレンダー登録すると良いでしょう。なお、Let’ Encrypt は CLI でSSL証明書を取得すると「あと XX 日でSSL証明書の有効期限が切れるよ!」とメールが届くので便利な側面もあります。
Let’ Encrypt の詳細や CLI で Let’ Encrypt の SSL証明書を取得する方法は、弊社の過去記事を参考にしてください。
無料で使えるLet’s EncryptをGCEに設定しよう
では早速、ZeroSSL+Let’s Encryptを使ってSSL証明書を無料で取得してGCPのロードバランサに適用してみるまでを解説します。
作業手順
- お名前.com でドメインを取得(※)
- お名前.com の管理画面でDNSサーバを CloudDNS が指定するDNSサーバを登録
- ZeroSSL でSSL証明書の取得(CloudDNS にTXTレコードを追加)
- ZeroSSL でSSL証明書の更新(CloudDNS にTXTレコードを変更)
- Tips GCP Load Balancer における SSL証明書設定方法
※ 本記事では「お名前.com」でドメインを取得しましたが、Google Domain などドメインが取得できればOKです。もちろん既存のドメインを利用しても構いません。
お名前.com さんでドメインを取得
お名前.com は2017年11月現在、work ドメインが1円(お一人様1個だけ)と激安なので、modum.work というドメインを有効期限1年として取得しました。
テスト用であれば、お名前.com の管理画面(ドメイン Navi )上で「ドメインの自動更新をなし」に変更することで、1年間だけ利用できるのでお財布に優しいですね。
図 1 お名前.com サイト
お名前.com の管理画面でDNSサーバを CloudDNS が指定するDNSサーバを登録
まずは GCP の CloudDNS で「modum.work」のゾーンを作成しましょう。そうすると以下のように4つのDNSサーバ名が表示されます。お名前.com のドメイン Navi で、DNSサーバの変更を行いましょう。
図 2 CloudDNS の DNSゾーンの作成画面
図 3 レジストラの設定画面
Tips として、CloudDNS で表示されるNSレコードの最後尾に「.」が付与されていますが、そのまま、お名前.com のドメイン Navi にコピー&ペーストしても問題ありません。
ns-cloud-e1.googledomains.com.
ns-cloud-e2.googledomains.com.
ns-cloud-e3.googledomains.com.
ns-cloud-e4.googledomains.com.
※ NSレコードは「e1」~「e4」が設定時に変更されます。例えば「a1」~「a4」です。上表の NSレコードをそのままペーストせずに、CloudDNS の画面に表示される NSレコードを使ってください。
図 4 お名前.com のネームサーバ変更画面
これで、お名前.com の設定は完了しました。簡単ですね。
ZeroSSL でSSL証明書の取得(CloudDNSも操作)
それでは取得したドメイン用に ZeroSSL でSSL証明書を取得しましょう。作業概要はたった2ステップです!
- CSR Generator で CSR を作成
- FREE SSL Certificate Wizard で公開鍵、中間証明書、秘密鍵を取得
CSR Generator
まずは以下のサイトにアクセスしてください。CSRを取得する必要があります。
https://zerossl.com/free-ssl/#csr
作業手順は以下です。
- 取得したドメイン( modum.work )を入力
- 2048bit 選択(※)
- サブドメイン(www)も含めるのか聞かれますが今回は「No」を選択
- domain-key.txt と csr.txt をダウンロード(更新時に CSR は使うので大切に保存)
※ GCP でサポートされているのは、RSA-2048 暗号化と ECDSA P-256 暗号化のみですので、4096bit ではなく 2048bit を選択しましょう。参考 URL は以下です。
https://cloud.google.com/compute/docs/load-balancing/http/ssl-certificates?hl=ja
操作画面を順番に図示します。参考にしてみてください。
図 5 CSR生成画面(その1)
図 6 CSR生成画面(その2)
図 7 CSR生成画面(その3)
※ ダウンロードするとファイル名は「domain-key.txt」「csr.txt」となります。
FREE SSL Certificate Wizard
それでは、Let’ Encrypt の SSL証明書を取得しましょう。以下のサイトにアクセスしてください。
https://zerossl.com/free-ssl/#crt
ダウンロードした「csr.txt」を開き、下図のとおり設定を行ってください。ポイントは「DNS verification」を使うところです。後で CloudDNS の TXT レコードを追加する必要があります。
図 8 秘密鍵生成画面(その1)
NEXT ボタンを押すと、秘密鍵が生成されるのでダウンロードしましょう。ファイル名は「accunt-key.txt」となります。その後に、NEXT ボタンを押しましょう。
図 9 秘密鍵生成画面(その2)
ドメインとの Verification(検証)が必要となりますので、下図に情報に基づき、CloudDNS に TXT レコードを追加しましょう。
図 10 Verification(検証)画面
CloudDNS に TXT レコード追加
CloudDNS にアクセスし、作成済みの modum.work ゾーンに TXT レコードを追加しましょう。非常に簡単です。
図 11 CloudDNS TXTレコード作成画面
図 12 CloudDNS TXTレコード追加後の画面
TTL をデフォルトの300秒(5分)にしたので、GCP のコンソール画面の「美しさ」を5分間を堪能してください。シンプルでわかりやすいですよね!
FREE SSL Certificate Wizard
ZeroSSL のWebサイトに戻り、最終ステップに進みましょう。下図のとおり、NEXT ボタンを押すことで Verification(検証)を行います。
図 13 Verification(検証)画面(TXTレコード追加後に NEXT を押すこと)
図 14 SSL証明書取得画面(その1)
※ ダウンロードするとファイル名は「domain-crt.txt」となります。
図 15 SSL証明書取得画面(その2)
自分の account ID を保存して、NEXT DONE を押すことで、Let’ Encrypt のSSL証明書を取得することができました。account ID はトラブル発生時に ZeroSSL にメールで質問する際に役立つので念のため保存しておきましょう。
ZeroSSL でSSL証明書の更新
Let’ Encrypt の有効期限は90日間ですので、期間内に更新する必要があります。更新する際は、作成済みの CSR「csr.txt」 を用いることで作業が短縮できます。
以下に作業手順を記載します。図も参考にするとわかりやすいでしょう。
- FREE SSL Certificate Wizard で、保存した CSR「csr.txt」をペースト(図16参照)
- FREE SSL Certificate Wizard の NEXT ボタンを押す
- CloudDNS の TXT レコードを更新(図13,17参照)
- FREE SSL Certificate Wizard の NEXT ボタンを押す
- SSL証明書「domain-crt.txt」をダウンロード
- FREE SSL Certificate Wizard の DONE NEXT ボタンを押す
図 16 ZeroSSL画面
図 17 CloudDNS TXTレコード変更画面
Tips:GCP Load Balancer における SSL証明書設定方法
ダウンロードした「domain-crt.txt」を開くと以下のようになっています。
-----BEGIN CERTIFICATE-----
MIIE9zCCA9+gAwIBAgISA+OhKYTklN10yUGV/aMtjKGCMA0GCSqGSIb3DQEBCwUA
・
・
(中略)
・
・
4CHIzIiJCSwZjxIMIOR6njDXPVpDO8SWza2L
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA
・
・
(中略)
・
・
KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==
-----END CERTIFICATE-----
1番目の「—–BEGIN CERTIFICATE—–」が 公開鍵です。
2番目の「—–BEGIN CERTIFICATE—–」が 中間証明書です。
例えば、GCP の Load Balancer 「HTTP(S)」に追加する場合、以下の3つ情報を入力する必要があります。
- 公開鍵証明書
ダウンロードファイル名:domain-crt.txt - 中間証明書(証明書チェーン)
ダウンロードファイル名:domain-crt.txt - 秘密鍵
ダウンロードファイル名:accunt-key.txt
参考として、GCP の Load Balancer 「HTTP(S)」の設定を図示します。非常に簡単な作業で、SSL証明書(Let’ Encrypt)を適用することができます。
図 18 GCP の Load Balancer 「HTTP(S)」の設定画面
ブラウザで SSL証明書(Let’ Encrypt)が正しく適用されているか確認しましょう。今回は Chrome を使います。
Chrome の右上から「その他のツール」→「ディベロッパー ツール」→「Security」を選択すると下図のようになります。
緑色で「This page is secure (valid HTTPS).」と表示されています。詳細な情報は「Virew certificate」で、SSL証明書(Let’ Encrypt)の更新期間等が参照可能です。
図 19 Let’ Encrypt のSSL証明書の確認画面(Chrome)
まとめ
いかがでしたでしょうか?CLI(コマンドラインインターフェイス)を使わなくても、ZeroSSL を使うことで、GUI(グラフィックユーザーインターフェイス)による Let’ Encrypt のSSL証明書を取得できます。
特に、GCP の Load Balancer や Google App Engine(GAE)に、Let’ Encrypt のSSL証明書を組み込む際に威力を発揮すると思われます。
なお、冒頭でも記載しましたが、Let’ Encrypt の有効期限は90日間ですので、更新を忘れないようカレンダー登録すると良いでしょう。