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 …]
