2.2. Ansible を使用したスマートカード認証用の IdM サーバー設定
この手順では、Ansible を使用して、Identity Management (IdM) の認証局 (CA) が信頼する <EXAMPLE.ORG> ドメインの CA によって証明書が発行されたユーザーに対して、スマートカード認証を有効にします。
前提条件
-
IdM サーバーへの
root
アクセス権限がある。 -
IdM
admin
のパスワードを把握している。 ルート CA 証明書、IdM CA 証明書、およびすべての中間 CA 証明書がある。
- <EXAMPLE.ORG> CA の証明書を直接、または 1 つ以上のサブ CA を通じて発行した root CA の証明書。証明書チェーンは、その CA が証明書を発行した Web ページからダウンロードできます。詳細は、証明書認証を有効にするためのブラウザーの設定 の手順 4 を参照してください。
-
IdM CA 証明書。CA 証明書は、任意の IdM CA サーバーの
/etc/ipa/ca.crt
ファイルから取得できます。 - <EXAMPLE.ORG> CA と IdM CA の中間にあるすべての CA の証明書。
次の要件を満たすように Ansible コントロールノードを設定した。
- Ansible バージョン 2.13 以降を使用している。
-
ansible-freeipa
パッケージをインストールしている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
-
この例では、secret.yml Ansible Vault に
ipaadmin_password
が保存されていることを前提としています。
-
ターゲットノード (
ansible-freeipa
モジュールが実行されるノード) が、IdM クライアント、サーバー、またはレプリカとして IdM ドメインに含まれている。
手順
CA 証明書が
DER
などをはじめとする別の形式のファイルに保存されている場合、それらをPEM
形式に変換します。# openssl x509 -in <filename>.der -inform DER -out <filename>.pem -outform PEM
IdM 認証局の証明書は
PEM
形式で、/etc/ipa/ca.crt
ファイルにあります。オプション:
openssl x509
ユーティリティーを使用してPEM
形式のファイルの内容を表示し、Issuer
とSubject
の値が正しいことを確認します。# openssl x509 -noout -text -in root-ca.pem | more
~/MyPlaybooks/ ディレクトリーに移動します。
$ cd ~/MyPlaybooks/
CA 証明書専用のサブディレクトリーを作成します。
$ mkdir SmartCard/
便宜上、必要なすべての証明書を ~/MyPlaybooks/SmartCard/ ディレクトリーにコピーします。
# cp /tmp/root-ca.pem ~/MyPlaybooks/SmartCard/ # cp /tmp/intermediate-ca.pem ~/MyPlaybooks/SmartCard/ # cp /etc/ipa/ca.crt ~/MyPlaybooks/SmartCard/ipa-ca.crt
Ansible インベントリーファイルで、以下を指定します。
- スマートカード認証用に設定する IdM サーバー。
- IdM 管理者パスワード。
CA の証明書へのパス (次の順序に従う)。
- ルート CA 証明書ファイル
- 中間 CA 証明書ファイル
- IdM CA 証明書ファイル
ファイルは次のようになります。
[ipaserver] ipaserver.idm.example.com [ipareplicas] ipareplica1.idm.example.com ipareplica2.idm.example.com [ipacluster:children] ipaserver ipareplicas [ipacluster:vars] ipaadmin_password= "{{ ipaadmin_password }}" ipasmartcard_server_ca_certs=/home/<user_name>/MyPlaybooks/SmartCard/root-ca.pem,/home/<user_name>/MyPlaybooks/SmartCard/intermediate-ca.pem,/home/<user_name>/MyPlaybooks/SmartCard/ipa-ca.crt
次の内容で
install-smartcard-server.yml
playbook を作成します。--- - name: Playbook to set up smart card authentication for an IdM server hosts: ipaserver become: true roles: - role: ipasmartcard_server state: present
- ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
$ ansible-playbook --vault-password-file=password_file -v -i inventory install-smartcard-server.yml
ipasmartcard_server
Ansible ロールは、次のアクションを実行します。- IdM Apache HTTP サーバーを設定します。
- キー配布センター (KDC) の Kerberos (PKINIT) で、初回認証用の公開鍵暗号化機能を有効にします。
- スマートカード認可要求を受け入れるように IdM Web UI を設定します。
オプション: ユーザー証明書を発行した認証局が Online Certificate Status Protocol (OCSP) レスポンダーを提供しない場合は、IdM Web UI への認証に対する OCSP チェックを無効にすることが必要になる場合があります。
root
として IdM サーバーに接続します。ssh root@ipaserver.idm.example.com
/etc/httpd/conf.d/ssl.conf
ファイルでSSLOCSPEnable
パラメーターをoff
に設定します。SSLOCSPEnable off
変更をすぐに有効にするには、Apache デーモン (httpd) を再起動します。
# systemctl restart httpd
警告IdM CA が発行したユーザー証明書のみを使用する場合は、OCSP チェックを無効にしないでください。OCSP レスポンダーは IdM に含まれます。
ユーザー証明書を発行した CA が、OCSP サービスリクエストをリッスンする場所に関する情報がユーザー証明書に含まれていない場合に、OCSP チェックを有効にしたまま、ユーザー証明書が IdM サーバーにより拒否されないようにする方法は、Apache mod_ssl 設定オプション の
SSLOCSPDefaultResponder
ディレクティブを参照してください。
これで、インベントリーファイルにリストされているサーバーがスマートカード認証用に設定されました。
トポロジー全体でスマートカード認証を有効にするには、Ansible Playbook の hosts
変数を ipacluster
に設定します。
---
- name: Playbook to setup smartcard for IPA server and replicas
hosts: ipacluster
[...]
関連情報
-
/usr/share/doc/ansible-freeipa/playbooks/
ディレクトリーでipasmartcard_server
ロールを使用するサンプル Playbook