9.3. 验证 IdM Kerberos KDC 可以使用 PKINIT 和 CA 证书正确位置

按照以下流程验证 IdM Kerberos KDC 是否可以使用 PKINIT,并描述如何正确验证您的 CA 证书。

先决条件

  • 已安装并配置了用于智能卡的 IdM 服务器和客户端。
  • 您可以检测智能卡读取器并显示智能卡的内容。请参阅在系统上测试智能卡访问

步骤

  1. 运行 kinit 工具,以 idmuser1 使用保存在智能卡中的证书进行验证:

    $ kinit -X X509_user_identity=PKCS11: idmuser1
    MyEID (sctest)                   PIN:
  2. 输入您的智能卡 PIN。如果没有提示输入 PIN,请检查您是否可检测智能卡读取器并显示智能卡的内容。请参阅测试智能卡验证
  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> 选项将证书 ID 指定为 kinit 命令的参数。

    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 page。
  • 请参阅 kdestroy man page。