2.2. Ansible を使用したスマートカード認証用の IdM サーバー設定
Ansible を使用して、Identity Management (IdM) CA が信頼する <EXAMPLE.ORG> ドメインの認証局 (CA) によって証明書が発行されたユーザーのスマートカード認証を有効にできます。そのためには、ipasmartcard_server ansible-freeipa ロールスクリプトを使用して Ansible Playbook を実行するときに使用できるように、次の証明書を取得する必要があります。
- <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 の証明書。
前提条件
-
IdM サーバーへの
rootアクセス権限がある。 -
IdM
adminのパスワードを把握している。 - ルート CA 証明書、IdM CA 証明書、すべての中間 CA の証明書がある。
次の要件を満たすように Ansible コントロールノードを設定している。
- Ansible バージョン 2.15 以降を使用している。
-
freeipa.ansible_freeipaコレクションがインストールされている。 - ~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル が作成されている (この例の場合)。
-
secret.yml Ansible vault に
ipaadmin_passwordが保存されており、secret.yml ファイルを保護するパスワードを格納しているファイルにアクセスできる (この例の場合)。
-
ターゲットノード (
freeipa.ansible_freeipaモジュールが実行されるノード) が、IdM クライアント、サーバー、またはレプリカとして IdM ドメインに含まれている。
手順
CA 証明書が
DERなどをはじめとする別の形式のファイルに保存されている場合、それらをPEM形式に変換します。openssl x509 -in <filename>.der -inform DER -out <filename>.pem -outform PEM
# openssl x509 -in <filename>.der -inform DER -out <filename>.pem -outform PEMCopy to Clipboard Copied! Toggle word wrap Toggle overflow IdM 認証局の証明書は
PEM形式で、/etc/ipa/ca.crtファイルにあります。オプション:
openssl x509ユーティリティーを使用してPEM形式のファイルの内容を表示し、IssuerとSubjectの値が正しいことを確認します。openssl x509 -noout -text -in root-ca.pem | more
# openssl x509 -noout -text -in root-ca.pem | moreCopy to Clipboard Copied! Toggle word wrap Toggle overflow ~/MyPlaybooks/ ディレクトリーに移動します。
cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/Copy to Clipboard Copied! Toggle word wrap Toggle overflow CA 証明書専用のサブディレクトリーを作成します。
mkdir SmartCard/
$ mkdir SmartCard/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 便宜上、必要なすべての証明書を ~/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
# cp /tmp/root-ca.pem ~/MyPlaybooks/SmartCard/ # cp /tmp/intermediate-ca.pem ~/MyPlaybooks/SmartCard/ # cp /etc/ipa/ca.crt ~/MyPlaybooks/SmartCard/ipa-ca.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow Ansible インベントリーファイルで、以下を指定します。
- スマートカード認証用に設定する IdM サーバー。
- IdM 管理者パスワード。
CA の証明書へのパス (次の順序に従う)。
- ルート CA 証明書ファイル
- 中間 CA 証明書ファイル
- IdM CA 証明書ファイル
ファイルは次のようになります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の内容で
install-smartcard-server.ymlplaybook を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ファイルを保存します。
Ansible Playbook を実行します。Playbook ファイル、secret.yml ファイルを保護するパスワードを格納するファイル、およびインベントリーファイルを指定します。
ansible-playbook --vault-password-file=password_file -v -i inventory install-smartcard-server.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory install-smartcard-server.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ipasmartcard_serverAnsible ロールは、次のアクションを実行します。- 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
ssh root@ipaserver.idm.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/httpd/conf.d/ssl.confファイルでSSLOCSPEnableパラメーターをoffに設定します。SSLOCSPEnable off
SSLOCSPEnable offCopy to Clipboard Copied! Toggle word wrap Toggle overflow 変更をすぐに有効にするには、Apache デーモン (httpd) を再起動します。
systemctl restart httpd
# systemctl restart httpdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
警告IdM CA が発行したユーザー証明書のみを使用する場合は、OCSP チェックを無効にしないでください。OCSP レスポンダーは IdM に含まれます。
ユーザー証明書を発行した CA が、OCSP サービスリクエストをリッスンする場所に関する情報がユーザー証明書に含まれていない場合に、OCSP チェックを有効にしたまま、ユーザー証明書が IdM サーバーにより拒否されないようにする方法は、Apache mod_ssl 設定オプション の
SSLOCSPDefaultResponderディレクティブを参照してください。これで、インベントリーファイルにリストされているサーバーがスマートカード認証用に設定されました。
注記トポロジー全体でスマートカード認証を有効にするには、Ansible Playbook の
hosts変数をipaclusterに設定します。--- - name: Playbook to set up smartcard for IPA server and replicas hosts: ipacluster [...]
--- - name: Playbook to set up smartcard for IPA server and replicas hosts: ipacluster [...]Copy to Clipboard Copied! Toggle word wrap Toggle overflow