LoginSignup
16
24

More than 5 years have passed since last update.

DockerコンテナのSSL化

Posted at

phpサイトの開発でSNS認証が必要になったため、DockerコンテナのSSL化について述べる。

前提

  • 開発端末はMac。なので開発環境はDocker for Mac
  • docker-composeで開発案件毎にコンテナを用意
  • コンテナはWebサーバとDBサーバが基本で必要に応じてキャッシュサーバ
  • WebサーバはCentOS7+Apache2+php5.6で独自にイメージを作成
  • ローカル環境のみで動作(外部からのアクセスを考慮しない)
  • URLはhttp://hoge.localとし、開発端末のhostsファイルに記述

以上から、Let's Encryptは使えないため、オレオレ証明書で行うものとする。

証明書の作成

ローカル環境で使うオレオレ認証局とオレオレ証明書を簡単に作れる mkcert を試した

とか見ると良さげだったので

mkcert

を使用した。

インストールは

$ brew install mkcert
$ brew install nss

で、すんなりできた。

(本当はbrew側の問題で少し苦戦したが。。。)

証明書の作成は

$ mkcert -install
$ mkcert hoge.local

これで、hoge.local.pemとhoge.local-key.pemが作成される

ApacheのSSL設定

ローカルで動けばいいので、今回は簡単に作成。

Listen 443
SSLStrictSNIVHostCheck off

<VirtualHost _default_:443>
  DocumentRoot "/var/www/html"
  ServerName repo.local:443

  ErrorLog logs/ssl_error_log
  TransferLog logs/ssl_access_log
  LogLevel warn

  SSLEngine on 
  SSLProtocol all -SSLv2
  SSLCertificateFile /etc/pki/tls/certs/hoge.local.pem
  SSLCertificateKeyFile /etc/pki/tls/certs/hoge.local-key.pem
</VirtualHost>

開発環境構築

いよいよ開発環境構築である。

ディレクトリ構成は下記のようにした。

ROOTDIR/  
  ┝━ SSL   #SSL関連ファイル  
  │   ┝━ ssl.conf  
  |   └━ certs 
  |        ┝━ hoge.local.pem
  |        └━ hoge.local-key.pem
  |  
  ┝━ svr  # Webサイトのリソース(中身は省略)
  |
  └━ docker-compose.yml

docker-compose.ymlは下記のように作成した。

dataHttpLog:
  image: busybox
  volumes:
    - "${DEVELDIR}/HttpLog:/var/log/httpd"
  environment:
    - DEVELDIR

dataSSL:
  image: busybox
  volumes:
    - ./SSL/certs:/etc/pki/tls/certs

httpsvr:
  image: phpsvrpdo:3.0   #<- 独自で構築したwebサーバイメージ名
  hostname: 'hoge.local'
  volumes_from:
    - dataHttpLog
    - dataSSL
  volumes:
    - "./svr:/var/www/html"
    - ./SSL/ssl.conf:/etc/httpd/conf.d/ssl.conf
  ports:
    - "80:80"
    - "443:443" 

hostnameの指定はなくても動作したかも知れないが念のため。

以上で、docker-compose up -dでコンテナを立ち上げ

https://hoge.local/

でアクセス出来た。

これでSNS側のコールバックの設定に

https://hoge.local/**

を追加しておけば、ローカルでSNS連携の開発・テストが可能になる。

16
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
24