第2の人生の構築ログ

自分の好きなことをやりつつ、インカムもしっかりと。実現していく過程での記録など。読書、IT系、旅行、お金に関係する話などの話題。

【GCP】App Engine (GAE)で独自(カスタム)ドメインの利用と常時HTTPS化を行う

f:id:dr_taka_n:20200301210020p:plain

以前、GAE を使って Web アプリ/静的 Web コンテンツを公開するメモを書いていました。

www.morelife.work

前回の場合、確かにコンテンツの公開は行えていますが、そのアクセス用の FQDN (URL) が GAE が用意するデフォルトのホスト名となっていました(通常 <project id>.appspot.com )。今回は、アクセス用のFQDNに独自(カスタム)ドメインを使って、尚且つ、常時 HTTPS 化しましょう、というお話です。

実際にやってみてすごい時代になったなぁと思ったのは、独自(カスタム)ドメインの設定を行うだけで、設定を行ったドメイン(FQDN毎)のサーバ証明書も一緒に勝手に発行してくれるので、常時HTTPS化に関しては特別な作業がいらない点でした。
(【追記:2020/03/07】使っていなかったので気付いていないだけで、大分前から使えるんですね。)

www.publickey1.jp

この作業の前提とましては、独自(カスタム)ドメインを別途用意しており、その DNS の設定を自身で行えることになります。

では作業をしてきます。前回の記事と若干被る部分もありますが、その部分は簡易に記載します。以下の手順となります。

  1. GAE を新規にアクティベート
  2. 確認用にテスト用のアプリを用意する
  3. カスタムドメインの設定 (+勝手にHTTPS化も行われる)

1. GAE を新規にアクティベート

新規に GAE をアクティベートします。Language は Go を選択しています。

f:id:dr_taka_n:20200301185923p:plain:w500 f:id:dr_taka_n:20200301190021p:plain:w400 f:id:dr_taka_n:20200301190105p:plain:w500 f:id:dr_taka_n:20200301190234p:plain:w500

特に難しいところもないと思いますので、以上です。

2. 確認用にテスト用のアプリを用意する

確認用に実際に動作するアプリを用意します。Google がサンプルを用意してくれていますので、それを使います。

$ git clone https://github.com/GoogleCloudPlatform/golang-samples.git
$ cd golang-samples/appengine/go11x/helloworld

gcloud config list で現在有効なプロパティの情報を確認し、必要に応じて、プロジェクトを切り替えておきます。

$ gcloud config set project dr-main
Updated property [core/project].

GAE の環境にデプロイします。少し時間がかかります。

$ gcloud app deploy

確認します。以下のコマンドでブラウザが起動します。

$ gcloud app browse

https://dr-main.appspot.com/ で確かにサンプルコンテンツが表示されるのを確認できます。

f:id:dr_taka_n:20200301190559p:plain

3. カスタムドメインの設定 (+勝手にHTTPS化も行われる)

[App Engine] -> [設定] -> [カスタムドメイン] で設定を行います。ここでは、独自(カスタム)ドメインとGAEが提供しているホストとのマッピング(紐つけ)を行うのですが、この作業を行うことでサーバ証明書も発行され、HTTPS 環境も整います。

f:id:dr_taka_n:20200301191115p:plain:w500

「使用するドメイン」に webapps-in.tokyo という独自(カスタム)ドメインを指定しています。まだ Google に対してドメイン検証の設定を行っていない場合には、ここで「所有権を証明」をクリックすると「ウェブマスターセントラル」が開き、設定すべき内容が提示されます。

f:id:dr_taka_n:20200301191333p:plain:w500

独自ドメインを管理している DNS の設定の TXT レコードに上記を設定します。設定方法はレジストラ、DNS の設定に依存しますので、それに倣う必要があります。以下は Value-domain での設定です。

f:id:dr_taka_n:20200301191617p:plain:w500

設定を行い、しばらく待つと反映されますので、反映されたところで先程の「ウェブマスターセントラル」のページの「確認」ボタンをクリックします。

f:id:dr_taka_n:20200301191803p:plain:w500

検証されたようです。

また、GCP の管理画面に戻っています。こちらも[所有者を証明]をクリックすることで検証OKが確認され、[続行]で先に続けられるようになります。

f:id:dr_taka_n:20200301191918p:plain:w500

2番目の「ドメインをdr-mainに指定する」に移っています。トップレベルと www を指定した FQDN がデフォルトでマッピング対象としてリストアップされています。

f:id:dr_taka_n:20200301192104p:plain:w500

1個追加しておきます。「マッピングを保存」ボタンをクリックします。

f:id:dr_taka_n:20200301192235p:plain:w500

全ての FQDN にグリーンのチェックマークがつきました。「続行」ボタンをクリックします。

f:id:dr_taka_n:20200301192325p:plain:w500

DNS に以下の設定を追加しろということです。

f:id:dr_taka_n:20200301192424p:plain:w500

これもDNSに依存しますので、利用されている環境に倣う必要がありますが、Value-domain では以下のような設定に置き換えられます。

f:id:dr_taka_n:20200301192631p:plain:w500

DNS の設定後、[完了]をクリックします。

f:id:dr_taka_n:20200301192742p:plain:w500

追加されているようです。

これで、例えば、http://www.webapps-in.tokyo を確認すると、先程のサンプル画面が表示されます。(表示内容を少し変えています)

f:id:dr_taka_n:20200301192942p:plain:w400

さらに、HTTPS でアクセスしてみます。

f:id:dr_taka_n:20200301193031p:plain:w400

素晴らしいですね。先程の設定だけで、既に HTTPS での配信も行えるようになっています。サーバ証明書はどうなっているのでしょうか。

f:id:dr_taka_n:20200301193103p:plain

www.webapps-in.tokyo の FQDN でサブジェクト名(Common Name)を持つ証明書が発行されていたようです。ちなみに、先程 www だけでなく、トップレベルドメイン (www無し)と hotel というホストも指定していましたが、この FQDN ( https://webapps-in.tokyo/https://hotel.webapps-in.tokyo/ )でアクセスしますと、webapps-in.tokyohotel.webapps-in.tokyo の サブジェクト名(Common Name) を持った証明書も発行されていることがわかります。

f:id:dr_taka_n:20200301205643p:plain:w300 f:id:dr_taka_n:20200301205755p:plain:w300

ブラボーですね。

GAE (Google App Engine) ではサーバインフラの作業を行うことなく、アプリの開発に集中できます。