https://letsencrypt.org/ 無料SSL証明書を導入してみました。
letsencrypt-autoを実行すると、必須パッケージをもろもろダウンロード、インストールを自動で行ってくれます。
./letsencrypt-auto certonly --webroot --webroot-path /www -d <domain> -d www.<domain>
GCP HTTP Load balancerで使うためには、global forwarding ruleを追加します。
上記Certificateから、SSL証明書、秘密鍵、中間証明書を登録します。
GCP HTTP Load balancerにも発行した証明書を登録できました。ただ、中間証明書は、letsencrpt-autoコマンドで作成されたものではなく、下記から取得しました。中間証明書は、Let’s Encrypt Authority X2でなく、Let’s Encrypt Authority X1を使います。
https://letsencrypt.org/certificates/
Redirect Loopを防ぐのに、nginxの設定を一部変更しています。
location / { root /www; index index.php index.html index.htm; if ($http_x_forwarded_proto = "http") { rewrite ^/(.*)$ https://www.domain/$1 permanent; }
また、ブログとしてWordpressを利用している場合、wp-config.phpも変更します。
define('FORCE_SSL_ADMIN', true); if ( ! empty( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' ) { $_SERVER['HTTPS']='on'; }
ただ、Let’s EncryptのSSL証明書は三ヶ月と短いので、更新の自動化は必要かと。
SSL証明書の更新自動化は下記を使えばできそうか。
gcloud compute ssl-certificates create NAME --certificate LOCAL_FILE_PATH --private-key LOCAL_FILE_PATH [--description DESCRIPTION] [GLOBAL-FLAG …]
gcloud compute target-https-proxies update NAME [--ssl-certificate SSL_CERTIFICATE | --url-map URL_MAP] [GLOBAL-FLAG …]