概要
Engine Yard CloudにSSLの証明書を追加する方法を説明いたします。SSL証明書はサードパーティから取得する必要があります。
全体の手順
- 秘密鍵の作成と証明書署名要求ファイルを作成
- SSL証明書の購入/発行する
- Engine Yard CloudアカウントへSSL証明書を登録する
- 証明書をEnvironmentへの適用する
- 証明書の設定確認
出てくるファイルの種類(表記方法いいろいろあります)
- 秘密鍵 key file, .key, RSA PRIVATE KEY
- 証明書署名要求 CSR, .csr, CERTIFICATE REQUEST
-
証明書, CRT, .crt, CERTIFICATE
- 中間証明書, CRT, .crt, Certificate chain file
秘密鍵の作成と証明書要求ファイルの作成
Unixベースのシェルコマンドを使用します。opensslコマンドが使えることが前提となっております。
1. 秘密鍵の生成
$openssl genrsa -out mydomain.com.key 2048
2. 証明書署名要求を先ほど作った秘密鍵を指定して生成
$openssl req -new -key mydomain.com.key -out mydomain.com.csr
SSL証明書を購入/発行する
証明書署名要求ファイルをSSL証明書プロバイダーにあげて、SSL証明書を購入/発行してください。
Verisign(Northon), GeoTrust, RapidSSLなど、どちらのプロバイダーでも問題ありません。
証明書と(ある場合は)中間証明書の二点を受取ます。
Engine Yard CloudアカウントにSSL証明書を登録する
追加するのに必要なファイルは以下です。
- SSLプロバイダーから提供された証明書 crt (SSL Certificate)
- 証明書を発行するために作った秘密鍵 key (SSL Certificate Key)
- (もしプロバイダーより提供があれば)中間証明書 (Certificate chain file)
手順
- Engine Yardの Dashboardから、ツール > SSL証明書を選択してください
- Add SSL Certificateをクリックし、Upload SSL Certificateを選んでください
- 用意いただいた、ファイルをそれぞれのフォームに入力しAdd Certificateをクリックして下さい
証明書をEnvironmentに適用する
アカウントに追加したSSL証明書を特定のEnvironmentに設定し、サーバにその設定を反映します。
手順
- Engine YardのDashboardから、設定したいEnvironmentを選びます
- SSL Certificationプルダウンから、先ほどアカウントに追加した証明書を選びます
- Update SSL Settingsをクリックします
- EnvironmentのApplyボタンを押して、サーバに設定を反映させます
証明書の設定確認
アプリケーションをdeployした後、SSL Shopperにてサイトを確認することをおすすめします。
更新
証明書署名要求(CSR)を再度作成して、SSLプロバイダーから証明書を取得してEngine Yard に登録しているSSLを更新してください。
その後Applyを該当のEnvironemntに適応してください。
よくあるご質問
Q. HTTPでのアクセスを制御したい、HTTPでアクセスが来た時、HTTPSにリダイレクトさせたい.
A. /etc/nginx/servers/#{appname}/custom.conf に以下の様なリライトを追加してください。nginxの再起動が必要です。
rewrite ^ https://$server_name$request_uri? permanent;
参考
https://support.cloud.engineyard.com/entries/21016553
この記事は2015年にポストされたものですが、現在でも有効でしょうか?
「よくあるご質問」にある「Q. HTTPでのアクセスを制御したい、HTTPでアクセスが来た時、HTTPSにリダイレクトさせたい.」を実現したいのですが、うまくできませんでした。
/data/nginx/servers/アプリケーション名/custom.conf に rewrite を追加したところ、redirectループに陥ってしまいました。
現在使用しているstackのバージョンは「stable-v5-3.0.31」です。
遅くなって申し訳ありません。チケットでも返信しておりますが、こちらでも、返信しておきます。
stack-v5で少し構成が変わり、solo構成(一台構成)でも、haproxy(ロードバランサー)が前段におりまので、LBに来たときのschemaヘッダーを参照してください。
```
if ($http_x_forwarded_proto != 'https') {
rewrite ^ https://$host$request_uri? permanent;
}
```