26.5. Ansible Playbook を使用して IdM サービスエントリーに外部署名証明書を存在させる手順
この手順に従い、ansible-freeipa
service
モジュールを使用して、外部の認証局 (CA) が HTTP サービスの IdM エントリーにアタッチされていることを確認します。IdM CA が自己署名の証明書を使用する場合には、IdM CA ではなく外部 CA が署名した HTTP サービスの証明書を使用すると便利です。
前提条件
- ホストに HTTP サービスをインストール している。
- HTTP サービスを IdM に登録 している。
- IdM 管理者パスワードがある。
- 発行元が HTTP サービスのプリンシパルに対応する外部署名証明書がある。
手順
inventory.file
などのインベントリーファイルを作成します。$ touch inventory.file
inventory.file
を開き、[ipaserver]
セクションに、設定する IdM サーバーを定義します。たとえば、Ansible に対して server.idm.example.com を設定するように指示するには、次のコマンドを実行します。[ipaserver] server.idm.example.com
以下のように
/usr/share/doc/ansible-freeipa/playbooks/service/service-member-certificate-present.yml
ファイルのコピーを作成します。$ cp /usr/share/doc/ansible-freeipa/playbooks/service/service-member-certificate-present.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-member-certificate-present-copy.yml
オプション: 証明書の形式が Privacy Enhanced Mail (PEM) の場合には、証明書を識別名エンコーディングルール (DER) 形式に変換し、コマンドラインインターフェイス (CLI) でより簡単に処理できるようにします。
$ openssl x509 -outform der -in cert1.pem -out cert1.der
base64
を使用してDER
ファイルを復号化します。ラッピングを無効にするには、-w0
オプションを使用します。$ base64 cert1.der -w0 MIIC/zCCAeegAwIBAgIUV74O+4kXeg21o4vxfRRtyJm...
- 標準出力からクリップボードに証明書をコピーします。
/usr/share/doc/ansible-freeipa/playbooks/service/service-member-certificate-present-copy.yml
ファイルを開き、このファイルの内容を編集および表示します。--- - name: Service certificate present. hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure service certificate is present - ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/client.idm.example.com certificate: | - MIICBjCCAW8CFHnm32VcXaUDGfEGdDL/... [...] action: member state: present
ファイルを調整します。
-
certificate
変数を使用して定義した証明書は、CLI からコピーした証明書に置き換えます。上記のように | パイプ文字とcertificate:
変数を併用する場合は、1 行に入力せずに、このように証明書を入力してください。これで、証明書の読み取りが容易になります。 -
ipaadmin_password
変数で定義されている IdM 管理者パスワードを変更します。 -
HTTP サービスを実行する IdM クライアントの名前 (
name
変数で定義) を変更します。 - その他の関連する変数を変更します。
-
- ファイルを保存し、終了します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/service/service-member-certificate-present-copy.yml
検証
- 管理者として IdM Web UI にログインします。
-
Identity
Services
に移動します。 - HTTP/client.idm.example.com など、新しく追加した証明書が指定されたサービス名をクリックします。
右側の サービス証明書
セクションで、新たに追加した証明書を確認できるようになりました。