gametize.install-root-cert
Ansibleロール: ルートCA証明書のインストール
このAnsibleロールは、ターゲットホストにルートCA証明書をインストールします。この機能を利用するには特権アクセスが必要です。
なぜこれが必要かを簡単に説明すると:
- 私はデバイス証明書(例:www.example.com)を作成します。私のウェブサーバーはそれをSSLに使用します。
- 他のマシンがウェブサーバーにアクセスしようとすると、SSL証明書が自己署名であり、まだ信頼されていないため、残念なことになります :(
では、このAnsibleロールは何のためにあるのでしょうか?
- 私は自分の組織のためにプライベートキーを作成し、このキーから自己署名CA(認証局)証明書を作成します。
- このAnsibleロールを使うと、このCA証明書をクライアントマシンにインストールできます
- 私は自分のCA証明書(およびそのプライベートキー)で署名されたデバイス証明書(例:www.example.com)を作成し、それをウェブサーバーに使用します。
- クライアントマシンが私のウェブサーバー(www.example.com)にアクセスするとき、SSL証明書が有効になります。やったね!
- もし作成したプライベートキーが悪用されると、悪いことが起こる可能性があります(例:
google.comのなりすまし)。だから、組織のプライベートキーは安全に保ってください!
このプレイブックは、以下のプラットフォームで使用できます:
- CentOS 6, 7
- Ubuntu 14.04, 16.04
- Mac OS 10.12(冪等性がなく、十分にテストされていません)
依存関係
このロールはルートCA証明書を必要とします。
変数
install_root_cert_pemローカルマシンにおけるルートCA証明書(.pem)のフルパス
使用方法
例のプレイブック:
---
- hosts: all
become: yes
vars:
install_root_cert_pem: files/root_ca.pem
roles:
- gametize.install-root-cert
テスト
Travisテスト(.travis.yml)は、geerlingguyによるこの記事に従って設定されています。
Gitlab CIテストも同様に設定されており、gitlab-runnerで実行できます。ローカルでの実行例:
gitlab-ci-multi-runner exec shell test_centos7
テストで使用されるアーティファクト
鍵と証明書は、以下のコマンドを使って生成できます。これらの設定を本番環境で使用しないでください!
$ ### ルートCAのための鍵と証明書を生成
$ openssl genrsa -out root_ca.key 1024
$ openssl req -x509 \
-subj '/C=SG/ST=Singapore/L=Singapore/O=Example Inc/OU=Example Inc Certificate Authority/CN=example.com' \
-new -nodes -key root_ca.key -sha256 -days 1024 \
-out root_ca.pem
$ ### デバイスのための鍵と証明書を生成
$ openssl genrsa -out localhost.key 1024 # デバイス `localhost.key` のための鍵を生成
$ openssl req -new \
-subj '/C=SG/ST=Singapore/L=Singapore/O=Example Inc/OU=Example Inc Testing Department/CN=localhost' \
-new -nodes -key localhost.key -sha256 -days 1024 \
-out localhost.csr
$ ### デバイス証明書をルートCA証明書と鍵で署名
$ openssl x509 -req \
-in localhost.csr -CA root_ca.pem -CAkey root_ca.key \
-CAcreateserial -out localhost.crt -days 1024 -sha256
$ cat localhost.crt localhost.key > localhost.pem
ライセンス
MIT
作者情報
LIM EnSheng (ensheng@gametize.com)
