このノートはオンプレミス・サーバーを利用している方が、サーバーにHTTPS(SSL接続)を設定する方法を紹介するノートです。
ホステッド・サーバーを利用している方は、こちらのノートをご参考ください。
オンプレミス・サーバーの圧縮ファイルを展開してできた、「exploratory」 というディレクトリの直下にある 「ssl」ディレクトリに、SSL証明書ファイルと秘密鍵ファイルを置きます。
「exploratory」ディレクトリの下に「ssl」ディレクトリがない場合は、「ssl」ディレクトリを作成し、その中にSSL証明書ファイルと秘密鍵ファイルを配置してください。
SSL証明書ファイルには、以下のようにSSL証明書と中間証明書の2つの証明書エントリーが含まれていることを確認してください。この2つのファイルが別々の場合は、中間証明書をコピーしてSSL証明書の後に貼り付けてください。
-----BEGIN CERTIFICATE-----
:
(SSL certificate)
:
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
:
(Intermediate certificate)
:
-----END CERTIFICATE-----
以下、SSL証明書ファイルをfullchain.pem
、秘密鍵ファイルをprivkey.pem
であるものと仮定して、SSLの設定方法を説明いたします。
オンプレミス・サーバーをホスト名ではなくIPアドレスで運用して、かつHTTPS (SSL接続)を設定する場合は、Exploratory サーバー用の自己署名のSSL証明書ファイルを、サーバー名では無くIPアドレスで作成する方法を参照してください。
"exploratory" ディレクトリの直下にある、docker-compose.ymlファイルのnginxの項目の中で、以下のような変更を行います。
- './ssl:/etc/nginx/ssl'
という文字列をそのまま追加します。この文字列はそのまま変更せずに貼り付けてください。- '8080:80'
といった行の代わりに、- '443:443'
とします。元の設定:
nginx:
image: 'nginx:1.15.0-alpine'
volumes:
- './default.conf:/etc/nginx/conf.d/default.conf:ro'
...その他の設定...
ports:
- '8080:80'
変更後の設定:
"exploratory" ディレクトリの直下にある、default.conf(nginxウェブサーバーの設定ファイル)を編集して、SSLを使用した設定にします。
listen 80
といった行の代わりに、listen 443;
とします。ssl on;
を追加します。また、SSL証明書ファイルと、秘密鍵ファイルの指定を以下のように追加します。設定の中のファイル名fullchain.pem, privkey.pemはご使用のファイル名に合わせて変更してください。パス名 ("/etc/nginx/ssl") はそのまま変更せずに使用してください。 ssl on;
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
proxy_set_header X-Forwarded-Proto http
の行を変更して、proxy_set_header X-Forwarded-Proto https
とします。元の設定の例:
server {
listen 80;
server_name localhost;
client_max_body_size 100m; # increased this for data share.
location / {
proxy_pass http://exploratory:3000/;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto http;
}
}
変更後の設定の例:
設定の変更が終わったら、Exploratory サーバーを再起動します。
docker-compose down
docker-compose up -d
再起動が完了したら、ブラウザからオンプレミス・サーバーに https://
で始まるURLを使ってアクセスし、接続を確認してください。