Django + Mezzanine + GoogleCloudPlatform (3)

前回の続きです。途中からSSL導入の話になりますが、導入しない場合は必要ありません。

01.独自ドメインの設定

今はIPでアクセスしていると思うので、ここに独自ドメインを当てます。ドメインは既に取得済みと想定します。

まずはGCPのコンソール画面より、左のメニューから「VPCネットワーキング → 外部IPアドレス」へと移動します。

先に立てたインスタンスのレコードが既にあると思うので、そのIPの「タイプ」を「エフェメラル → 静的」に変更します。この際に設定する名前は何でもいいです。

次にDNSゾーンを作成します。左のメニューから「ネットワークサービス → Cloud DNS」へと移動します。

「ゾーンを作成」からゾーン名、ドメイン名を入力します。作成が完了すると、NSレコードが4つ(ns-cloud-e1.googledomains.com.など)表示されますので、ドメインを登録しているレジストラで設定してください。

レジストラへの登録が完了したら、Aレコードを追加します。

GCPのゾーン詳細画面で「レコードセットを追加」をクリックし、外部IPアドレスで静的に設定したIPを指定して登録します。

あとは時間を置いて、ドメインにアクセスして画面が表示されれば完了です!

02.MailGunへの登録

ここからは、SSLの登録です。まずはSSL証明書をメールで受け取るため、admin@hogehoge.comを作成し、受信できるようにします。

今回はMailGunを使用します。公式ドキュメントでGCP側のMailGun設定が丁寧に書かれているので、順番通りに設定すればまず問題ありません。

Mailgun でのメールの送信

先に、「始める前に」項目でMailGunのアカウント作成のリンクが貼られていますので、アカウントを作成してしまいましょう。

登録が完了したら、早速ドメインの追加を行います。上部メニューから「Domains → Add New Domain」と進みましょう。

登録が完了したら、「Domain Verification & DNS」項目に登録すべきTXT、 MX、CNAMEが出現しますので、全て登録します。

「01.独自ドメインの設定」でAレコードを登録しましたが、同じ要領でTXT、MX、CNAMEも登録します。全て登録するとこんな感じになると思います(黒塗りばかりですいません。。。)。

少し時間を置いて、MailGunの「Domain Verification & DNS」を確認し、全ての各項目の左側に緑のチェックが付いていればOKです。もし黄色 or 赤色がある場合は、レコードセットの登録でミスをしている可能性があるので、見直してみてください。

続いて、メールアドレスを作成します。「Mailing List」に移動し、「Creating Mailing List」をクリックします。

設定はこんな感じです。

Alias Address admin@hogehoge.com
Name Admin
Description admin mail address
Access Level Everyone

これで「Add Mailing List」をクリックし、登録します。

次に、admin@hogehoge.comに来たメールを転送する設定です。「Routes → Create Route」へと移動します。

ここでの設定はこんな感じです。入力が完了したら登録しましょう。

Expression Type Match Recipient
Recipient admin@hogehoge.com
Actions Forwardにチェックを入れる。テキスト入力欄には、転送先メールアドレス。

03.GCP側の設定+メール受信テスト

MailGunの設定が終わったら、GCP側の設定もします。

GCP側の設定 + メール受信テストに関しては、公式ドキュメントに懇切丁寧に書かれていて、ここで書くことは何も無いので、ドキュメント通りに設定してみてください。

Postfixでのリレー

04.SSL証明書の取得

どこでもいいのでSSL証明書を取得します。ちなみに私は、以下のSSLストアで、FujiSSLを取得しました。1年で1,080円は安いですね。

SSLストア

発行にCSRが必要なので、公式ドキュメントを参考に作成します。

(参考:SSL 証明書

まずはkeyを生成し、

$ mkdir ssl_cert
$ cd ssl_cert
$ openssl genrsa -out example.key 2048

次にCSRを生成します。

$ openssl req -new -key example.key -out example.csr

ここで生成されたexample.csrを確認し、CSR入力欄に貼り付けます。

証明書の受信先を、MailGunで設定した「admin@hogehoge.com」に設定します。

その他の必須項目の入力も終わったら、登録完了しましょう!しばらく待つと、証明書がメールでzipで送られてきます。

05.証明書をサーバーに置く

送られて来たzipを開封すると、以下の2種類のファイルがあると思います。

  • hogehoge.crt
  • fugafuga.ca

まずはこの2つを結合し、「combined.crt」というファイルを作成します。

# cat hogehoge.crt fugafuga.ca > combined.crt

このファイルをサーバーに送ります。「03.GCP側の設定+メール受信テスト」で手順通りにやっていれば、「ssl_cert」というディレクトリが出来ていると思います。そこに送りましょう(たぶん、ここにserver.keyもあるはずです)。

$ scp -i ~/.ssh/google_compute_engine <combined.crtがあるディレクトリのパス> hogehoge@<IPアドレス>:/home/hogehoge/ssl_cert

06.nginxの設定ファイルを書き換える

もう少しです!前回の記事の「15.nginxのconfファイルを作成」で設定ファイルを作成したと思いますが、これをSSL用に書き換えます。念のためバックアップは取って置いてください。

upstream app_server {
server 127.0.0.1:8000 fail_timeout=0;
}

server {
#httpsにリダイレクトさせたいURLはここに記述
}

server {
listen 443 ssl;

server_name hogehoge.com;

client_max_body_size 4G;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

ssl_certificate /home/<プロジェクトのあるディレクトリ名>/ssl_cert/combined.crt;
ssl_certificate_key /home/<プロジェクトのあるディレクトリ名>/ssl_cert/server.key;

#ssl_session_timeout 5m;

access_log /var/log/nginx/nginx.vhost.access.log;
error_log /var/log/nginx/nginx.vhost.error.log;

location /static {
alias /home/<プロジェクトのあるディレクトリ名>/hogehoge/static/;
}

location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

以上で完了です。nginxを再起動し、httpsで接続できるか確認しましょう!

コメント

現在コメントはありません

新しいコメント

*
*
*

admin

こんにちは!Bicepperです。
メインはフロントですが、Python・AWS・GCPやったりと手を広げまくってます。

筋トレ歴10年目。筋トレのこともたまーに書いたりします。

Twitter Feed