libre_ops.ca_keys
証明書機関のキー
これは、プライベートCAキーと署名済み証明書を生成するためのAnsibleロールです。これらは、データの暗号化とノード間の認証が必要なサーバー/クライアントアプリケーションを保護するために使用できます。
適切に構成された場合、プライベートCAによって署名されたキーは中間者攻撃(MITM)を防ぐことができ、双方向認証に使用できます。例として、KafkaまたはElastic Stackクラスター内のノード間の接続を保護することが考えられます。
ロールはおおよそ以下の手順に従います:
- CA(証明書機関)キー ペアを生成します
- 指定されたノードのためにキーとCSR(証明書署名リクエスト)を生成します
- CAを使用してCSRに署名し、署名済み証明書(CRT)を作成します
- 必要に応じて、必要なキーをJava キーストア/トラストストアのバイナリにパッケージ化します
デフォルト
すべてのデフォルト設定はこちらで確認でき、必要に応じて上書きできます。
使用方法
推奨される使用法:ローカルプレイブックでロールを実行した後、生成されたファイルを安全な場所に移動します。キーを放置しないでください。このコードはそのまま提供されていますので、どのように使用し、結果として得られたキーをどのように保存するかはあなたの責任です!
このロールは、既存のCA証明書がある場合、新しいキーとCRTを作成するためにも使用できます。
作成後、必要なファイルを使用しているプロジェクトに移動してください。また、Ansible Vaultを使用してファイル(jksバイナリを含む)を暗号化でき、copy
のようなAnsibleモジュールは、ボールトパスワードを提供されることでアップロード時にそれらを復号化します。
キーの確認
さまざまなopenssl
コマンドを使用してキーを確認することができます(必ず確認してください)。以下はその例です:
openssl x509 -in generated_keys/ca.crt -text -noout
openssl rsa -in generated_keys/<キー名>.key -check
openssl x509 -in generated_keys/<キー名>.crt -text -noout
Pythonの制限
Ansibleのバグ(現在devel
ブランチにマージ済み)により、Javaキーストアを作成するタスクを実行する際にはPython 2.7を使用する必要があります。詳細はこちらの問題を参照してください。
例のプレイブック
- name: キーを生成する
hosts: 127.0.0.1
connection: local
vars:
ansible_python_interpreter: '/usr/bin/python2.7'
roles:
- role: libre_ops.ca_keys
vars:
cert_organisation: 例株式会社
cert_unit: キーズ部門
cert_country: FR
cert_state: パリ
cert_location: パリ
create_keys:
- filename: server
subject:
- "/CN=app.client.org"
- "/O={{ cert_organisation }}"
- "/OU={{ cert_unit }}"
- "/C={{ cert_country }}"
- "/ST={{ cert_state }}"
- "/L={{ cert_location }}"
- filename: client
subject:
- "/CN=app.server.org"
- "/O={{ cert_organisation }}"
- "/OU={{ cert_unit }}"
- "/C={{ cert_country }}"
- "/ST={{ cert_state }}"
- "/L={{ cert_location }}"