9.3. IdM Kerberos KDC が PKINIT を使用でき、CA 証明書が正しく配置されていることの確認

この手順に従って、IdM Kerberos KDC が PKINIT を使用できることを検証する方法と、CA 証明書が正しく配置されていることを検証する方法についても説明します。

前提条件

  • スマートカードで使用する IdM サーバーおよびクライアントをインストールして設定している。
  • スマートカードリーダーを検出し、スマートカードの内容を表示できる。Testing smart card access on the system を参照してください。

手順

  1. kinit ユーティリティーを実行し、スマートカードに保存されている証明書を使用して idmuser1 として認証します。

    $ kinit -X X509_user_identity=PKCS11: idmuser1
    MyEID (sctest)                   PIN:
  2. スマートカード PIN を入力します。PIN の入力を求められない場合は、スマートカードリーダーを検出してスマートカードの内容を表示できることを確認してください。Testing smart card authentication を参照してください。
  3. PIN が受け入れられ、パスワードの入力を求められた場合は、CA 署名証明書がない可能性があります。

    1. openssl コマンドを使用して、CA チェーンがデフォルトの証明書バンドルファイルにリスト表示されていることを確認します。

      $ 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
    2. 証明書の有効性を確認します。

      1. idmuser1 のユーザー認証証明書 ID を見つけます。

        $ pkcs11-tool --list-objects --login
        [...]
        Certificate Object; type = X.509 cert
          label:      Certificate
          subject:    DN: O=IDM.EXAMPLE.COM, CN=idmuser1
         ID: 01
      2. DER 形式で、スマートカードからユーザー証明書情報を読み取ります。

        $ pkcs11-tool --read-object --id 01 --type cert --output-file cert.der
        Using slot 0 with a present token (0x0)
      3. DER 証明書を PEM 形式に変換します。

        $ openssl x509 -in cert.der -inform DER -out cert.pem -outform PEM
      4. CA までの有効な発行者署名が証明書にあることを確認します。

        $ openssl verify -CAfile /var/lib/ipa-client/pki/ca-bundle.pem <path>/cert.pem
        cert.pem: OK
  4. スマートカードに複数の証明書が含まれている場合、kinit は認証用の正しい証明書を選択できない可能性があります。この場合は、certid=<ID> オプションを使用して、kinit コマンドの引数として証明書 ID を指定する必要があります。

    1. スマートカードに保存されている証明書の数を確認し、使用している証明書の ID を取得します。

      $ pkcs11-tool --list-objects --type cert --login
      Using slot 0 with a present token (0x0)
      Logging in to "MyEID (sctest)".
      Please enter User PIN:
      Certificate Object; type = X.509 cert
        label:      Certificate
        subject:    DN: O=IDM.EXAMPLE.COM, CN=idmuser1
        ID:         01
      Certificate Object; type = X.509 cert
        label:      Second certificate
        subject:    DN: O=IDM.EXAMPLE.COM, CN=ipauser1
        ID:         02
    2. 証明書 ID 01 で kinit を実行します。

      $ kinit -X kinit -X X509_user_identity=PKCS11:certid=01 idmuser1
      MyEID (sctest)                   PIN:
  5. klist を実行して、Kerberos 認証情報キャッシュの内容を表示します。

    $ klist
    Ticket cache: KCM:0:11485
    Default principal: idmuser1@EXAMPLE.COM
    
    Valid starting       Expires              Service principal
    10/04/2021 10:50:04  10/05/2021 10:49:55  krbtgt/EXAMPLE.COM@EXAMPLE.COM
  6. 終了したら、アクティブな Kerberos チケットを破棄します。

    $ kdestroy -A

関連情報

  • kinit の man ページを参照してください。
  • kdestroy の man ページを参照してください。