TOP

CentOS7上のリバースプロキシとして動作させているNginxにSSLの設定をしてDockerコンテナのApacheに流した時のメモ

2016-03-29 18:44:10

[ホスト側] 証明書をつくる

$ cd /etc/nginx/
$ sudo openssl genrsa -des3 -out server.key 1024
$ sudo openssl req -new -key server.key -out server.csr
$ sudo cp server.key server.key.org
$ sudo openssl rsa -in server.key.org -out server.key
$ sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

[ホスト側] Nginxの設定

CentOS7ではサンプルが置いてあったのでそれを基に設定しました

docker run時に、-p [コンテナ側のポート]:443 を指定します

$ cd /etc/nginx/conf.d/
$ sudo cp example_ssl.conf docker_ssl.conf

$ vim /etc/nginx/conf/docker_ssl.conf

server {
    client_max_body_size 500M;

    listen       443 ssl;
    server_name     [ドメイン];

    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_protocols  SSLv2 SSLv3 TLSv1;
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers   on;

    location / {
        proxy_pass              https://127.0.0.1:[コンテナ側のポート]/;
        break;
    }
}

[リモート側] Apacheの設定

VirtualHostディレクティブ(*:443)を新規追加。ssl関連の記述を追記

<VirtualHost *:443>
    SSLEngine on
    #SSLProtocol all -SSLv2
    #SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!SEED:!IDEA
    SSLCertificateFile /etc/pki/tls/certs/localhost.crt
    SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

    DocumentRoot "/path/to/docroot/"
    ServerName [ドメイン]
    CustomLog "/var/log/httpd/vhost/example.com-ssl_access.log" combined
    ErrorLog "/var/log/httpd/vhost/example.com-ssl_error.log"

    <Directory "/path/to/docroot/">
        Allowoverride All
        Require all granted
    </Directory>
</VirtualHost>