スマートカード認証の管理
スマートカード認証の設定と使用
概要
Red Hat ドキュメントへのフィードバック (英語のみ) リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。
Jira からのフィードバック送信 (アカウントが必要)
- Jira の Web サイトにログインします。
- 上部のナビゲーションバーで Create をクリックします。
- Summary フィールドにわかりやすいタイトルを入力します。
- Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
- ダイアログの下部にある Create をクリックします。
第1章 スマートカード認証について リンクのコピーリンクがクリップボードにコピーされました!
スマートカードに基づいた認証は、パスワードの代替手段です。ユーザー認証情報は、秘密鍵と証明書の形式でスマートカードに格納され、特別なソフトウェアやハードウェアを使用してその鍵にアクセスします。スマートカードをリーダーまたは USB ポートに挿入して、パスワードを入力する代わりに、スマートカードの PIN コードを入力します。
このセクションでは、スマートカードとは何か、およびスマートカード認証のしくみを説明します。スマートカードコンテンツの読み取りと操作に使用できるツールを説明します。また、サンプルのユースケースを提供し、スマートカード認証のための IdM サーバーと IdM クライアントの両方のセットアップを説明します。
スマートカード認証の使用を開始する場合は、ハードウェア要件 Smart Card support in RHEL 9 を参照してください。
1.1. スマートカードとは リンクのコピーリンクがクリップボードにコピーされました!
スマートカードは物理デバイスであり、通常はマイクロプロセッサーを搭載したプラスチックカードであり、カードに格納された証明書を使用して個人認証を行うことができます。個人認証とは、ユーザーパスワードと同じ方法でスマートカードを使用できることを意味します。
ユーザー認証情報は、秘密鍵と証明書の形式でスマートカードに格納され、特別なソフトウェアやハードウェアを使用してその鍵にアクセスします。スマートカードをリーダーまたは USB ソケットに挿入して、パスワードを入力する代わりに、スマートカードの PIN コードを入力します。
1.2. サポート対象のスマートカード リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Enterprise Linux でサポートされているカードには、coolkey カード、CAC、PIV、PKCS #15 の 4 種類があります。カードの種類間の違いについて、詳細は該当ドキュメントを参照してください。
Red Hat Enterprise Linux では、次の種類のスマートカードがサポートされています。
Coolkey アプレットを搭載したカード。
- Gemalto TOP IM FIPS CY2 64K トークン (SCP01)
- Giesecke & Devrient (G&D) SmartCafe Expert 7.0 (SCP03)
- SafeNet Assured Technologies SC-650 (SCP01)
- CAC および PIV スマートカード。詳細は、Personal Identity Verification of Federal Employees and Contractors (PIV) を参照してください。
- 一部の PKCS #15 カードもサポートされています。このファミリーの複数のカードがサポートされていますが、これらのカードにはさまざまな設定とオプションがあります。RHEL と互換性のあるカードの詳細は、お客様の担当者にお問い合わせください。
- Red Hat の裁量により他のカードがサポートされる場合もあります。サポートされているその他のカードの詳細は、お客様の担当者にお問い合わせください。
ハードウェア要件の詳細は、RHEL 8 以降のスマートカードのサポート を参照してください。
1.2.1. サポート対象のスマートカードリーダー リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Enterprise Linux では、サポートされるスマートカードリーダーは pcsc-lite
アップストリームプロジェクトに準拠します。ほとんどの CCID 互換リーダーは問題なく動作するはずです。Red Hat は、アップストリームプロジェクトからの USB 識別子を pcsc-lite-ccid
ドライバーに定期的に更新します。さらに、Red Hat の裁量により追加のリーダーがサポートされる場合があります。次のリストは、Red Hat によってテストおよび検証されたスマートカードリーダーを示しています。
- SCR331/SCR3310
- Omnikey 3121 (SC650 カードの場合は部品番号 R31210399 である必要があります)
アップストリームプロジェクトでサポートされているハードウェアのリストについては、Supported CCID readers/ICCD tokens を参照してください。
1.3. サポート対象のハードウェアセキュリティーモジュール リンクのコピーリンクがクリップボードにコピーされました!
次の表は、Red Hat Identity Management (IdM) でサポートされている Hardware Security Modules (HSM) のリストを示しています。
HSM | ファームウェア | アプライアンスソフトウェア | クライアントソフトウェア |
---|---|---|---|
nCipher nShield Connect XC (High) | nShield_HSM_Firmware-12.72.1 | 12.71.0 | SecWorld_Lin64-12.71.0 |
Thales TCT Luna Network HSM Luna-T7 | lunafw_update-7.11.1-4 | 7.11.0-25 | 610-500244-001_LunaClient-7.11.1-5 |
1.4. スマートカード認証とは リンクのコピーリンクがクリップボードにコピーされました!
公開鍵ベースの認証と証明書ベースの認証は、パスワードベースの認証に代わるものとして広く使用されています。パスワードの代わりに公開鍵と秘密鍵を使用して、身元が確認されます。証明書とは、個人、サーバー、会社、または他のエンティティーを特定し、そのアイデンティティーを公開鍵に関連付けるために使用される電子ドキュメントです。運転免許または乗車のように、証明書は、一般的にユーザーのアイデンティティーを証明する証明を提供します。公開鍵暗号では、証明書を使用してなりすましの問題に対処します。
スマートカード認証の場合、ユーザー認証情報 (公開鍵と秘密鍵、および証明書) はスマートカードに保存され、スマートカードがリーダーに挿入されて PIN が提供された後にのみ使用できます。物理デバイスであるスマートカードを所有し、その PIN を知る必要があるため、スマートカード認証は 2 要素認証の一種と見なされます。
1.4.1. IdM でのスマートカード認証の例 リンクのコピーリンクがクリップボードにコピーされました!
以下の例では、IdM でスマートカードを使用する方法に関する 2 つの簡単なシナリオを説明します。
1.4.1.1. スマートカードを使用してシステムにログインする リンクのコピーリンクがクリップボードにコピーされました!
スマートカードを使用して、ローカルユーザーとして RHEL システムに認証することができます。システムがスマートカードログインを強制するように設定されている場合、スマートカードを挿入してその PIN を入力するように求められます。それが失敗すると、システムにログインできません。または、スマートカード認証またはユーザー名とパスワードのいずれかを使用して認証するようにシステムを設定することもできます。この場合、スマートカードが挿入されていないと、ユーザー名とパスワードの入力を求められます。
1.4.1.2. ロックを解除して GDM にログインする リンクのコピーリンクがクリップボードにコピーされました!
RHEL システムでスマートカード認証を設定している場合は、ロックオンリムーバル機能を有効にすることができます。GNOME Display Manager (GDM) にログインしているときにスマートカードを取り外すと、画面ロックが有効になり、スマートカードを再度挿入し、PIN で認証して画面のロックを解除する必要があります。ユーザー名とパスワードを使用して認証することはできません。
GDM にログインしているときにスマートカードを取り外すと、画面ロックが有効になり、スマートカードを再度挿入し、PIN で認証して画面のロックを解除する必要があります。
1.5. RHEL のスマートカード認証オプション リンクのコピーリンクがクリップボードにコピーされました!
authselect
コマンド authselect enable-feature <smartcard_option>
を使用すると、特定の Identity Management (IdM) クライアントでスマートカード認証を機能させる方法を設定できます。次のスマートカードオプションを使用できます。
-
with-smartcard
: ユーザーは、ユーザー名とパスワード、またはスマートカードで認証できます。 with-smartcard-required
: ユーザーはスマートカードで認証でき、パスワード認証は無効になります。スマートカードがないとシステムにアクセスできません。スマートカードで認証されると、スマートカードがリーダーから取り外されてもログイン状態を維持できます。注記with-smartcard-required
オプションは、login
、gdm
、xdm
、xscreensaver
、およびgnome-screensaver
などのログインサービスに対してのみ、排他的なスマートカード認証を適用します。ユーザーを切り替えるためのsu
やsudo
などの他のサービスでは、スマートカード認証は適用されず、スマートカードが挿入されていない場合は、パスワードの入力を求められます。with-smartcard-lock-on-removal
: ユーザーはスマートカードで認証できます。ただし、リーダーからスマートカードを取り外すと、システムから自動的にロックアウトされます。パスワード認証は使用できません。注記with-smartcard-lock-on-removal
オプションは、GNOME デスクトップ環境を持つシステムでのみ機能します。tty
またはコンソールベースのシステムを使用しており、そのリーダーからスマートカードを削除すると、システムから自動的にロックアウトされません。
詳細は、authselect を使用したスマートカードの設定 を参照してください。
1.6. スマートカードとその内容を管理するためのツール リンクのコピーリンクがクリップボードにコピーされました!
さまざまなツールを使用して、スマートカードに格納されているキーと証明書を管理できます。これらのツールを使用して、次のことができます。
- システムに接続されている使用可能なスマートカードリーダーをリスト表示します。
- 利用可能なスマートカードをリスト表示し、その内容を表示します。
- キーと証明書であるスマートカードの内容を操作します。
同様の機能を提供するツールは多数ありますが、システムの異なるレイヤーで機能するツールもあります。スマートカードは、複数のコンポーネントによって複数のレイヤーで管理されます。下位レベルでは、オペレーティングシステムが PC/SC プロトコルを使用してスマートカードリーダーと通信します。この通信は pcsc-lite
デーモンによって処理されます。デーモンは、受信したコマンドを通常は USB 経由でスマートカードリーダーに転送します。これは、低レベルの CCID ドライバーによって処理されます。PC/SC の低レベル通信は、アプリケーションレベルではほとんど見られません。アプリケーションがスマートカードにアクセスするための RHEL での主な方法は、高レベルのアプリケーションプログラミングインターフェイス (API) である OASIS PKCS#11 API を使用することです。この API は、秘密鍵などの暗号化オブジェクトを操作する特定のコマンドにカード通信を抽象化します。スマートカードベンダーは、PKCS#11 API に従い、スマートカードのドライバーとして機能する .so
ファイルなどの共有モジュールを提供します。
次のツールを使用して、スマートカードとその内容を管理できます。
OpenSC ツール:
opensc
に実装されているドライバーと連携します。-
opensc-tool
: スマートカードの操作を実行します。 -
pkcs15-tool
: トークンに保存されている PIN、鍵、証明書のリスト表示や読み取りなど、スマートカード上の PKCS#15 データ構造を管理します。 -
pkcs11-tool
: トークンに保存されている PIN、鍵、証明書のリスト表示や読み取りなど、スマートカード上の PKCS#11 データオブジェクトを管理します。
-
GnuTLS ユーティリティー: アプリケーションがネットワークトランスポート層を介した安全な通信を可能にするための API と、X.509、PKCS#12、OpenPGP、およびその他の構造にアクセスするためのインターフェイス。
-
p11tool
: PKCS#11 スマートカードおよびセキュリティーモジュールに対して操作を実行します。 -
certtool
: X.509 証明書、要求、および秘密鍵を解析および生成します。
-
ネットワークセキュリティーサービス (NSS) ツール: セキュリティー対応のクライアントおよびサーバーアプリケーションのクロスプラットフォーム開発をサポートするように設計された一連のライブラリー。NSS で構築されたアプリケーションは、SSL v3、TLS、PKCS #5、PKCS #7、PKCS #11、PKCS #12、S/MIME、X.509 v3 証明書、およびその他のセキュリティー標準をサポートできます。
-
modutil
: セキュリティーモジュールデータベースを使用して PKCS#11 モジュールの情報を管理します。 -
certutil
: NSS データベースとその他の NSS トークンの両方で鍵と証明書を管理します。
-
これらのツールを使用し、スマートカードを使用した認証に関する問題をトラブルシューティングする方法の詳細は、スマートカードによる認証のトラブルシューティング を参照してください。
1.7. 証明書とスマートカード認証 リンクのコピーリンクがクリップボードにコピーされました!
Identity Management (IdM) または Active Directory (AD) を使用してドメイン内の ID ストア、認証、ポリシー、および認可ポリシーを管理する場合、認証に使用される証明書はそれぞれ IdM または AD によって生成されます。外部認証局から提供された証明書を使用することもできます。この場合、外部プロバイダーからの証明書を受け入れるように Active Directory または IdM を設定する必要があります。ユーザーがドメインに属していない場合は、ローカル認証局によって生成された証明書を使用できます。詳細は、次のセクションを参照してください。
スマートカード認証に適格な証明書の完全なリストは、スマートカードに適格な証明書 を参照してください。
1.8. IdM でのスマートカード認証に必要な手順 リンクのコピーリンクがクリップボードにコピーされました!
Identity Management (IdM) でスマートカードを使用して認証する前に、以下の手順に従っていることを確認する必要があります。
- スマートカード認証用に IdM サーバーを設定します。スマートカード認証用の IdM サーバーの設定 を参照してください。
- IdM クライアントをスマートカード認証用に設定します。スマートカード認証用の IdM クライアントの設定 を参照してください。
- IdM のユーザーエントリーに証明書を追加します。IdM Web UI のユーザーエントリーへの証明書の追加 を参照してください。
- キーと証明書をスマートカードに保存します。スマートカードでの証明書の保存 を参照してください。
1.9. Active Directory によって発行された証明書を使用したスマートカード認証に必要な手順 リンクのコピーリンクがクリップボードにコピーされました!
Active Directory (AD) によって発行された証明書を使用してスマートカードで認証する前に、次の手順に従っていることを確認する必要があります。
第2章 スマートカード認証用の Identity Management の設定 リンクのコピーリンクがクリップボードにコピーされました!
Identity Management (IdM) では、以下によるスマートカード認証に対応しています。
- IdM 認証局が発行するユーザー証明書
- 外部認証局が発行するユーザー証明書
両方のタイプの証明書に対して、IdM でスマートカード認証を設定できます。このシナリオでは、rootca.pem
CA 証明書は、信頼された外部の認証局の証明書を含むファイルです。
現在、IdM では、複数の CA が同じサブジェクト識別名 (DN) を共有していても、暗号的に異なる場合、それらの CA をインポートできません。
2.1. スマートカード認証用の IdM サーバーの設定 リンクのコピーリンクがクリップボードにコピーされました!
この手順では、Identity Management (IdM) の認証局 (CA) が信頼する <EXAMPLE.ORG> ドメインの CA によって証明書が発行されたユーザーに対して、スマートカード認証を有効にする方法について説明します。
前提条件
- IdM サーバーへの root アクセス権限がある。
ルート CA 証明書とすべての中間 CA 証明書がある。
- <EXAMPLE.ORG> CA の証明書を直接、または 1 つ以上のサブ CA を通じて発行した root CA の証明書。証明書チェーンは、その CA が証明書を発行した Web ページからダウンロードできます。詳細は、証明書認証を有効にするためのブラウザーの設定 の手順 1 - 4a を参照してください。
-
IdM CA 証明書。IdM CA インスタンスが実行されている IdM サーバーの
/etc/ipa/ca.crt
ファイルから CA 証明書を取得できます。 - すべての中間 CA、つまり <EXAMPLE.ORG> CA と IdM CA の中間 CA の証明書。
手順
設定を行うディレクトリーを作成します。
mkdir ~/SmartCard/
[root@server]# mkdir ~/SmartCard/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow そのディレクトリーに移動します。
cd ~/SmartCard/
[root@server]# cd ~/SmartCard/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PEM 形式のファイルに保存されている関連する CA 証明書を取得します。CA 証明書が DER などの異なる形式のファイルに保存されている場合は、これを PEM 形式に変換します。IdM 認証局の証明書は PEM 形式で、
/etc/ipa/ca.crt
ファイルにあります。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 PEM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 便宜上、設定を行うディレクトリーに証明書をコピーします。
cp /tmp/rootca.pem ~/SmartCard/ cp /tmp/subca.pem ~/SmartCard/ cp /tmp/issuingca.pem ~/SmartCard/
[root@server SmartCard]# cp /tmp/rootca.pem ~/SmartCard/ [root@server SmartCard]# cp /tmp/subca.pem ~/SmartCard/ [root@server SmartCard]# cp /tmp/issuingca.pem ~/SmartCard/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 外部認証局の証明書を使用する場合は、
openssl x509
ユーティリティーを使用してPEM
形式のファイルの内容を表示し、Issuer
とSubject
の値が正しいことを確認します。openssl x509 -noout -text -in rootca.pem | more
[root@server SmartCard]# openssl x509 -noout -text -in rootca.pem | more
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 管理者の権限を使用して、組み込みの
ipa-advise
ユーティリティーで設定スクリプトを生成します。kinit admin ipa-advise config-server-for-smart-card-auth > config-server-for-smart-card-auth.sh
[root@server SmartCard]# kinit admin [root@server SmartCard]# ipa-advise config-server-for-smart-card-auth > config-server-for-smart-card-auth.sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow config-server-for-smart-card-auth.sh
スクリプトは、以下の操作を実行します。- IdM Apache HTTP サーバーを設定します。
- キー配布センター (KDC) の Kerberos (PKINIT) で、初回認証用の公開鍵暗号化機能を有効にします。
- スマートカード認可要求を受け入れるように IdM Web UI を設定します。
スクリプトを実行し、root CA とサブ CA 証明書が含まれる PEM ファイルを引数として追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ルート CA 証明書を、サブ CA 証明書の前に引数として追加します。また、CA またはサブ CA 証明書の有効期限が切れていないことを確認します。
オプション: ユーザー証明書を発行した認証局が Online Certificate Status Protocol (OCSP) レスポンダーを提供しない場合は、IdM Web UI への認証に対する OCSP チェックを無効にすることが必要になる場合があります。
/etc/httpd/conf.d/ssl.conf
ファイルでSSLOCSPEnable
パラメーターをoff
に設定します。SSLOCSPEnable off
SSLOCSPEnable off
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 変更をすぐに有効にするには、Apache デーモン (httpd) を再起動します。
systemctl restart httpd
[root@server SmartCard]# systemctl restart httpd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
警告IdM CA が発行したユーザー証明書のみを使用する場合は、OCSP チェックを無効にしないでください。OCSP レスポンダーは IdM に含まれます。
ユーザー証明書を発行した CA が、OCSP サービスリクエストをリッスンする場所に関する情報がユーザー証明書に含まれていない場合に、OCSP チェックを有効にしたまま、ユーザー証明書が IdM サーバーにより拒否されないようにする方法は、Apache mod_ssl 設定オプション の
SSLOCSPDefaultResponder
ディレクティブを参照してください。
これで、スマートカード認証にサーバーが設定されました。
トポロジー全体でスマートカード認証を有効にするには、各 IdM サーバーで手順を実行します。
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.14 以降を使用している。
-
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
# openssl x509 -in <filename>.der -inform DER -out <filename>.pem -outform PEM
Copy 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 | more
Copy 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.crt
Copy 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.yml
playbook を作成します。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.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
ssh root@ipaserver.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/httpd/conf.d/ssl.conf
ファイルでSSLOCSPEnable
パラメーターをoff
に設定します。SSLOCSPEnable off
SSLOCSPEnable off
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 変更をすぐに有効にするには、Apache デーモン (httpd) を再起動します。
systemctl restart httpd
# systemctl restart httpd
Copy 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 setup smartcard for IPA server and replicas hosts: ipacluster [...]
---
- name: Playbook to setup smartcard for IPA server and replicas
hosts: ipacluster
[...]
2.3. スマートカード認証用の IdM クライアントの設定 リンクのコピーリンクがクリップボードにコピーされました!
IdM クライアントをスマートカード認証用に設定できます。この手順は、認証にスマートカードを使用しているときに接続する各 IdM システム、クライアント、またはサーバーで実行する必要があります。たとえば、ホスト A からホスト B への ssh
接続を有効にするには、スクリプトをホスト B で実行する必要があります。
管理者として、以下を使用して、この手順でスマートカード認証を有効にします。
ssh
プロトコル詳細は、スマートカード認証を使用した SSH アクセスの設定 を参照してください。
- コンソールのログイン
- GNOME Display Manager (GDM)
-
su
コマンド
この手順は、IdM Web UI に対する認証には必要ありません。IdM Web UI の認証には 2 つのホストが関係しますが、どちらも IdM クライアントである必要はありません。
- ブラウザーが実行されているマシン。マシンは IdM ドメインの外にある場合があります。
-
httpd
が実行している IdM サーバー
以下の手順は、IdM サーバーではなく、IdM クライアントでスマートカード認証を設定していることを前提としています。このため、2 台のコンピューターが必要です。設定スクリプトを生成する IdM サーバーと、スクリプトを実行する IdM クライアントが必要になります。
前提条件
- スマートカード認証用の IdM サーバーの設定 に従って、IdM サーバーがスマートカード認証用に設定されている。
- IdM サーバーと IdM クライアントに root アクセス権限がある。
- ルート CA 証明書とすべての中間 CA 証明書があります。
-
--mkhomedir
オプションを使用して IdM クライアントをインストールし、リモートユーザーが正常にログインできるようにしている。ホームディレクトリーを作成しない場合、デフォルトのログイン場所はディレクトリー構造のルート/
になります。
手順
IdM サーバーで、管理者権限を使用して、
ipa-advise
で設定スクリプトを生成します。kinit admin ipa-advise config-client-for-smart-card-auth > config-client-for-smart-card-auth.sh
[root@server SmartCard]# kinit admin [root@server SmartCard]# ipa-advise config-client-for-smart-card-auth > config-client-for-smart-card-auth.sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow config-client-for-smart-card-auth.sh
スクリプトは、以下の操作を実行します。- スマートカードデーモンを設定する。
- システム全体のトラストストアを設定します。
- System Security Services Daemon (SSSD) を設定して、ユーザーがユーザー名とパスワード、またはスマートカードで認証できるようにします。スマートカード認証用の SSSD プロファイルオプションの詳細は、RHEL のスマートカード認証オプション を参照してください。
IdM サーバーから、IdM クライアントマシンの任意のディレクトリーに、スクリプトをコピーします。
scp config-client-for-smart-card-auth.sh root@client.idm.example.com:/root/SmartCard/
[root@server SmartCard]# scp config-client-for-smart-card-auth.sh root@client.idm.example.com:/root/SmartCard/ Password: config-client-for-smart-card-auth.sh 100% 2419 3.5MB/s 00:00
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 便宜上、IdM サーバーから、上の手順で使用した IdM クライアントマシンのディレクトリーに、PEM 形式の CA 証明書ファイルをコピーします。
scp {rootca.pem,subca.pem,issuingca.pem} root@client.idm.example.com:/root/SmartCard/
[root@server SmartCard]# scp {rootca.pem,subca.pem,issuingca.pem} root@client.idm.example.com:/root/SmartCard/ Password: rootca.pem 100% 1237 9.6KB/s 00:00 subca.pem 100% 2514 19.6KB/s 00:00 issuingca.pem 100% 2514 19.6KB/s 00:00
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クライアントマシンで、スクリプトを実行し、CA 証明書を含む PEM ファイルを引数として追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ルート CA 証明書を、サブ CA 証明書の前に引数として追加します。また、CA またはサブ CA 証明書の有効期限が切れていないことを確認します。
これで、クライアントがスマートカード認証に対して設定されました。
2.4. Ansible を使用したスマートカード認証用の IdM クライアント設定 リンクのコピーリンクがクリップボードにコピーされました!
ansible-freeipa
ipasmartcard_client
モジュールを使用して特定の Identity Management (IdM) クライアントを設定し、IdM ユーザーがスマートカードで認証できるようにするには、次の手順に従います。この手順を実行し、以下のいずれかを使用して IdM にアクセスする IdM ユーザーのスマートカード認証を有効にします。
ssh
プロトコル詳細は、スマートカード認証を使用した SSH アクセスの設定 を参照してください。
- コンソールのログイン
- GNOME Display Manager (GDM)
-
su
コマンド
この手順は、IdM Web UI に対する認証には必要ありません。IdM Web UI の認証には 2 つのホストが関係しますが、どちらも IdM クライアントである必要はありません。
- ブラウザーが実行されているマシン。マシンは IdM ドメインの外にある場合があります。
-
httpd
が実行している IdM サーバー
前提条件
- Ansible を使用したスマートカード認証用の IdM サーバー設定 に説明されているとおり、IdM サーバーがスマートカード認証用に設定されている。
- IdM サーバーと IdM クライアントに root アクセス権限がある。
- ルート CA 証明書、IdM CA 証明書、すべての中間 CA の証明書がある。
次の要件を満たすように Ansible コントロールノードを設定した。
- Ansible バージョン 2.14 以降を使用している。
-
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
# openssl x509 -in <filename>.der -inform DER -out <filename>.pem -outform PEM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow IdM CA 証明書は
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 | more
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ansible コントロールノードで、~/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.crt
Copy 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-clients.yml
playbook を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ファイルを保存します。
Ansible Playbook を実行します。Playbook とインベントリーファイルを指定します。
ansible-playbook --vault-password-file=password_file -v -i inventory install-smartcard-clients.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory install-smartcard-clients.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipasmartcard_client
Ansible ロールは、次のアクションを実行します。- スマートカードデーモンを設定する。
- システム全体のトラストストアを設定します。
- System Security Services Daemon (SSSD) を設定して、ユーザーがユーザー名とパスワード、またはスマートカードで認証できるようにします。スマートカード認証用の SSSD プロファイルオプションの詳細は、RHEL のスマートカード認証オプション を参照してください。
これで、インベントリーファイルの ipaclients セクションにリストされているクライアントがスマートカード認証用に設定されました。
--mkhomedir
オプションを使用して IdM クライアントをインストールしている場合、リモートユーザーはホームディレクトリーにログインできます。それ以外の場合、デフォルトのログイン場所はディレクトリー構造のルート /
です。
2.5. IdM Web UI でユーザーエントリーに証明書を追加する リンクのコピーリンクがクリップボードにコピーされました!
IdM Web UI でユーザーエントリーに外部証明書を追加できます。
証明書全体をアップロードする代わりに、IdM のユーザーエントリーに証明書マッピングデータをアップロードすることもできます。システム管理者向けのスマートカード認証の設定を容易にするために、完全な証明書または証明書マッピングデータのいずれかが含まれるユーザーエントリーを、対応する証明書マッピングルールと併用できます。詳細は、認証を設定するための証明書マッピングルール を参照してください。
ユーザーの証明書が IdM 認証局によって発行された場合、証明書はユーザーエントリーにすでに保存されているため、この手順に従う必要はありません。
前提条件
- ユーザーエントリーに追加できる証明書がある。
手順
- 別のユーザーに証明書を追加する場合は、管理者として IdM Web UI にログインします。独自のプロファイルに証明書を追加する場合は、管理者の認証情報が必要ありません。
-
Users
→Active users
→sc_user
の順に移動します。 -
Certificate
オプションを探して、Add
をクリックします。 コマンドラインで、
cat
ユーティリティーまたはテキストエディターを使用して、PEM
形式の証明書を表示します。cat testuser.crt
[user@client SmartCard]$ cat testuser.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - CLI で、証明書をコピーし、Web UI で開いたウィンドウにこれを貼り付けます。
-
Add
をクリックします。
sc_user
エントリーに外部証明書が含まれるようになりました。
2.6. IdM CLI でユーザーエントリーに証明書を追加する リンクのコピーリンクがクリップボードにコピーされました!
IdM CLI でユーザーエントリーに外部証明書を追加できます。
証明書全体をアップロードする代わりに、IdM のユーザーエントリーに証明書マッピングデータをアップロードすることもできます。システム管理者向けのスマートカード認証の設定を容易にするために、完全な証明書または証明書マッピングデータのいずれかが含まれるユーザーエントリーを、対応する証明書マッピングルールと併用できます。詳細は、認証を設定するための証明書マッピングルール を参照してください。
ユーザーの証明書が IdM 認証局によって発行された場合、証明書はユーザーエントリーにすでに保存されているため、この手順に従う必要はありません。
前提条件
- ユーザーエントリーに追加できる証明書がある。
手順
別のユーザーに証明書を追加する場合は、管理者として IdM CLI にログインします。
kinit admin
[user@client SmartCard]$ kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 独自のプロファイルに証明書を追加する場合は、管理者の認証情報が必要ありません。
kinit <smartcard_user>
[user@client SmartCard]$ kinit <smartcard_user>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ヘッダーとフッターのある証明書を含む環境変数を作成し、1 行に連結します。これは、
ipa user-add-cert
コマンドで必要な形式です。export CERT=`openssl x509 -outform der -in testuser.crt | base64 -w0 -`
[user@client SmartCard]$ export CERT=`openssl x509 -outform der -in testuser.crt | base64 -w0 -`
Copy to Clipboard Copied! Toggle word wrap Toggle overflow testuser.crt
ファイルの証明書は、PEM
形式である必要があることに注意してください。ipa user-add-cert
コマンドを使用して、<smartcard_user> のプロファイルに証明書を追加します。ipa user-add-cert <smartcard_user> --certificate=$CERT
[user@client SmartCard]$ ipa user-add-cert <smartcard_user> --certificate=$CERT
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
<smartcard_user>
エントリーに外部証明書が含まれるようになります。
2.7. スマートカードを管理および使用するツールのインストール リンクのコピーリンクがクリップボードにコピーされました!
スマートカードを設定する前に、対応するツール (証明書を生成して pscd
サービスを起動できるもの) をインストールする必要があります。
前提条件
-
root
権限がある。
手順
opensc
パッケージおよびgnutls-utils
パッケージをインストールします。dnf -y install opensc gnutls-utils
# dnf -y install opensc gnutls-utils
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pcscd
サービスを開始します。systemctl start pcscd
# systemctl start pcscd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
pcscd
サービスが起動して実行されていることを確認します。systemctl status pcscd
# systemctl status pcscd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.8. スマートカードを準備し、証明書と鍵をスマートカードにアップロードする リンクのコピーリンクがクリップボードにコピーされました!
pkcs15-init
ツールを使用してスマートカードを設定するには、この手順に従います。このツールは、以下を設定するのに役立ちます。
- スマートカードの消去
- 新しい PIN および任意の PIN ブロック解除キー (PUK) の設定
- スマートカードでの新規スロットの作成
- スロットへの証明書、秘密鍵、および公開鍵の保存
- 必要に応じて、特定のスマートカードではこのタイプのファイナライズが必要なため、スマートカードの設定をロックします。
pkcs15-init
ツールは、すべてのスマートカードで機能するとは限りません。使用しているスマートカードで動作するツールを使用する必要があります。
前提条件
pkcs15-init
ツールを含むopensc
パッケージがインストールされている。詳細は スマートカードを管理および使用するツールのインストール を参照してください。
- カードがリーダーに挿入され、コンピューターに接続されている。
-
スマートカードに保存する秘密鍵、公開鍵、および証明書がある。この手順の
testuser.key
、testuserpublic.key
、およびtestuser.crt
は、秘密鍵、公開鍵、および証明書に使用される名前です。 - 現在のスマートカードユーザー PIN およびセキュリティーオフィス PIN (SO-PIN)
手順
スマートカードを消去して PIN で自身を認証します。
pkcs15-init --erase-card --use-default-transport-keys
$ pkcs15-init --erase-card --use-default-transport-keys Using reader with a card: Reader name PIN [Security Officer PIN] required. Please enter PIN [Security Officer PIN]:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow カードが削除されました。
スマートカードを初期化し、ユーザーの PIN と PUK を設定します。また、セキュリティー担当者の PIN と PUK を設定します。
pkcs15-init --create-pkcs15 --use-default-transport-keys \ --pin 963214 --puk 321478 --so-pin 65498714 --so-puk 784123
$ pkcs15-init --create-pkcs15 --use-default-transport-keys \ --pin 963214 --puk 321478 --so-pin 65498714 --so-puk 784123 Using reader with a card: Reader name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pcks15-init
ツールは、スマートカードに新しいスロットを作成します。スロットのラベルと認証 ID を設定します。
pkcs15-init --store-pin --label testuser \ --auth-id 01 --so-pin 65498714 --pin 963214 --puk 321478
$ pkcs15-init --store-pin --label testuser \ --auth-id 01 --so-pin 65498714 --pin 963214 --puk 321478 Using reader with a card: Reader name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ラベルは人間が判読できる値に設定されます (この場合は
testuser
)。auth-id
は 16 進数の値である必要があります。この場合、01
に設定されます。スマートカードの新しいスロットに秘密鍵を保存し、ラベルを付けます。
pkcs15-init --store-private-key testuser.key --label testuser_key \ --auth-id 01 --id 01 --pin 963214
$ pkcs15-init --store-private-key testuser.key --label testuser_key \ --auth-id 01 --id 01 --pin 963214 Using reader with a card: Reader name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記--id
に指定する値は、秘密鍵を保存するときと、次の手順で証明書を保存するときに同じである必要があります。--id
に独自の値を指定することを推奨します。そうしないと、より複雑な値がツールによって計算されます。スマートカードの新しいスロットに証明書を保存し、ラベル付けします。
pkcs15-init --store-certificate testuser.crt --label testuser_crt \ --auth-id 01 --id 01 --format pem --pin 963214
$ pkcs15-init --store-certificate testuser.crt --label testuser_crt \ --auth-id 01 --id 01 --format pem --pin 963214 Using reader with a card: Reader name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: スマートカードの新しいスロットに公開鍵を保存し、ラベルを付けます。
pkcs15-init --store-public-key testuserpublic.key \ --label testuserpublic_key --auth-id 01 --id 01 --pin 963214
$ pkcs15-init --store-public-key testuserpublic.key \ --label testuserpublic_key --auth-id 01 --id 01 --pin 963214 Using reader with a card: Reader name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記公開鍵が秘密鍵または証明書に対応する場合は、秘密鍵または証明書の ID と同じ ID を指定します。
オプション: スマートカードの中には、設定をロックしてカードをファイナライズする必要があるものもあります。
pkcs15-init -F
$ pkcs15-init -F
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この段階で、スマートカードの新しく作成されたスロットに、証明書、秘密鍵、公開鍵が含まれています。ユーザーの PIN と PUK、およびセキュリティー担当者の PIN と PUK も作成しました。
2.9. スマートカードを使用した IdM へのログイン リンクのコピーリンクがクリップボードにコピーされました!
スマートカードを使用して IdM Web UI にログインできます。
前提条件
- Web ブラウザーが、スマートカード認証を使用できるように設定されている。
- IdM サーバーはスマートカード認証用に設定されています。
- スマートカードにインストールされた証明書は、IdM サーバーによって発行されるか、IdM のユーザーエントリーに追加されています。
- スマートカードのロックを解除するために必要な PIN を知っています。
- スマートカードがリーダーに挿入されました。
手順
- ブラウザーで IdM Web UI を開きます。
- Log In Using Certificate をクリックします。
Password Required ダイアログボックスが開いたら、スマートカードのロックを解除する PIN を追加して、OK ボタンをクリックします。
User Identification Request ダイアログボックスが開きます。
スマートカードに複数の証明書が含まれている場合は、Choose a certificate to present as identification の下にあるドロップダウンリストで、認証に使用する証明書を選択します。
- OK ボタンをクリックします。
これで、IdM Web UI に正常にログインできるようになりました。
2.10. IdM クライアントでスマートカード認証を使用して GDM にログインする リンクのコピーリンクがクリップボードにコピーされました!
GNOME Desktop Manager (GDM) には認証が必要です。パスワードは使用できますが、認証にスマートカードを使用することもできます。
以下の手順に従って、スマートカード認証を使用して GDM にアクセスします。
前提条件
- システムはスマートカード認証用に設定されています。詳細は、スマートカード認証用の IdM クライアントの設定 を参照してください。
- スマートカードに、証明書と秘密鍵が含まれている。
- ユーザーアカウントは、IdM ドメインのメンバーです。
スマートカードの証明書は、以下を使用してユーザーエントリーにマッピングします。
- 特定のユーザーエントリーへの証明書の割り当て。詳細は、IdM Web UI でのユーザーエントリーへの証明書追加 または IdM CLI でのユーザーエントリーへの証明書追加 を参照してください。
- アカウントに適用される証明書マッピングデータ。詳細は、スマートカードにおける認証を設定するための証明書マッピングルール を参照してください。
手順
- スマートカードをリーダーに挿入します。
- スマートカード PIN を入力します。
- Sign In をクリックします。
RHEL システムにログインし、IdM サーバーが提供する TGT がある。
検証
端末 ウィンドウで
klist
を入力し、結果を確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.11. su コマンドでのスマートカード認証の使用 リンクのコピーリンクがクリップボードにコピーされました!
別のユーザーへの変更には認証が必要です。パスワードまたは証明書を使用できます。以下の手順に従って、su
コマンドでスマートカードを使用します。これは、su
コマンドを入力すると、スマートカード PIN の入力が求められます。
前提条件
IdM サーバーとクライアントがスマートカード認証用に設定されました。
- スマートカード認証用の IdM サーバーの設定 を参照してください。
- スマートカード認証用の IdM クライアントの設定 を参照してください。
- スマートカードに、証明書と秘密鍵が含まれている。スマートカードでの証明書の保存 を参照してください。
- カードがリーダーに挿入され、コンピューターに接続されている。
手順
端末で、
su
コマンドで別のユーザーに移動します。su - <user_name>
$ su - <user_name> PIN for smart_card
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定が正しい場合は、スマートカードの PIN を入力するよう求められます。
第3章 IdM でスマートカード認証用に ADCS が発行した証明書の設定 リンクのコピーリンクがクリップボードにコピーされました!
以下の場合は、Active Directory (AD) 証明書サービスによって証明書が発行されたユーザーに対して IdM でスマートカード認証を設定します。
- デプロイメントが、Identity Management (IdM) と Active Directory (AD) と間のフォレスト間の信頼に基づいている場合
- AD にアカウントが保存されているユーザーに対してスマートカード認証を許可する必要がある場合
- 証明書が Active Directory Certificate Services (ADCS) に作成および保存される場合
前提条件
Identity Management (IdM) および Active Directory (AD) 信頼がインストールされている。
詳細は、IdM と AD との間の信頼のインストール を参照してください。
- Active Directory Certificate Services (ADCS) がインストールされ、ユーザーの証明書が生成されている。
3.1. 信頼の設定と証明書の使用に必要な Windows Server 設定 リンクのコピーリンクがクリップボードにコピーされました!
Windows Server で以下を設定する必要があります。
- Active Directory Certificate Services (ADCS) をインストールする
- 認証局を作成する
- 認証局の Web 登録を使用する場合は、Internet Information Services (IIS) を設定する
エクスポートされた証明書が次の基準を満たしている必要があります。
-
鍵には
2048
ビット以上が必要 - 秘密鍵を含める
Personal Information Exchange (
PKCS #12(.PFX)
) の形式の証明書が必要- 証明書のプライバシーを有効にする
3.2. sftp を使用して Active Directory から証明書のコピー リンクのコピーリンクがクリップボードにコピーされました!
スマートカード認証を使用できるようにするには、次の証明書ファイルをコピーする必要があります。
-
IdM サーバーにある
CER
形式のルート CA 証明書 (adcs-winserver-ca.cer
) -
IdM クライアントの
PFX
形式の秘密鍵を持つユーザー証明書 (aduser1.pfx
)
この手順では、SSH アクセスが許可されていることを想定しています。SSH が使用できない場合、ユーザーは AD サーバーから IdM サーバーおよびクライアントにファイルをコピーする必要があります。
手順
IdM サーバー から接続し、
adcs-winserver-ca.cer
ルート証明書を IdM サーバーにコピーします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow IdM クライアント から接続し、
aduser1.pfx
ユーザー証明書をクライアントにコピーします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
これで、CA 証明書は IdM サーバーに保存され、ユーザー証明書はクライアントマシンに保存されます。
3.3. ADCS 証明書を使用したスマートカード認証用の IdM サーバーおよびクライアントの設定 リンクのコピーリンクがクリップボードにコピーされました!
IdM 環境でスマートカード認証を使用できるように、IdM (Identity Management) サーバーおよびクライアントを設定する必要があります。IdM には、以下に示す必要な変更をすべて行う ipa-advise
スクリプトが含まれています。
- 必要なパッケージをインストールする
- IdM サーバーおよびクライアントを設定する
- CA 証明書を所定の場所にコピーする
IdM サーバーで ipa-advise
を実行できるようになります。
以下の手順に従って、スマートカード認証用にサーバーとクライアントを設定します。
-
IdM サーバー -
ipa-advise
スクリプトを準備して、スマートカード認証用に IdM サーバーを設定します。 -
IdM サーバー -
ipa-advise
スクリプトを準備して、スマートカード認証用に IdM クライアントを設定します。 -
IdM サーバー - AD 証明書を使用して IdM サーバーに
ipa-advise
サーバースクリプトを適用します。 - クライアントスクリプトを IdM クライアントマシンに移動します。
-
IdM サーバー - AD 証明書を使用して IdM クライアントに
ipa-advise
クライアントスクリプトを適用します。
前提条件
- 証明書が IdM サーバーにコピーされている。
- Kerberos チケットを取得している。
- 管理者権限を持つユーザーとしてログインしている。
手順
IdM サーバーで、クライアントを設定する
ipa-advise
スクリプトを使用します。ipa-advise config-client-for-smart-card-auth > sc_client.sh
[root@idmserver ~]# ipa-advise config-client-for-smart-card-auth > sc_client.sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow IdM サーバーで、サーバーを設定する
ipa-advise
スクリプトを使用します。ipa-advise config-server-for-smart-card-auth > sc_server.sh
[root@idmserver ~]# ipa-advise config-server-for-smart-card-auth > sc_server.sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow IdM サーバーで、スクリプトを実行します。
sh -x sc_server.sh adcs-winserver-ca.cer
[root@idmserver ~]# sh -x sc_server.sh adcs-winserver-ca.cer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - IdM Apache HTTP サーバーを設定します。
- キー配布センター (KDC) の Kerberos (PKINIT) で、初回認証用の公開鍵暗号化機能を有効にします。
- スマートカード認可要求を受け入れるように IdM Web UI を設定します。
sc_client.sh
スクリプトをクライアントシステムにコピーします。scp sc_client.sh root@client1.idm.example.com:/root
[root@idmserver ~]# scp sc_client.sh root@client1.idm.example.com:/root Password: sc_client.sh 100% 2857 1.6MB/s 00:00
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Windows 証明書をクライアントシステムにコピーします。
scp adcs-winserver-ca.cer root@client1.idm.example.com:/root
[root@idmserver ~]# scp adcs-winserver-ca.cer root@client1.idm.example.com:/root Password: adcs-winserver-ca.cer 100% 1254 952.0KB/s 00:00
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クライアントシステムで、クライアントスクリプトを実行します。
sh -x sc_client.sh adcs-winserver-ca.cer
[root@idmclient1 ~]# sh -x sc_client.sh adcs-winserver-ca.cer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
CA 証明書が正しい形式で IdM サーバーおよびクライアントシステムにインストールされます。次のステップは、ユーザー証明書をスマートカード自体にコピーすることです。
3.4. PFX ファイルの変換 リンクのコピーリンクがクリップボードにコピーされました!
PFX (PKCS#12) ファイルをスマートカードに保存する前に、以下を行う必要があります。
- ファイルを PEM 形式に変換する
- 秘密鍵と証明書を 2 つの異なるファイルに抽出する
前提条件
- PFX ファイルが IdM クライアントマシンにコピーされます。
手順
IdM クライアントで、ファイルを PEM 形式に変換します。
openssl pkcs12 -in aduser1.pfx -out aduser1_cert_only.pem -clcerts -nodes
[root@idmclient1 ~]# openssl pkcs12 -in aduser1.pfx -out aduser1_cert_only.pem -clcerts -nodes Enter Import Password:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 鍵を別のファイルにデプロイメントします。
openssl pkcs12 -in adduser1.pfx -nocerts -out adduser1.pem > aduser1.key
[root@idmclient1 ~]# openssl pkcs12 -in adduser1.pfx -nocerts -out adduser1.pem > aduser1.key
Copy to Clipboard Copied! Toggle word wrap Toggle overflow パブリック証明書を別のファイルにデプロイメントします。
openssl pkcs12 -in adduser1.pfx -clcerts -nokeys -out aduser1_cert_only.pem > aduser1.crt
[root@idmclient1 ~]# openssl pkcs12 -in adduser1.pfx -clcerts -nokeys -out aduser1_cert_only.pem > aduser1.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
この時点で、aduser1.key
および aduser1.crt
をスマートカードに保存できます。
3.5. スマートカードを管理および使用するツールのインストール リンクのコピーリンクがクリップボードにコピーされました!
スマートカードを設定する前に、対応するツール (証明書を生成して pscd
サービスを起動できるもの) をインストールする必要があります。
前提条件
-
root
権限がある。
手順
opensc
パッケージおよびgnutls-utils
パッケージをインストールします。dnf -y install opensc gnutls-utils
# dnf -y install opensc gnutls-utils
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pcscd
サービスを開始します。systemctl start pcscd
# systemctl start pcscd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
pcscd
サービスが起動して実行されていることを確認します。systemctl status pcscd
# systemctl status pcscd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6. スマートカードを準備し、証明書と鍵をスマートカードにアップロードする リンクのコピーリンクがクリップボードにコピーされました!
pkcs15-init
ツールを使用してスマートカードを設定するには、この手順に従います。このツールは、以下を設定するのに役立ちます。
- スマートカードの消去
- 新しい PIN および任意の PIN ブロック解除キー (PUK) の設定
- スマートカードでの新規スロットの作成
- スロットへの証明書、秘密鍵、および公開鍵の保存
- 必要に応じて、特定のスマートカードではこのタイプのファイナライズが必要なため、スマートカードの設定をロックします。
pkcs15-init
ツールは、すべてのスマートカードで機能するとは限りません。使用しているスマートカードで動作するツールを使用する必要があります。
前提条件
pkcs15-init
ツールを含むopensc
パッケージがインストールされている。詳細は スマートカードを管理および使用するツールのインストール を参照してください。
- カードがリーダーに挿入され、コンピューターに接続されている。
-
スマートカードに保存する秘密鍵、公開鍵、および証明書がある。この手順の
testuser.key
、testuserpublic.key
、およびtestuser.crt
は、秘密鍵、公開鍵、および証明書に使用される名前です。 - 現在のスマートカードユーザー PIN およびセキュリティーオフィス PIN (SO-PIN)
手順
スマートカードを消去して PIN で自身を認証します。
pkcs15-init --erase-card --use-default-transport-keys
$ pkcs15-init --erase-card --use-default-transport-keys Using reader with a card: Reader name PIN [Security Officer PIN] required. Please enter PIN [Security Officer PIN]:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow カードが削除されました。
スマートカードを初期化し、ユーザーの PIN と PUK を設定します。また、セキュリティー担当者の PIN と PUK を設定します。
pkcs15-init --create-pkcs15 --use-default-transport-keys \ --pin 963214 --puk 321478 --so-pin 65498714 --so-puk 784123
$ pkcs15-init --create-pkcs15 --use-default-transport-keys \ --pin 963214 --puk 321478 --so-pin 65498714 --so-puk 784123 Using reader with a card: Reader name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pcks15-init
ツールは、スマートカードに新しいスロットを作成します。スロットのラベルと認証 ID を設定します。
pkcs15-init --store-pin --label testuser \ --auth-id 01 --so-pin 65498714 --pin 963214 --puk 321478
$ pkcs15-init --store-pin --label testuser \ --auth-id 01 --so-pin 65498714 --pin 963214 --puk 321478 Using reader with a card: Reader name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ラベルは人間が判読できる値に設定されます (この場合は
testuser
)。auth-id
は 16 進数の値である必要があります。この場合、01
に設定されます。スマートカードの新しいスロットに秘密鍵を保存し、ラベルを付けます。
pkcs15-init --store-private-key testuser.key --label testuser_key \ --auth-id 01 --id 01 --pin 963214
$ pkcs15-init --store-private-key testuser.key --label testuser_key \ --auth-id 01 --id 01 --pin 963214 Using reader with a card: Reader name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記--id
に指定する値は、秘密鍵を保存するときと、次の手順で証明書を保存するときに同じである必要があります。--id
に独自の値を指定することを推奨します。そうしないと、より複雑な値がツールによって計算されます。スマートカードの新しいスロットに証明書を保存し、ラベル付けします。
pkcs15-init --store-certificate testuser.crt --label testuser_crt \ --auth-id 01 --id 01 --format pem --pin 963214
$ pkcs15-init --store-certificate testuser.crt --label testuser_crt \ --auth-id 01 --id 01 --format pem --pin 963214 Using reader with a card: Reader name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: スマートカードの新しいスロットに公開鍵を保存し、ラベルを付けます。
pkcs15-init --store-public-key testuserpublic.key \ --label testuserpublic_key --auth-id 01 --id 01 --pin 963214
$ pkcs15-init --store-public-key testuserpublic.key \ --label testuserpublic_key --auth-id 01 --id 01 --pin 963214 Using reader with a card: Reader name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記公開鍵が秘密鍵または証明書に対応する場合は、秘密鍵または証明書の ID と同じ ID を指定します。
オプション: スマートカードの中には、設定をロックしてカードをファイナライズする必要があるものもあります。
pkcs15-init -F
$ pkcs15-init -F
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この段階で、スマートカードの新しく作成されたスロットに、証明書、秘密鍵、公開鍵が含まれています。ユーザーの PIN と PUK、およびセキュリティー担当者の PIN と PUK も作成しました。
3.7. sssd.conf でタイムアウトの設定 リンクのコピーリンクがクリップボードにコピーされました!
スマートカード証明書による認証は、SSSD で使用されるデフォルトのタイムアウトよりも時間がかかる場合があります。タイムアウトの期限切れは次の原因で発生する可能性があります。
- 読み込みが遅い
- 物理デバイスから仮想環境への転送
- スマートカードに保存されている証明書が多すぎる
- OCSP レスポンダーからの応答が遅い (証明書の検証に OCSP (Online Certificate Status Protocol) を使用している場合)
この場合は、sssd.conf
ファイルにある次のタイムアウトを、たとえば 60 秒まで延長できます。
-
p11_child_timeout
-
krb5_auth_timeout
前提条件
- root としてログインしている。
手順
sssd.conf
ファイルを開きます。vim /etc/sssd/sssd.conf
[root@idmclient1 ~]# vim /etc/sssd/sssd.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow p11_child_timeout
の値を変更します。[pam] p11_child_timeout = 60
[pam] p11_child_timeout = 60
Copy to Clipboard Copied! Toggle word wrap Toggle overflow krb5_auth_timeout
の値を変更します。[domain/IDM.EXAMPLE.COM] krb5_auth_timeout = 60
[domain/IDM.EXAMPLE.COM] krb5_auth_timeout = 60
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 設定を保存します。
これで、スマートカードとのやり取りを 1 分間 (60 秒) 実行できるようになります。1 分経過すると、タイムアウトで認証が失敗します。
3.8. スマートカード認証用の証明書マッピングルールの作成 リンクのコピーリンクがクリップボードにコピーされました!
AD (Active Directory) および IdM (Identity Management) にアカウントを持つユーザーに対して証明書を 1 つ使用する場合は、IdM サーバーで証明書マッピングルールを作成できます。
このようなルールを作成すると、ユーザーは両方のドメインのスマートカードで認証できます。
証明書マッピングルールの詳細は、認証を設定するための証明書マッピングルール を参照してください。
第4章 認証を設定するための証明書マッピングルール リンクのコピーリンクがクリップボードにコピーされました!
次のシナリオでは、証明書マッピングルールの設定が必要になる場合があります。
- 証明書は、IdM ドメインが信頼関係にある Active Directory (AD) の証明書システムによって発行されています。
- 証明書は外部の認証局によって発行されています。
- IdM 環境は大規模で、多くのユーザーがスマートカードを使用しています。この場合、完全な証明書の追加は複雑になる可能性があります。件名と発行者はほとんどのシナリオで予測可能なため、完全な証明書よりも事前に追加する方が簡単です。
システム管理者は、証明書マッピングルールを作成し、特定のユーザーに証明書を発行する前に、ユーザーエントリーに証明書マッピングデータを追加できます。証明書を発行すると、完全な証明書がまだユーザーエントリーにアップロードされていなくても、ユーザーは証明書を使用してログインできます。
さらに、証明書は定期的に更新されるため、証明書マッピングルールにより管理オーバーヘッドが削減されます。ユーザーの証明書が更新される場合、管理者はユーザーエントリーを更新する必要はありません。たとえば、マッピングが Subject
と Issuer
の値に基づいている場合、および新しい証明書の Subject と Issuer が以前と同じ場合は、マッピングは引き続き適用されます。一方で、完全な証明書を使用した場合、管理者は古い証明書に置き換わる新しい証明書をユーザーエントリーにアップロードする必要があります。
証明書マッピングを設定するには、以下を実行します。
- 管理者は、証明書マッピングデータまたは完全な証明書をユーザーアカウントにロードする必要があります。
- 管理者は、証明書の情報と一致する証明書マッピングデータエントリーがアカウントに含まれているユーザーが IdM に正常にログインできるように、証明書マッピングルールを作成する必要があります。
証明書マッピングルールが作成されると、エンドユーザーが ファイルシステム または スマートカード に保存されている証明書を提示すると、認証は成功します。
キー配布センター (KDC) には、証明書マッピングルールのキャッシュがあります。キャッシュは最初の certauth
要求の際に入力され、タイムアウトは 300 秒にハードコーディングされています。KDC は、再起動するかキャッシュが期限切れにならない限り、証明書マッピングルールへの変更を認識しません。
証明書マッピングルールは、証明書を使用するユースケースに応じて異なります。たとえば、証明書を使用して SSH を使用している場合、証明書から公開鍵を抽出するには完全な証明書が必要です。
第5章 集中管理ユーザー向けに Web コンソールを使用したスマートカード認証の設定 リンクのコピーリンクがクリップボードにコピーされました!
RHEL Web コンソールで、以下の方法で集中管理されているユーザーに対してスマートカード認証を設定できます。
- Identity Management
- Identity Management を使用してフォレスト間の信頼に接続する Active Directory
前提条件
スマートカード認証を使用するシステムは、Active Directory または Identity Management ドメインのメンバーである必要があります。
Web コンソールを使用して RHEL 9 システムをドメインに参加させる方法の詳細は、Web コンソールを使用して RHEL システムを IdM ドメインに参加させる を参照してください。
スマートカード認証に使用される証明書は、Identity Management または Active Directory の特定のユーザーに関連付けられている必要があります。
Identity Management でのユーザーと証明書の関連付けの詳細は、IdM Web UI のユーザーエントリーへの証明書の追加 または IdM CLI でのユーザーエントリーへの証明書の追加 を参照してください。
5.1. 集中管理ユーザーのスマートカード認証 リンクのコピーリンクがクリップボードにコピーされました!
スマートカードは、カードに保存されている証明書を使用して個人認証を提供できる物理デバイスです。個人認証とは、ユーザーパスワードと同じ方法でスマートカードを使用できることを意味します。
秘密鍵と証明書の形式で、スマートカードにユーザーの認証情報を保存できます。特別なソフトウェアおよびハードウェアを使用して、そのソフトウェアにアクセスします。スマートカードをリーダーまたは USB ソケットに挿入して、パスワードを入力する代わりに、スマートカードの PIN コードを入力します。
Identity Management (IdM) では、以下によるスマートカード認証に対応しています。
- IdM 認証局が発行するユーザー証明書。
- Active Directory Certificate Service (ADCS) 認証局が発行するユーザー証明書。
スマートカード認証の使用を開始する場合は、ハードウェア要件 Smart Card support in RHEL8+ を参照してください。
5.2. スマートカードを管理および使用するツールのインストール リンクのコピーリンクがクリップボードにコピーされました!
スマートカードを設定する前に、対応するツール (証明書を生成して pscd
サービスを起動できるもの) をインストールする必要があります。
前提条件
-
root
権限がある。
手順
opensc
パッケージおよびgnutls-utils
パッケージをインストールします。dnf -y install opensc gnutls-utils
# dnf -y install opensc gnutls-utils
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pcscd
サービスを開始します。systemctl start pcscd
# systemctl start pcscd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
pcscd
サービスが起動して実行されていることを確認します。systemctl status pcscd
# systemctl status pcscd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3. スマートカードを準備し、証明書と鍵をスマートカードにアップロードする リンクのコピーリンクがクリップボードにコピーされました!
pkcs15-init
ツールを使用してスマートカードを設定するには、この手順に従います。このツールは、以下を設定するのに役立ちます。
- スマートカードの消去
- 新しい PIN および任意の PIN ブロック解除キー (PUK) の設定
- スマートカードでの新規スロットの作成
- スロットへの証明書、秘密鍵、および公開鍵の保存
- 必要に応じて、特定のスマートカードではこのタイプのファイナライズが必要なため、スマートカードの設定をロックします。
pkcs15-init
ツールは、すべてのスマートカードで機能するとは限りません。使用しているスマートカードで動作するツールを使用する必要があります。
前提条件
pkcs15-init
ツールを含むopensc
パッケージがインストールされている。詳細は スマートカードを管理および使用するツールのインストール を参照してください。
- カードがリーダーに挿入され、コンピューターに接続されている。
-
スマートカードに保存する秘密鍵、公開鍵、および証明書がある。この手順の
testuser.key
、testuserpublic.key
、およびtestuser.crt
は、秘密鍵、公開鍵、および証明書に使用される名前です。 - 現在のスマートカードユーザー PIN およびセキュリティーオフィス PIN (SO-PIN)
手順
スマートカードを消去して PIN で自身を認証します。
pkcs15-init --erase-card --use-default-transport-keys
$ pkcs15-init --erase-card --use-default-transport-keys Using reader with a card: Reader name PIN [Security Officer PIN] required. Please enter PIN [Security Officer PIN]:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow カードが削除されました。
スマートカードを初期化し、ユーザーの PIN と PUK を設定します。また、セキュリティー担当者の PIN と PUK を設定します。
pkcs15-init --create-pkcs15 --use-default-transport-keys \ --pin 963214 --puk 321478 --so-pin 65498714 --so-puk 784123
$ pkcs15-init --create-pkcs15 --use-default-transport-keys \ --pin 963214 --puk 321478 --so-pin 65498714 --so-puk 784123 Using reader with a card: Reader name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pcks15-init
ツールは、スマートカードに新しいスロットを作成します。スロットのラベルと認証 ID を設定します。
pkcs15-init --store-pin --label testuser \ --auth-id 01 --so-pin 65498714 --pin 963214 --puk 321478
$ pkcs15-init --store-pin --label testuser \ --auth-id 01 --so-pin 65498714 --pin 963214 --puk 321478 Using reader with a card: Reader name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ラベルは人間が判読できる値に設定されます (この場合は
testuser
)。auth-id
は 16 進数の値である必要があります。この場合、01
に設定されます。スマートカードの新しいスロットに秘密鍵を保存し、ラベルを付けます。
pkcs15-init --store-private-key testuser.key --label testuser_key \ --auth-id 01 --id 01 --pin 963214
$ pkcs15-init --store-private-key testuser.key --label testuser_key \ --auth-id 01 --id 01 --pin 963214 Using reader with a card: Reader name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記--id
に指定する値は、秘密鍵を保存するときと、次の手順で証明書を保存するときに同じである必要があります。--id
に独自の値を指定することを推奨します。そうしないと、より複雑な値がツールによって計算されます。スマートカードの新しいスロットに証明書を保存し、ラベル付けします。
pkcs15-init --store-certificate testuser.crt --label testuser_crt \ --auth-id 01 --id 01 --format pem --pin 963214
$ pkcs15-init --store-certificate testuser.crt --label testuser_crt \ --auth-id 01 --id 01 --format pem --pin 963214 Using reader with a card: Reader name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: スマートカードの新しいスロットに公開鍵を保存し、ラベルを付けます。
pkcs15-init --store-public-key testuserpublic.key \ --label testuserpublic_key --auth-id 01 --id 01 --pin 963214
$ pkcs15-init --store-public-key testuserpublic.key \ --label testuserpublic_key --auth-id 01 --id 01 --pin 963214 Using reader with a card: Reader name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記公開鍵が秘密鍵または証明書に対応する場合は、秘密鍵または証明書の ID と同じ ID を指定します。
オプション: スマートカードの中には、設定をロックしてカードをファイナライズする必要があるものもあります。
pkcs15-init -F
$ pkcs15-init -F
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この段階で、スマートカードの新しく作成されたスロットに、証明書、秘密鍵、公開鍵が含まれています。ユーザーの PIN と PUK、およびセキュリティー担当者の PIN と PUK も作成しました。
5.4. Web コンソールのスマートカード認証の有効化 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールでスマートカード認証を使用するには、cockpit.conf
ファイルでスマートカード認証方式を有効にします。
また、同じファイルでパスワード認証を無効にすることもできます。
前提条件
- RHEL 9 Web コンソールがインストールされている。
- cockpit サービスが有効になっている。
ユーザーアカウントが Web コンソールにログインできる。
手順は、Web コンソールのインストールおよび有効化 を参照してください。
手順
RHEL 9 Web コンソールにログインします。
詳細は、Web コンソールへのログイン を参照してください。
- Terminal をクリックします。
/etc/cockpit/cockpit.conf
でClientCertAuthentication
をyes
に設定します。[WebService] ClientCertAuthentication = yes
[WebService] ClientCertAuthentication = yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 以下のようにして
cockpit.conf
でパスワードベースの認証を無効にします。[Basic] action = none
[Basic] action = none
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この設定ではパスワード認証が無効になり、常にスマートカードを使用する必要があります。
Web コンソールを再起動して、
cockpit.service
が変更を受け入れることを確認します。systemctl restart cockpit
# systemctl restart cockpit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.5. スマートカードを使用して Web コンソールへのログイン リンクのコピーリンクがクリップボードにコピーされました!
スマートカードを使用して、Web コンソールにログインできます。
前提条件
- 有効な証明書が、Active Directory または Identity Management ドメインで作成されたユーザーアカウントに関連付けられているスマートカードに保存されている。
- スマートカードのロックを解除するピン。
- スマートカードがリーダーに追加されている。
- RHEL 9 Web コンソールがインストールされている。
- cockpit サービスが有効になっている。
ユーザーアカウントが Web コンソールにログインできる。
手順は、Web コンソールのインストールおよび有効化 を参照してください。
手順
RHEL 9 Web コンソールにログインします。
詳細は、Web コンソールへのログイン を参照してください。
ブラウザーは、スマートカードに保存されている証明書を PIN で保護するよう要求します。
- Password Required ダイアログボックスで PIN を入力し、OK をクリックします。
- User Identification Request ダイアログボックスで、スマートカードに保存されている証明書を選択します。
Remember this decision を選択します。
次回、このウィンドウが開きません。
注記この手順は、Google Chrome ユーザーには適用されません。
- OK をクリックします。
これで接続され、Web コンソールがそのコンテンツを表示します。
5.6. スマートカードユーザーに対するパスワードなしの sudo 認証の有効化 リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールで、スマートカードユーザー向けに sudo
およびその他のサービスへのパスワードなし認証を設定できます。
また、Red Hat Enterprise Linux Identity Management を使用している場合は、sudo
、SSH、またはその他のサービスに対して認証するために、最初の Web コンソール証明書認証を信頼できるものとして宣言できます。そのために、Web コンソールはユーザーセッションに S4U2Proxy Kerberos チケットを自動的に作成します。
前提条件
- Identity Management がインストールされている。
- Identity Management を使用してフォレスト間の信頼に接続された Active Directory。
- Web コンソールへのログイン用に設定されたスマートカード。詳細は、Configuring smart card authentication with the web console for centrally managed users を参照してください。
手順
チケットがアクセスできるホストをリストアップする制約委譲ルールを設定します。
例5.1 制約委譲ルールの設定
Web コンソールセッションはホスト
host.example.com
で実行されており、sudo
を使用して自分のホストにアクセスできるように信頼されている必要があります。さらに、2 つ目の信頼できるホストとしてremote.example.com
を追加します。以下の委譲を作成します。
以下のコマンドを実行して、特定のルールがアクセスできるターゲットマシンのリストを追加します。
ipa servicedelegationtarget-add cockpit-target ipa servicedelegationtarget-add-member cockpit-target \ --principals=host/host.example.com@EXAMPLE.COM \ --principals=host/remote.example.com@EXAMPLE.COM
# ipa servicedelegationtarget-add cockpit-target # ipa servicedelegationtarget-add-member cockpit-target \ --principals=host/host.example.com@EXAMPLE.COM \ --principals=host/remote.example.com@EXAMPLE.COM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Web コンソールセッション (HTTP/プリンシパル) がそのホストリストにアクセスできるようにするには、次のコマンドを使用します。
ipa servicedelegationrule-add cockpit-delegation ipa servicedelegationrule-add-member cockpit-delegation \ --principals=HTTP/host.example.com@EXAMPLE.COM ipa servicedelegationrule-add-target cockpit-delegation \ --servicedelegationtargets=cockpit-target
# ipa servicedelegationrule-add cockpit-delegation # ipa servicedelegationrule-add-member cockpit-delegation \ --principals=HTTP/host.example.com@EXAMPLE.COM # ipa servicedelegationrule-add-target cockpit-delegation \ --servicedelegationtargets=cockpit-target
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
対応するサービスで GSS 認証を有効にします。
sudo の場合は、
/etc/sssd/sssd.conf
ファイルでpam_sss_gss
モジュールを有効にします。root で、
/etc/sssd/sssd.conf
設定ファイルにドメイン用のエントリーを追加します。[domain/example.com] pam_gssapi_services = sudo, sudo-i
[domain/example.com] pam_gssapi_services = sudo, sudo-i
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/pam.d/sudo
ファイルの 1 行目でモジュールを有効にします。auth sufficient pam_sss_gss.so
auth sufficient pam_sss_gss.so
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
SSH の場合、
/etc/ssh/sshd_config
ファイルのGSSAPIAuthentication
オプションをyes
に更新します。
委譲された S4U チケットが、Web コンソールからリモートの SSH ホストに接続するときに転送されません。チケットを使用してリモートホストの sudo を認証してもうまくいきません。
検証
- スマートカードを使用して Web コンソールにログインします。
-
Limited access
ボタンをクリックします。 - スマートカードを使用して認証を行います。
または、次のようになります。
- 別のホストに SSH で接続を試みます。
5.7. DoS 攻撃を防ぐためのユーザーセッションおよびメモリーの制限 リンクのコピーリンクがクリップボードにコピーされました!
証明書認証は、別のユーザーの権限を借用しようとする攻撃者に対して Web サーバー cockpit-ws
のインスタンスを分離して孤立させることで保護されます。ただし、これによりサービス拒否 (DoS) 攻撃が発生する可能性があります。リモート攻撃者は大量の証明書を作成し、それぞれ異なる証明書を使用して大量の HTTPS リクエストを cockpit-ws
に送信する可能性があります。
このような DoS 攻撃を防ぐには、これらの Web サーバーインスタンスの共有リソースを制限します。デフォルトでは、接続数とメモリー使用量の制限として、200 スレッドと 75 % (ソフト) または 90 % (ハード) のメモリー制限が設定されています。
この例の手順では、接続数とメモリーを制限することでリソースを保護する方法を示します。
手順
端末で
system-cockpithttps.slice
設定ファイルを開きます。systemctl edit system-cockpithttps.slice
# systemctl edit system-cockpithttps.slice
Copy to Clipboard Copied! Toggle word wrap Toggle overflow TasksMax
を 100 に、CPUQuota
を 30% に制限します。[Slice] # change existing value TasksMax=100 # add new restriction CPUQuota=30%
[Slice] # change existing value TasksMax=100 # add new restriction CPUQuota=30%
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 変更を適用するには、システムを再起動します。
systemctl daemon-reload systemctl stop cockpit
# systemctl daemon-reload # systemctl stop cockpit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
新しいメモリーとユーザーセッションにより、cockpit-ws
Web サーバーに対する DoS 攻撃のリスクが低減されます。
第6章 ローカル証明書を使用したスマートカード認証の設定 リンクのコピーリンクがクリップボードにコピーされました!
ローカル証明書を使用してスマートカード認証を設定するには、次の手順を実行します。
- ホストがドメインに接続されていない
- このホストで、スマートカードで認証する必要がある
- スマートカード認証を使用して SSH アクセスを設定する必要がある
-
authselect
を使用してスマートカードを設定する必要がある
このシナリオを行うには、以下の設定を使用します。
スマートカードで認証するユーザーのユーザー証明書を取得する。証明書は、ドメインで使用される信頼できる認証局によって生成される必要があります。
証明書を取得できない場合は、テスト目的で、ローカルの認証局が署名したユーザー証明書を生成します。
- スマートカードに証明書と秘密鍵を保存する。
- SSH アクセス用のスマートカード認証を設定する。
ホストがドメインの一部である場合は、そのホストをドメインに追加し、Active Directory または Identity Management 認証局が生成した証明書を使用します。
スマートカードに IdM 証明書を作成する方法は、スマートカード認証用の Identity Management の設定 を参照してください。
前提条件
authselect がインストールされている。
authselect ツールは、Linux ホストでユーザー認証を設定し、スマートカード認証パラメーターを設定するのに使用できます。authselect の詳細は、authselect とは を参照してください。
RHEL 9 で対応しているスマートカードまたは USB デバイス
詳細は、Smart Card support in RHEL9 を参照してください。
6.1. ローカル証明書の作成 リンクのコピーリンクがクリップボードにコピーされました!
この手順に従って、次のタスクを実行します。
- OpenSSL 認証局の生成
- 証明書署名リクエストの作成
以下の手順は、テスト目的のみを想定しています。ローカルの自己署名証明局により生成される証明書は、AD、IdM、または RHCS 認証局を使用する場合と同じように安全ではありません。ホストがドメインに含まれていない場合でも、企業の認定機関が生成した証明書を使用する必要があります。
手順
証明書を生成するディレクトリーを作成します。以下に例を示します。
mkdir /tmp/ca cd /tmp/ca
# mkdir /tmp/ca # cd /tmp/ca
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 証明書を設定します (このテキストは、
ca
ディレクトリーのコマンドラインにコピーします)。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のディレクトリーを作成します。
mkdir certs crl newcerts
# mkdir certs crl newcerts
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のファイルを作成します。
touch index.txt crlnumber index.txt.attr
# touch index.txt crlnumber index.txt.attr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow シリアルファイルに番号 01 を書き込みます。
echo 01 > serial
# echo 01 > serial
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、シリアル番号内に 01 を書き込みます。これは証明書のシリアル番号です。この CA によってリリースされる新しい証明書ごとに、数が 1 つ増えます。
OpenSSL root CA キーを作成します。
openssl genrsa -out rootCA.key 2048
# openssl genrsa -out rootCA.key 2048
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 自己署名 root 認証局証明書を作成します。
openssl req -batch -config ca.cnf \ -x509 -new -nodes -key rootCA.key -sha256 -days 10000 \ -set_serial 0 -extensions v3_ca -out rootCA.crt
# openssl req -batch -config ca.cnf \ -x509 -new -nodes -key rootCA.key -sha256 -days 10000 \ -set_serial 0 -extensions v3_ca -out rootCA.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ユーザー名のキーを作成します。
openssl genrsa -out example.user.key 2048
# openssl genrsa -out example.user.key 2048
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このキーは、セキュリティーが保護されていないローカルシステムで生成されるため、キーがカードに格納されると、キーがシステムから削除されます。
キーはスマートカードで直接作成できます。これを行う場合は、スマートカードの製造元が作成した手順に従います。
証明書署名リクエスト設定ファイルを作成します (このテキストを ca ディレクトリーでコマンドラインにコピーします)。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow example.user 証明書用の証明書署名リクエストを作成します。
openssl req -new -nodes -key example.user.key \ -reqexts req_exts -config req.cnf -out example.user.csr
# openssl req -new -nodes -key example.user.key \ -reqexts req_exts -config req.cnf -out example.user.csr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新しい証明書を設定します。有効期限は 1 年に設定されています。
openssl ca -config ca.cnf -batch -notext \ -keyfile rootCA.key -in example.user.csr -days 365 \ -extensions usr_cert -out example.user.crt
# openssl ca -config ca.cnf -batch -notext \ -keyfile rootCA.key -in example.user.csr -days 365 \ -extensions usr_cert -out example.user.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
この時点で、認証局と証明書が正常に生成され、スマートカードにインポートできる状態になります。
6.2. SSSD ディレクトリーへの証明書のコピー リンクのコピーリンクがクリップボードにコピーされました!
GNOME Desktop Manager (GDM) には SSSD が必要です。GDM を使用する場合は、/etc/sssd/pki
ディレクトリーに PEM 証明書をコピーする必要があります。
前提条件
- ローカル CA の認証局および証明書が生成されている。
手順
システムに SSSD がインストールされていることを確認します。
rpm -q sssd
# rpm -q sssd sssd-2.0.0.43.el8_0.3.x86_64
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/sssd/pki
ディレクトリーを作成します。file /etc/sssd/pki
# file /etc/sssd/pki /etc/sssd/pki/: directory
Copy to Clipboard Copied! Toggle word wrap Toggle overflow rootCA.crt
を PEM ファイルとして/etc/sssd/pki/
ディレクトリーにコピーします。cp /tmp/ca/rootCA.crt /etc/sssd/pki/sssd_auth_ca_db.pem
# cp /tmp/ca/rootCA.crt /etc/sssd/pki/sssd_auth_ca_db.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
これで、認証局と証明書が生成され、/etc/sssd/pki
ディレクトリーに保存されました。
別のアプリケーションで認証局の証明書を共有する場合は、sssd.conf の場所を変更してください。
-
SSSD PAM レスポンダー:
[pam]
セクションのpam_cert_db_path
-
SSSD ssh レスポンダー:
[ssh]
セクションのca_db
詳細は、man ページの sssd.conf
を参照してください。
Red Hat では、デフォルトのパスを維持して、SSSD に専用の認証局証明書ファイルを使用し、認証に信頼されている認証局のみをここに登録するようにすることを推奨します。
6.3. スマートカードを管理および使用するツールのインストール リンクのコピーリンクがクリップボードにコピーされました!
スマートカードを設定する前に、対応するツール (証明書を生成して pscd
サービスを起動できるもの) をインストールする必要があります。
前提条件
-
root
権限がある。
手順
opensc
パッケージおよびgnutls-utils
パッケージをインストールします。dnf -y install opensc gnutls-utils
# dnf -y install opensc gnutls-utils
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pcscd
サービスを開始します。systemctl start pcscd
# systemctl start pcscd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
pcscd
サービスが起動して実行されていることを確認します。systemctl status pcscd
# systemctl status pcscd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.4. スマートカードを準備し、証明書と鍵をスマートカードにアップロードする リンクのコピーリンクがクリップボードにコピーされました!
pkcs15-init
ツールを使用してスマートカードを設定するには、この手順に従います。このツールは、以下を設定するのに役立ちます。
- スマートカードの消去
- 新しい PIN および任意の PIN ブロック解除キー (PUK) の設定
- スマートカードでの新規スロットの作成
- スロットへの証明書、秘密鍵、および公開鍵の保存
- 必要に応じて、特定のスマートカードではこのタイプのファイナライズが必要なため、スマートカードの設定をロックします。
pkcs15-init
ツールは、すべてのスマートカードで機能するとは限りません。使用しているスマートカードで動作するツールを使用する必要があります。
前提条件
pkcs15-init
ツールを含むopensc
パッケージがインストールされている。詳細は スマートカードを管理および使用するツールのインストール を参照してください。
- カードがリーダーに挿入され、コンピューターに接続されている。
-
スマートカードに保存する秘密鍵、公開鍵、および証明書がある。この手順の
testuser.key
、testuserpublic.key
、およびtestuser.crt
は、秘密鍵、公開鍵、および証明書に使用される名前です。 - 現在のスマートカードユーザー PIN およびセキュリティーオフィス PIN (SO-PIN)
手順
スマートカードを消去して PIN で自身を認証します。
pkcs15-init --erase-card --use-default-transport-keys
$ pkcs15-init --erase-card --use-default-transport-keys Using reader with a card: Reader name PIN [Security Officer PIN] required. Please enter PIN [Security Officer PIN]:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow カードが削除されました。
スマートカードを初期化し、ユーザーの PIN と PUK を設定します。また、セキュリティー担当者の PIN と PUK を設定します。
pkcs15-init --create-pkcs15 --use-default-transport-keys \ --pin 963214 --puk 321478 --so-pin 65498714 --so-puk 784123
$ pkcs15-init --create-pkcs15 --use-default-transport-keys \ --pin 963214 --puk 321478 --so-pin 65498714 --so-puk 784123 Using reader with a card: Reader name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pcks15-init
ツールは、スマートカードに新しいスロットを作成します。スロットのラベルと認証 ID を設定します。
pkcs15-init --store-pin --label testuser \ --auth-id 01 --so-pin 65498714 --pin 963214 --puk 321478
$ pkcs15-init --store-pin --label testuser \ --auth-id 01 --so-pin 65498714 --pin 963214 --puk 321478 Using reader with a card: Reader name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ラベルは人間が判読できる値に設定されます (この場合は
testuser
)。auth-id
は 16 進数の値である必要があります。この場合、01
に設定されます。スマートカードの新しいスロットに秘密鍵を保存し、ラベルを付けます。
pkcs15-init --store-private-key testuser.key --label testuser_key \ --auth-id 01 --id 01 --pin 963214
$ pkcs15-init --store-private-key testuser.key --label testuser_key \ --auth-id 01 --id 01 --pin 963214 Using reader with a card: Reader name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記--id
に指定する値は、秘密鍵を保存するときと、次の手順で証明書を保存するときに同じである必要があります。--id
に独自の値を指定することを推奨します。そうしないと、より複雑な値がツールによって計算されます。スマートカードの新しいスロットに証明書を保存し、ラベル付けします。
pkcs15-init --store-certificate testuser.crt --label testuser_crt \ --auth-id 01 --id 01 --format pem --pin 963214
$ pkcs15-init --store-certificate testuser.crt --label testuser_crt \ --auth-id 01 --id 01 --format pem --pin 963214 Using reader with a card: Reader name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: スマートカードの新しいスロットに公開鍵を保存し、ラベルを付けます。
pkcs15-init --store-public-key testuserpublic.key \ --label testuserpublic_key --auth-id 01 --id 01 --pin 963214
$ pkcs15-init --store-public-key testuserpublic.key \ --label testuserpublic_key --auth-id 01 --id 01 --pin 963214 Using reader with a card: Reader name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記公開鍵が秘密鍵または証明書に対応する場合は、秘密鍵または証明書の ID と同じ ID を指定します。
オプション: スマートカードの中には、設定をロックしてカードをファイナライズする必要があるものもあります。
pkcs15-init -F
$ pkcs15-init -F
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この段階で、スマートカードの新しく作成されたスロットに、証明書、秘密鍵、公開鍵が含まれています。ユーザーの PIN と PUK、およびセキュリティー担当者の PIN と PUK も作成しました。
6.5. スマートカード認証を使用した SSH アクセスの設定 リンクのコピーリンクがクリップボードにコピーされました!
SSH 接続には認証が必要です。パスワードまたは証明書を使用できます。スマートカードに保存されている証明書を使用した認証を有効にするには、次の手順に従います。
authselect
を使用したスマートカードの設定の詳細は、authselect を使用したスマートカードの設定 を参照してください。
前提条件
- スマートカードに、証明書と秘密鍵が含まれている。
- カードがリーダーに挿入され、コンピューターに接続されている。
pcscd
サービスがローカルマシンで実行している。詳細は、スマートカードを管理および使用するツールのインストール を参照してください。
手順
スマートカード認証を使用するユーザーのホームディレクトリーで、SSH キー用の新しいディレクトリーを作成します。
mkdir /home/<example_user>/.ssh
# mkdir /home/<example_user>/.ssh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow opensc
ライブラリーでssh-keygen -D
コマンドを実行して、スマートカードの秘密鍵とペアの既存の公開鍵を取得し、そのユーザーの SSH キーディレクトリーのauthorized_keys
リストに追加し、スマートカード認証を使用した SSH アクセスを有効にします。ssh-keygen -D /usr/lib64/pkcs11/opensc-pkcs11.so >> ~<example_user>/.ssh/authorized_keys
# ssh-keygen -D /usr/lib64/pkcs11/opensc-pkcs11.so >> ~<example_user>/.ssh/authorized_keys
Copy to Clipboard Copied! Toggle word wrap Toggle overflow SSH では、
/.ssh
ディレクトリーおよびauthorized_keys
ファイルのアクセス権が必要です。アクセス権を設定または変更するには、以下を入力します。chown -R <example_user:example_user> ~<example_user>/.ssh/ chmod 700 ~<example_user>/.ssh/ chmod 600 ~<example_user>/.ssh/authorized_keys
# chown -R <example_user:example_user> ~<example_user>/.ssh/ # chmod 700 ~<example_user>/.ssh/ # chmod 600 ~<example_user>/.ssh/authorized_keys
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
鍵を表示します。
cat ~<example_user>/.ssh/authorized_keys
# cat ~<example_user>/.ssh/authorized_keys
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ターミナルに鍵が表示されます。
次のコマンドで SSH アクセスを確認できます。
ssh -I /usr/lib64/opensc-pkcs11.so -l <example_user> localhost hostname
# ssh -I /usr/lib64/opensc-pkcs11.so -l <example_user> localhost hostname
設定に成功すると、スマートカードの PIN を入力するように求められます。
設定がローカルで機能するようになりました。これで、公開鍵をコピーして、SSH を使用するすべてのサーバーにある authorized_keys
ファイルに配布できます。
6.6. スマートカード使用時の証明書マッピングルールの作成 リンクのコピーリンクがクリップボードにコピーされました!
スマートカードに保存されている証明書を使用してログインするには、証明書マッピングルールを作成する必要があります。
前提条件
- スマートカードに、証明書と秘密鍵が含まれている。
- カードがリーダーに挿入され、コンピューターに接続されている。
-
pcscd
サービスがローカルマシンで実行している。
手順
-
/etc/sssd/conf.d/sssd_certmap.conf
などの証明書マッピング設定ファイルを作成します。 sssd_certmap.conf
ファイルに証明書マッピングルールを追加します。[certmap/shadowutils/otheruser] matchrule = <SUBJECT>.*CN=certificate_user.*<ISSUER>^CN=Example Test CA,OU=Example Test,O=EXAMPLE$
[certmap/shadowutils/otheruser] matchrule = <SUBJECT>.*CN=certificate_user.*<ISSUER>^CN=Example Test CA,OU=Example Test,O=EXAMPLE$
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 証明書マッピングルールは、それぞれ個別のセクションで定義する必要があることに注意してください。各セクションを次のように定義します。
[certmap/<DOMAIN_NAME>/<RULE_NAME>]
[certmap/<DOMAIN_NAME>/<RULE_NAME>]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AD、IPA、または LDAP ではなく、プロキシープロバイダーを使用してローカルユーザーのスマートカード認証を許可するように SSSD が設定されている場合、<RULE_NAME> には、
matchrule
で提供されるデータと一致するカードを持つユーザーのユーザー名を指定できます。
検証
スマートカードを使用した SSH アクセスを検証するには、SSH アクセスを設定する必要があることに注意してください。詳細は、スマートカード認証を使用した SSH アクセスの設定 を参照してください。
次のコマンドで SSH アクセスを確認できます。
ssh -I /usr/lib64/opensc-pkcs11.so -l otheruser localhost hostname
# ssh -I /usr/lib64/opensc-pkcs11.so -l otheruser localhost hostname
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定に成功すると、スマートカードの PIN を入力するように求められます。
第7章 authselect を使用したスマートカード認証の設定 リンクのコピーリンクがクリップボードにコピーされました!
次のいずれかの目的を達成するようにスマートカードを設定できます。
- パスワードとスマートカード認証の両方を有効化
- パスワードの無効化およびスマートカード認証の有効化
- 削除時にロックの有効化
前提条件
authselect
ツールがシステムにインストールされている。authselect
ツールは、Linux ホストでユーザー認証を設定し、スマートカード認証パラメーターを設定するのに使用できます。authselect
の詳細は、authselect を使用したユーザー認証の設定 を参照してください。RHEL 9 で対応しているスマートカードまたは USB デバイス
詳細は、Smart Card support in RHEL9 を参照してください。
7.1. スマートカードの対象となる証明書 リンクのコピーリンクがクリップボードにコピーされました!
authselect
を使用してスマートカードを設定する前に、証明書をカードにインポートする必要があります。以下のツールを使用して証明書を生成できます。
- Active Directory (AD)
Identity Management (IdM)
IdM 証明書を作成する方法の詳細は、新しいユーザー証明書を要求し、クライアントにエクスポーする を参照してください。
Red Hat Certificate System (RHCS)
詳細は、Managing Smart Cards with the Enterprise Security Client を参照してください。
- サードパーティー認証局 (CA)
ローカルの認証局ユーザーがドメインの一部ではない場合、またはテスト目的である場合は、ローカル認証局が生成した証明書を使用可能。
ローカル認証を作成してスマートカードにインポートする方法の詳細は、ローカル証明書のスマートカードへの設定およびインポート を参照してください。
7.2. スマートカード認証とパスワード認証の両方を有効にするようにシステムを設定する リンクのコピーリンクがクリップボードにコピーされました!
システムでスマートカード認証とパスワード認証の両方を有効にするには、次の手順に従ってください。
前提条件
- スマートカードに、証明書と秘密鍵が含まれる。
- そのカードがリーダーに挿入され、コンピューターに接続されている。
-
authselect
ツールがシステムにインストールされている。
手順
以下のコマンドを実行して、スマートカードとパスワード認証を許可します。
authselect select sssd with-smartcard --force
# authselect select sssd with-smartcard --force
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
この時点で、スマートカード認証が有効になります。ただし、スマートカードを忘れてしまった場合は、パスワード認証が動作します。
7.3. スマートカード認証を適用するようにシステムを設定する リンクのコピーリンクがクリップボードにコピーされました!
authselect
ツールを使用すると、システムでスマートカード認証を設定でき、デフォルトのパスワード認証を無効にできます。authselect
コマンドには、以下のオプションが含まれます。
-
with-smartcard
— パスワード認証に加えてスマートカード認証を有効にします。 -
with-smartcard-required
— スマートカード認証を有効にし、パスワード認証を無効にします。
with-smartcard-required
オプションは、login
、gdm
、xdm
、kdm
、xscreensaver
、gnome-screensaver
、および kscreensaver
などのログインサービスに対してのみ、排他的なスマートカード認証を適用します。ユーザーを切り替えるための su
や sudo
などの他のサービスは、デフォルトではスマートカード認証を使用せず、引き続きパスワードの入力を求めます。
前提条件
- スマートカードに、証明書と秘密鍵が含まれている。
- そのカードがリーダーに挿入され、コンピューターに接続されている。
-
authselect
ツールがローカルシステムにインストールされている。
手順
以下のコマンドを実行して、スマートカード認証を強制します。
authselect select sssd with-smartcard with-smartcard-required --force
# authselect select sssd with-smartcard with-smartcard-required --force
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
このコマンドを実行すると、パスワード認証は機能しなくなり、スマートカードでのみログインできます。このコマンドを実行する前に、スマートカード認証が機能していることを確認してください。機能していないと、システムからロックアウトされる可能性があります。
7.4. 削除時にロックを使用したスマートカード認証の設定 リンクのコピーリンクがクリップボードにコピーされました!
authselect
サービスを使用すると、スマートカードの認証を設定して、リーダーからスマートカードを削除した後も、画面を即時にロックできます。authselect
コマンドには以下の変数が含まれている必要があります。
-
with-smartcard
- スマートカード認証の有効化 -
with-smartcard-required
- 排他的なスマートカード認証の有効化 (パスワードによる認証は無効になっています) with-smartcard-lock-on-removal
- スマートカードの削除後に強制的にログアウト注記with-smartcard-lock-on-removal
オプションは、GNOME デスクトップ環境を持つシステムでのみ機能します。tty
またはコンソールベースのシステムを使用しており、そのリーダーからスマートカードを削除すると、システムから自動的にロックアウトされません。
前提条件
- スマートカードに、証明書と秘密鍵が含まれている。
- そのカードがリーダーに挿入され、コンピューターに接続されている。
-
authselect
ツールがローカルシステムにインストールされている。
手順
以下のコマンドを実行して、スマートカード認証の有効化、パスワード認証の無効化、削除時のロックの強制を行います。
authselect select sssd with-smartcard with-smartcard-required with-smartcard-lock-on-removal --force
# authselect select sssd with-smartcard with-smartcard-required with-smartcard-lock-on-removal --force
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
これで、カードを削除すると、画面がロックされます。ロックを解除するには、スマートカードを再度挿入する必要があります。
第8章 スマートカードを使用した sudo のリモート認証 リンクのコピーリンクがクリップボードにコピーされました!
スマートカードを使用してリモートで sudo
に認証できます。ssh-agent
サービスがローカルで実行され、ssh-agent
ソケットをリモートマシンに転送できるようになると、sudo
PAM モジュールの SSH 認証プロトコルを使用してユーザーをリモートで認証できます。
スマートカードを使用してローカルにログインした後、SSH 経由でリモートマシンにログインして、スマートカード認証の SSH 転送を使用してパスワードの入力を要求されずに sudo
コマンドを実行できます。
この例では、クライアントを SSH 経由で IPA サーバーに接続し、スマートカードに保存されている認証情報を使用して IPA サーバーで sudo
コマンドを実行します。
8.1. IdM での sudo ルールの作成 リンクのコピーリンクがクリップボードにコピーされました!
次の手順に従って、IdM で sudo
ルールを作成し、<idm_user>
にリモートホストで sudo
を実行する権限を与えます。
この例では、手順をテストするために、less
コマンドと whoami
コマンドを sudo
コマンドとして追加します。
前提条件
-
IdM ユーザーが作成されている。この例では、ユーザーは
<idm_user>
です。 -
sudo
をリモートで実行するシステムのホスト名を認識している。この例では、ホストはserver.ipa.test
です。
手順
コマンドの実行をユーザーに許可するために、<sudorule_name> という名前の
sudo
ルールを作成します。<sudorule_name> は、作成する sudo ルールの実際の名前に置き換えます。ipa sudorule-add <sudorule_name>
# ipa sudorule-add <sudorule_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo
コマンドとしてless
およびwhoami
を追加します。ipa sudocmd-add /usr/bin/less ipa sudocmd-add /usr/bin/whoami
# ipa sudocmd-add /usr/bin/less # ipa sudocmd-add /usr/bin/whoami
Copy to Clipboard Copied! Toggle word wrap Toggle overflow less
コマンドとwhoami
コマンドを <sudorule_name> に追加します。ipa sudorule-add-allow-command <sudorule_name> --sudocmds /usr/bin/less ipa sudorule-add-allow-command <sudorule_name> --sudocmds /usr/bin/whoami
# ipa sudorule-add-allow-command <sudorule_name> --sudocmds /usr/bin/less # ipa sudorule-add-allow-command <sudorule_name> --sudocmds /usr/bin/whoami
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <idm_user>
ユーザーを <sudorule_name> に追加します。ipa sudorule-add-user <sudorule_name> --users <idm_user>
# ipa sudorule-add-user <sudorule_name> --users <idm_user>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo
を実行するホストを <sudorule_name> に追加します。ipa sudorule-add-host <sudorule_name> --hosts server.ipa.test
# ipa sudorule-add-host <sudorule_name> --hosts server.ipa.test
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.2. sudo 用の PAM モジュールの設定 リンクのコピーリンクがクリップボードにコピーされました!
sudo
を実行する任意のホストに、スマートカードを使用した sudo
認証用の pam_ssh_agent_auth.so
PAM モジュールをインストールして設定するには、次の手順に従ってください。
手順
PAM SSH エージェントをインストールします。
dnf -y install pam_ssh_agent_auth
# dnf -y install pam_ssh_agent_auth
Copy to Clipboard Copied! Toggle word wrap Toggle overflow その他の
auth
エントリーの前に、pam_ssh_agent_auth.so
のauthorized_keys_command
を/etc/pam.d/sudo
ファイルに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo
コマンドを実行する際に SSH エージェントの転送が機能するように、/etc/sudoers
ファイルに以下を追加します。Defaults env_keep += "SSH_AUTH_SOCK"
Defaults env_keep += "SSH_AUTH_SOCK"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これにより、IPA/SSSD に保存されたスマートカードの公開鍵を持つユーザーが、パスワードを入力せずに
sudo
に認証できるようになります。sssd
サービスを再起動します。systemctl restart sssd
# systemctl restart sssd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.3. スマートカードを使用した sudo へのリモート接続 リンクのコピーリンクがクリップボードにコピーされました!
スマートカードを使用してリモートで sudo
に接続するように SSH エージェントとクライアントを設定するには、次の手順に従います。
前提条件
-
IdM で
sudo
ルールを作成している。 -
sudo
を実行するリモートシステムでsudo
認証用にpam_ssh_agent_auth
PAM モジュールをインストールして設定している。
手順
SSH エージェントを起動します (まだ実行されていない場合には)。
eval `ssh-agent`
# eval `ssh-agent`
Copy to Clipboard Copied! Toggle word wrap Toggle overflow スマートカードを SSH エージェントに追加します。プロンプトが表示されたら PIN を入力します。
ssh-add -s /usr/lib64/opensc-pkcs11.so
# ssh-add -s /usr/lib64/opensc-pkcs11.so
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh-agent 転送を有効にした SSH を使用して、
sudo
をリモートで実行する必要があるシステムに接続します。-A
オプションを使用します。ssh -A ipauser1@server.ipa.test
# ssh -A ipauser1@server.ipa.test
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
sudo
でwhoami
コマンドを実行します。sudo /usr/bin/whoami
# sudo /usr/bin/whoami
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
スマートカードの挿入時に PIN またはパスワードの入力を求められることはありません。
SSH エージェントが GNOME キーリングなどの他のソースを使用するように設定されている場合に、スマートカードを取り外した後に sudo
コマンドを実行すると、他のソースのいずれかが有効な秘密鍵へのアクセスを提供する可能性があるため、PIN またはパスワードの入力を求められないことがあります。SSH エージェントが認識しているすべての ID の公開鍵を確認するには、ssh-add -L
コマンドを実行します。
第9章 スマートカードで PKINIT を使用した Active Directory ユーザーとしての認証 リンクのコピーリンクがクリップボードにコピーされました!
Active Directory (AD) ユーザーは、IdM に参加しているデスクトップクライアントシステムに対してスマートカードで認証し、Kerberos Ticket-Granting Ticket (TGT) を取得できます。これらのチケットは、クライアントからのシングルサインオン (SSO) 認証に使用できます。
前提条件
- IdM サーバーはスマートカード認証用に設定されています。詳細は、スマートカード認証用の IdM サーバーの設定 または Ansible を使用したスマートカード認証用の IdM サーバー設定 を参照してください。
- クライアントはスマートカード認証用に設定されている。詳細は、スマートカード認証用の IdM クライアントの設定 または Ansible を使用したスマートカード認証用の IdM クライアント設定 を参照してください。
-
krb5-pkinit
パッケージがインストールされている。 - AD サーバーが、スマートカード証明書を発行した認証局 (CA) を信頼するように設定されている。CA 証明書を NTAuth ストアにインポート (Microsoft サポート を参照) し、CA を信頼できる CA として追加します。詳細は、Active Directory のドキュメントを参照してください。
手順
スマートカード証明書を発行した CA を信頼するように Kerberos クライアントを設定します。
-
IdM クライアントで、
/etc/krb5.conf
ファイルを開きます。 ファイルに以下の行を追加します。
[realms] AD.DOMAIN.COM = { pkinit_eku_checking = kpServerAuth pkinit_kdc_hostname = adserver.ad.domain.com }
[realms] AD.DOMAIN.COM = { pkinit_eku_checking = kpServerAuth pkinit_kdc_hostname = adserver.ad.domain.com }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
IdM クライアントで、
ユーザー証明書に証明書失効リスト (CRL) ディストリビューションポイント拡張が含まれていない場合は、失効エラーを無視するように AD を設定します
以下の REG 形式のコンテンツをプレーンテキストファイルに保存し、Windows レジストリーにインポートします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow または、
regedit.exe
アプリケーションを使用して手動で値を設定することもできます。- Windows システムを再起動して変更を適用します。
Identity Management クライアントで
kinit
ユーティリティーを使用して認証します。Active Directory ユーザーに、ユーザー名とドメイン名を指定します。kinit -X X509_user_identity='PKCS11:opensc-pkcs11.so' ad_user@AD.DOMAIN.COM
$ kinit -X X509_user_identity='PKCS11:opensc-pkcs11.so' ad_user@AD.DOMAIN.COM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -X
オプションはopensc-pkcs11.so module
を pre-authentication 属性として指定します。
第10章 スマートカードによる認証のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
次の手順では、スマートカード認証を設定するときに発生する可能性のある問題を解決する方法について説明します。
10.1. システムでのスマートカードアクセスのテスト リンクのコピーリンクがクリップボードにコピーされました!
この手順に従って、スマートカードにアクセスできるかどうかをテストします。
前提条件
- スマートカードで使用する IdM サーバーおよびクライアントをインストールして設定している。
-
nss-tools
パッケージからcertutil
ツールをインストールしている。 - スマートカードの PIN またはパスワードがある。
手順
lsusb
コマンドを使用して、スマートカードリーダーがオペレーティングシステムに表示されることを確認します。lsusb
$ lsusb Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 003: ID 072f:b100 Advanced Card Systems, Ltd ACR39U Bus 001 Device 002: ID 0627:0001 Adomax Technology Co., Ltd Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Copy to Clipboard Copied! Toggle word wrap Toggle overflow RHEL でテストおよびサポートされているスマートカードとリーダーの詳細は、Smart Card support in RHEL 9 を参照してください。
pcscd
サービスおよびソケットが有効になっており、実行していることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow p11-kit list-modules
コマンドを使用して、設定されたスマートカードと、スマートカードにあるトークンに関する情報を表示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow スマートカードの内容にアクセスできることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil
コマンドを使用して、スマートカードの証明書の内容を表示します。以下のコマンドを実行して、証明書の正しい名前を確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow スマートカードに証明書の内容を表示します。
注記証明書の名前が、前の手順で表示された出力 (この例では
MyEID (sctest):Certificate
) と完全に一致していることを確認してください。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2. SSSD を使用したスマートカード認証のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
スマートカードを使用した SSSD での認証のトラブルシューティングを行うには、次の手順に従います。
前提条件
- スマートカードで使用する IdM サーバーおよびクライアントをインストールして設定している。
-
sssd-tools
パッケージがインストールされている。 - スマートカードリーダーを検出し、スマートカードの内容を表示できる。システムでのスマートカードアクセスのテスト を参照してください。
手順
su
を使用して、スマートカードで認証できることを確認します。su - idmuser1 -c ‘su - idmuser1 -c whoami’
$ su - idmuser1 -c ‘su - idmuser1 -c whoami’ PIN for MyEID (sctest): idmuser1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow スマートカードの PIN の入力を求められず、パスワードプロンプトまたは認証エラーが返された場合は、SSSD ログを確認してください。SSSD でのログインの詳細は、IdM で SSSD を使用した認証のトラブルシューティング を参照してください。認証の失敗の例を以下に示します。
su - idmuser1 -c ‘su - idmuser1 -c whoami’
$ su - idmuser1 -c ‘su - idmuser1 -c whoami’ PIN for MyEID (sctest): su: Authentication failure
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のように、SSSD ログが
krb5_child
からの問題を示している場合は、CA 証明書に問題がある可能性があります。証明書に関する問題をトラブルシューティングするには、Verifying that IdM Kerberos KDC can use Pkinit and that the CA certificates are correctly located を参照してください。[Pre-authentication failed: Failed to verify own certificate (depth 0): unable to get local issuer certificate: could not load the shared library]
[Pre-authentication failed: Failed to verify own certificate (depth 0): unable to get local issuer certificate: could not load the shared library]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow SSSD ログに
p11_child
またはkrb5_child
からのタイムアウトが示されている場合は、SSSD タイムアウトを増やして、スマートカードでの認証を再試行する必要があります。タイムアウトを増やす方法は、Increasing SSSD timeouts を参照してください。GDM スマートカード認証の設定が正しいことを確認します。PAM 認証の成功メッセージは、以下のように返す必要があります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のような認証エラーが返された場合は、SSSD ログを確認して、問題の原因を特定します。SSSD でのログインの詳細は、IdM で SSSD を使用した認証のトラブルシューティング を参照してください。
pam_authenticate for user [idmuser1]: Authentication failure PAM Environment: - no env -
pam_authenticate for user [idmuser1]: Authentication failure PAM Environment: - no env -
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PAM 認証に失敗したら、キャッシュをクリアしてコマンドを再度実行します。
sssctl cache-remove
# sssctl cache-remove SSSD must not be running. Stop SSSD now? (yes/no) [yes] yes Creating backup of local data… Removing cache files… SSSD needs to be running. Start SSSD now? (yes/no) [yes] yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.3. IdM Kerberos KDC が PKINIT を使用でき、CA 証明書が正しく配置されていることの確認 リンクのコピーリンクがクリップボードにコピーされました!
この手順に従って、IdM Kerberos KDC が PKINIT を使用できることを検証する方法と、CA 証明書が正しく配置されていることを検証する方法も説明します。
前提条件
- スマートカードで使用する IdM サーバーおよびクライアントをインストールして設定している。
- スマートカードリーダーを検出し、スマートカードの内容を表示できる。システムでのスマートカードアクセスのテスト を参照してください。
手順
kinit
ユーティリティーを実行し、スマートカードに保存されている証明書を使用してidmuser1
として認証します。kinit -X X509_user_identity=PKCS11: idmuser1
$ kinit -X X509_user_identity=PKCS11: idmuser1 MyEID (sctest) PIN:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - スマートカード PIN を入力します。PIN の入力を求められない場合は、スマートカードリーダーを検出してスマートカードの内容を表示できることを確認してください。スマートカード認証のテスト を参照してください。
PIN が受け入れられ、パスワードの入力を求められた場合は、CA 署名証明書がない可能性があります。
openssl
コマンドを使用して、CA チェーンがデフォルトの証明書バンドルファイルにリスト表示されていることを確認します。openssl crl2pkcs7 -nocrl -certfile /var/lib/ipa-client/pki/ca-bundle.pem | openssl pkcs7 -print_certs -noout
$ openssl crl2pkcs7 -nocrl -certfile /var/lib/ipa-client/pki/ca-bundle.pem | openssl pkcs7 -print_certs -noout subject=O = IDM.EXAMPLE.COM, CN = Certificate Authority issuer=O = IDM.EXAMPLE.COM, CN = Certificate Authority
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 証明書の有効性を確認します。
idmuser1
のユーザー認証証明書 ID を見つけます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow DER 形式で、スマートカードからユーザー証明書情報を読み取ります。
pkcs11-tool --read-object --id 01 --type cert --output-file cert.der
$ pkcs11-tool --read-object --id 01 --type cert --output-file cert.der Using slot 0 with a present token (0x0)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow DER 証明書を PEM 形式に変換します。
openssl x509 -in cert.der -inform DER -out cert.pem -outform PEM
$ openssl x509 -in cert.der -inform DER -out cert.pem -outform PEM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CA までの有効な発行者署名が証明書にあることを確認します。
openssl verify -CAfile /var/lib/ipa-client/pki/ca-bundle.pem <path>/cert.pem
$ openssl verify -CAfile /var/lib/ipa-client/pki/ca-bundle.pem <path>/cert.pem cert.pem: OK
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
スマートカードに複数の証明書が含まれている場合、
kinit
は認証用の正しい証明書を選択できない可能性があります。この場合は、certid=<ID>
オプションを使用して、kinit
コマンドの引数として証明書 ID を指定する必要があります。スマートカードに保存されている証明書の数を確認し、使用している証明書の ID を取得します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 証明書 ID 01 で
kinit
を実行します。kinit -X kinit -X X509_user_identity=PKCS11:certid=01 idmuser1
$ kinit -X kinit -X X509_user_identity=PKCS11:certid=01 idmuser1 MyEID (sctest) PIN:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
klist
を実行して、Kerberos 認証情報キャッシュの内容を表示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 終了したら、アクティブな Kerberos チケットを破棄します。
kdestroy -A
$ kdestroy -A
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.4. SSSD タイムアウトの増加 リンクのコピーリンクがクリップボードにコピーされました!
スマートカードでの認証に問題がある場合は、krb5_child.log
および p11_child.log
ファイルに以下のようなタイムアウトエントリーがないか確認してください。
krb5_child: Timeout for child [9607] reached.....consider increasing value of krb5_auth_timeout.
krb5_child: Timeout for child [9607] reached.....consider increasing value of krb5_auth_timeout.
ログファイルにタイムアウトエントリーがある場合は、この手順で説明されているように SSSD タイムアウトを増やしてください。
前提条件
- スマートカード認証用に IdM サーバーおよびクライアントを設定している。
手順
IdM クライアントで
sssd.conf
ファイルを開きます。vim /etc/sssd/sssd.conf
# vim /etc/sssd/sssd.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ドメインセクション (
[domain/idm.example.com]
など) に、以下のオプションを追加します。krb5_auth_timeout = 60
krb5_auth_timeout = 60
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [pam]
セクションに、以下を追加します。p11_child_timeout = 60
p11_child_timeout = 60
Copy to Clipboard Copied! Toggle word wrap Toggle overflow SSSD キャッシュを削除します。
sssctl cache-remove
# sssctl cache-remove SSSD must not be running. Stop SSSD now? (yes/no) [yes] yes Creating backup of local data… Removing cache files… SSSD needs to be running. Start SSSD now? (yes/no) [yes] yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
タイムアウトを増やしたら、スマートカードを使用して再度認証を試行します。詳細は、Testing smart card authentication を参照してください。
10.5. 証明書マッピングとマッチングルールのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
スマートカードでの認証に問題がある場合は、スマートカード証明書がユーザーに正しくリンクされていることを確認してください。デフォルトでは、ユーザーエントリーに usercertificate
属性の一部として完全な証明書が含まれる場合、証明書はユーザーに関連付けられます。ただし、証明書マッピングルールを定義している場合は、証明書をユーザーに関連付ける方法を変更している可能性があります。
スマートカードを使用して SSH で認証する場合は、Identity Management(IdM) のユーザーエントリーに完全な証明書を追加する必要があります。スマートカードを使用して SSH を使用した認証を行っていない場合は、ipa user-add-certmapdata
コマンドを使用して証明書マッピングデータを追加できます。
10.5.1. 証明書がユーザーにどのようにマッピングされているかを確認する リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、ユーザーエントリーに usercertificate
属性の一部として完全な証明書が含まれる場合、証明書はユーザーに関連付けられます。ただし、証明書マッピングルールを定義している場合は、証明書をユーザーに関連付ける方法を変更している可能性があります。証明書マッピングルールを確認するには、次の手順に従ってください。
前提条件
- Identity Management(IdM) サーバーおよびクライアントを、スマートカードで使用するようにインストールおよび設定している。
- スマートカードリーダーを検出し、スマートカードの内容を表示できる。システムでのスマートカードアクセスのテスト を参照してください。
- スマートカード証明書を IdM ユーザーにマッピングした。スマートカードにおける認証を設定するための証明書マッピングルール を参照してください。
手順
IdM 用に現在設定されている証明書マッピングルールを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のマッピングルールのいずれかが定義されていることが予想されます。
-
ipacertmapdata
は、IdM ユーザーエントリーのcertmapdata
属性が使用されていることを示します。 -
altSecurityIdentities
は、Active Directory のユーザーエントリー名マッピング属性が使用されることを指定します。 -
userCertificate;binary=
は、IdM または AD のいずれかの証明書全体が使用されていることを示します。
多数のマッチングオプションを定義できますが、通常設定されたオプションの一部は以下のようになります。
-
<ISSUER>CN=[…]
は、使用されている証明書の発行者属性がこれと一致することを確認するためにチェックされることを指定します。 -
<SUBJECT>.*,DC=MY,DC=DOMAIN
は、証明書のサブジェクトがチェックされていることを示します。
-
IdM サーバーの
/etc/sssd/sssd.conf
ファイルにdebug_level = 9
を追加して、System Security Services Daemon (SSSD) ログを有効にします。[domain/idm.example.com] ... debug_level = 9
[domain/idm.example.com] ... debug_level = 9
Copy to Clipboard Copied! Toggle word wrap Toggle overflow SSSD を再起動します。
systemctl restart sssd
# systemctl restart sssd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow マッピングが正しく読み込まれる場合は、
/var/log/sssd/sssd_idm.example.com.log
ファイルに以下のエントリーが表示されるはずです。[be[idm.example.com]] [sdap_setup_certmap] (0x4000): Trying to add rule [smartcardrule][-1][<ISSUER>CN=Certificate Authority,O=IDM.EXAMPLE.COM][(|(userCertificate;binary={cert!bin})(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500}))].
[be[idm.example.com]] [sdap_setup_certmap] (0x4000): Trying to add rule [smartcardrule][-1][<ISSUER>CN=Certificate Authority,O=IDM.EXAMPLE.COM][(|(userCertificate;binary={cert!bin})(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500}))].
Copy to Clipboard Copied! Toggle word wrap Toggle overflow マッピングルールに無効な構文が含まれる場合は、以下のようなエントリーがログファイルに表示されます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow マッピングルールの構文を確認してください。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 必要に応じて、証明書マッピングルールを変更します。
ipa certmaprule-mod smartcardrule --maprule '(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})'
# ipa certmaprule-mod smartcardrule --maprule '(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.5.2. スマートカード証明書に関連付けられたユーザーの確認 リンクのコピーリンクがクリップボードにコピーされました!
スマートカードでの認証に問題がある場合は、正しいユーザーがスマートカード証明書に関連付けられていることを確認してください。
前提条件
- Identity Management(IdM) サーバーおよびクライアントを、スマートカードで使用するようにインストールおよび設定している。
- スマートカードリーダーを検出し、スマートカードの内容を表示できる。システムでのスマートカードアクセスのテスト を参照してください。
- スマートカード証明書を IdM ユーザーにマッピングした。スマートカードにおける認証を設定するための証明書マッピングルール を参照してください。
-
PEM 形式のスマートカードからの証明書のコピー (例:
cert.pem
) がある。
手順
ユーザーがスマートカード証明書に関連付けられていることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ユーザーまたはドメインが正しくない場合は、証明書がユーザーにどのようにマッピングされているかを確認してください。証明書がユーザーにどのようにマッピングされているかを確認する を参照してください。
ユーザーエントリーに証明書が含まれているかどうかを確認します。
ipa user-show idmuser1
# ipa user-show idmuser1 User login: idmuser1 [...] Certificate:MIIEejCCAuKgAwIBAgIBCzANBgkqhkiG9w0BAQsFADAzMREwDwYDVQQKDAhJUEEuVEVTVDEeMBwGA1UEAwwVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XD
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ユーザーエントリーに証明書が含まれていない場合は、base-64 でエンコードされた証明書をユーザーエントリーに追加します。
ヘッダーとフッターのある証明書を含む環境変数を作成し、1 行に連結します。これは、
ipa user-add-cert
コマンドで必要な形式です。export CERT=`openssl x509 -outform der -in idmuser1.crt | base64 -w0 -`
$ export CERT=`openssl x509 -outform der -in idmuser1.crt | base64 -w0 -`
Copy to Clipboard Copied! Toggle word wrap Toggle overflow idmuser1.crt
ファイルの証明書は PEM 形式である必要があることに注意してください。ipa user-add-cert
コマンドを使用して、証明書をidmuser1
のプロファイルに追加します。ipa user-add-cert idmuser1 --certificate=$CERT
$ ipa user-add-cert idmuser1 --certificate=$CERT
Copy to Clipboard Copied! Toggle word wrap Toggle overflow System Security Services Daemon (SSSD) キャッシュをクリアします。
sssctl cache-remove
# sssctl cache-remove SSSD must not be running. Stop SSSD now? (yes/no) [yes] yes Creating backup of local data… Removing cache files… SSSD needs to be running. Start SSSD now? (yes/no) [yes] yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
ipa certmap-match
を再度実行して、ユーザーがスマートカード証明書に関連付けられていることを確認します。