自己署名認証局(CA)で証明書を作成するコンテナで、証明書作成用のコマンドを内包した、非常駐のDockerコンテナである。
このコンテナでは、 CFSSL (CloudFlare's PKI/TLS toolkit) を使って、
証明書を作成している。
CFSSLでは、jsonファイルと、コマンドパラメータの組み合わせで、作成するので、
openssl を使った対話式の手順よりも、わかりやすく、簡単に作成することができる。
以下は、coreos での自己署名証明書の作成方法である。
https://coreos.com/os/docs/latest/generate-self-signed-certificates.html
このDockerイメージは、ここに記載されてある、ほぼ、そのままを、コマンドにしてある。
/etc/cfssl に証明書が作成されるので、ホスト側のディレクトリで、マウントする。
認証属性は、jsonファイルで作成し、/opt/cfssl/conf に配置する。
これも、事前に用意した設定ファイルのディレクトリをマウントする。
/opt/cfssl/confに配置するjsonファイルについて説明する。
はじめに、coreosでの説明 を見てもらって、そのあと、サンプル(./example/cfssl)のjsonファイルを見ると、わかるんじゃないかとも思う。
なお、詳細は cfsslのgithub にある。
証明書を作成するときの dokcer のコマンドを例示する。
サーバー証明書
docker run --rm -it \
-v $(pwd)/etc/cfssl:/etc/cfssl \
-v $(pwd)/example/cfssl:/opt/cfssl/conf \
altus5/cfssl \
gen_server_cert.sh
ピア証明書
docker run --rm -it \
-v $(pwd)/etc/cfssl:/etc/cfssl \
-v $(pwd)/example/cfssl:/opt/cfssl/conf \
altus5/cfssl \
gen_peer_cert.sh
クライアント証明書
docker run --rm -it \
-v $(pwd)/etc/cfssl:/etc/cfssl
-v $(pwd)/example/cfssl:/opt/cfssl/conf \
altus5/cfssl \
gen_client_cert.sh
オフィシャルのNginxのコンテナに設定すると、次のようになる。
設定ファイル
CFSSLで作成した証明書を参照するように設定。
server {
listen 80;
listen 443 ssl;
server_name _;
root /var/www
ssl_certificate /etc/cfssl/server.pem;
ssl_certificate_key /etc/cfssl/server-key.pem;
}
nginxコンテナの起動
docker run --rm -it \
-v $(pwd)/etc/cfssl:/etc/cfssl \
-v $(pwd)/example/nginx/conf.d:/etc/nginx/conf.d \
-v $(pwd)/example/nginx/www:/var/www \
-p 80:80 \
-p 443:443 \
nginx:1.10.2-alpine
自己署名なので、警告は出るが、ホスト名を altus5.local とした場合、 https://altus5.local/ でHello World が表示される。
Content type
Image
Digest
Size
10 MB
Last updated
over 9 years ago
docker pull altus5/cfssl:0.5.3