以前、GAE を使って Web アプリ/静的 Web コンテンツを公開するメモを書いていました。
前回の場合、確かにコンテンツの公開は行えていますが、そのアクセス用の FQDN (URL) が GAE が用意するデフォルトのホスト名となっていました(通常 <project id>.appspot.com
)。今回は、アクセス用のFQDNに独自(カスタム)ドメインを使って、尚且つ、常時 HTTPS 化しましょう、というお話です。
実際にやってみてすごい時代になったなぁと思ったのは、独自(カスタム)ドメインの設定を行うだけで、設定を行ったドメイン(FQDN毎)のサーバ証明書も一緒に勝手に発行してくれるので、常時HTTPS化に関しては特別な作業がいらない点でした。
(【追記:2020/03/07】使っていなかったので気付いていないだけで、大分前から使えるんですね。)
この作業の前提とましては、独自(カスタム)ドメインを別途用意しており、その DNS の設定を自身で行えることになります。
では作業をしてきます。前回の記事と若干被る部分もありますが、その部分は簡易に記載します。以下の手順となります。
- GAE を新規にアクティベート
- 確認用にテスト用のアプリを用意する
- カスタムドメインの設定 (+勝手にHTTPS化も行われる)
1. GAE を新規にアクティベート
新規に GAE をアクティベートします。Language は Go を選択しています。
特に難しいところもないと思いますので、以上です。
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/
で確かにサンプルコンテンツが表示されるのを確認できます。
3. カスタムドメインの設定 (+勝手にHTTPS化も行われる)
[App Engine] -> [設定] -> [カスタムドメイン] で設定を行います。ここでは、独自(カスタム)ドメインとGAEが提供しているホストとのマッピング(紐つけ)を行うのですが、この作業を行うことでサーバ証明書も発行され、HTTPS 環境も整います。
「使用するドメイン」に webapps-in.tokyo
という独自(カスタム)ドメインを指定しています。まだ Google に対してドメイン検証の設定を行っていない場合には、ここで「所有権を証明」をクリックすると「ウェブマスターセントラル」が開き、設定すべき内容が提示されます。
独自ドメインを管理している DNS の設定の TXT レコードに上記を設定します。設定方法はレジストラ、DNS の設定に依存しますので、それに倣う必要があります。以下は Value-domain での設定です。
設定を行い、しばらく待つと反映されますので、反映されたところで先程の「ウェブマスターセントラル」のページの「確認」ボタンをクリックします。
検証されたようです。
また、GCP の管理画面に戻っています。こちらも[所有者を証明]をクリックすることで検証OKが確認され、[続行]で先に続けられるようになります。
2番目の「ドメインをdr-mainに指定する」に移っています。トップレベルと www を指定した FQDN がデフォルトでマッピング対象としてリストアップされています。
1個追加しておきます。「マッピングを保存」ボタンをクリックします。
全ての FQDN にグリーンのチェックマークがつきました。「続行」ボタンをクリックします。
DNS に以下の設定を追加しろということです。
これもDNSに依存しますので、利用されている環境に倣う必要がありますが、Value-domain では以下のような設定に置き換えられます。
DNS の設定後、[完了]をクリックします。
追加されているようです。
これで、例えば、http://www.webapps-in.tokyo
を確認すると、先程のサンプル画面が表示されます。(表示内容を少し変えています)
さらに、HTTPS でアクセスしてみます。
素晴らしいですね。先程の設定だけで、既に HTTPS での配信も行えるようになっています。サーバ証明書はどうなっているのでしょうか。
www.webapps-in.tokyo
の FQDN でサブジェクト名(Common Name)を持つ証明書が発行されていたようです。ちなみに、先程 www
だけでなく、トップレベルドメイン (www無し)と hotel
というホストも指定していましたが、この FQDN ( https://webapps-in.tokyo/
、https://hotel.webapps-in.tokyo/
)でアクセスしますと、webapps-in.tokyo
、hotel.webapps-in.tokyo
の サブジェクト名(Common Name) を持った証明書も発行されていることがわかります。
ブラボーですね。
GAE (Google App Engine) ではサーバインフラの作業を行うことなく、アプリの開発に集中できます。