9.5. 인증서 매핑 및 일치 규칙 문제 해결

스마트 카드로 인증하는 데 문제가 있는 경우 스마트 카드 인증서를 사용자에게 올바르게 연결했는지 확인합니다. 기본적으로 사용자 항목에 usercertificate 속성의 일부로 전체 인증서가 포함된 경우 인증서가 사용자와 연결됩니다. 그러나 인증서 매핑 규칙이 정의된 경우 인증서와 사용자 연결 방식이 변경될 수 있습니다. 인증서 매핑 및 일치 규칙의 문제를 해결하려면 다음 섹션을 참조하십시오.

참고

스마트 카드를 사용하여 SSH를 사용하여 인증하는 경우 전체 인증서를 IdM(Identity Management)의 사용자 항목에 추가해야 합니다. SSH를 사용하여 인증하기 위해 스마트 카드를 사용하지 않는 경우 ipa user-add-certmapdata 명령을 사용하여 인증서 매핑 데이터를 추가할 수 있습니다.

9.5.1. 인증서가 사용자에게 매핑되는 방법 확인

기본적으로 사용자 항목에 usercertificate 속성의 일부로 전체 인증서가 포함된 경우 인증서가 사용자와 연결됩니다. 그러나 인증서 매핑 규칙이 정의된 경우 인증서와 사용자 연결 방식이 변경될 수 있습니다. 인증서 매핑 규칙을 확인하려면 다음 절차를 따르십시오.

사전 요구 사항

절차

  1. 현재 IdM에 대해 구성된 인증서 매핑 규칙을 확인합니다.

    # ipa certmaprule-find
    -------------------------------------------
    1 Certificate Identity Mapping Rule matched
    -------------------------------------------
      Rule name: smartcardrule
      Mapping rule: (ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})
      Matching rule: <ISSUER>CN=Certificate Authority,O=IDM.EXAMPLE.COM
      Enabled: TRUE
    ----------------------------
    Number of entries returned 1
    ----------------------------

    다음과 같은 매핑 규칙 중 하나가 정의된 것을 확인할 수 있습니다.

    • ipacertmapdata 는 IdM 사용자 항목 certmapdata 특성이 사용되었음을 나타냅니다.
    • altSecurityIdentities 는 Active Directory의 사용자 항목 이름 매핑 특성이 사용되도록 지정합니다.
    • userCertificate;binary= 는 IdM 또는 AD의 전체 인증서가 사용됨을 나타냅니다.

    다양한 일치 옵션을 정의할 수 있지만 일반적으로 구성된 옵션 중 일부는 다음과 같습니다.

    • <ISSUER>CN=[…​] 는 사용 중인 인증서의 issuer 속성을 확인하여 이 값과 일치하는지 확인합니다.
    • <SUBJECT>.*,DC=MY,DC=DOMAIN 은 인증서의 제목을 확인합니다.
  2. IdM 서버의 /etc/sssd/sssd.conf 파일에 debug_level = 9 를 추가하여 SSSD(System Security Services Daemon) 로깅을 활성화합니다.

    [domain/idm.example.com]
    ...
    debug_level = 9
  3. SSSD를 다시 시작하십시오.

    # systemctl restart sssd
  4. 매핑이 올바르게 표시되면 /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}))].
  5. 매핑 규칙에 잘못된 구문이 포함된 경우 다음과 유사한 항목을 로그 파일에서 확인할 수 있습니다.

    [be[idm.example.com]]] [sss_certmap_init] (0x0040): sss_certmap initialized.
    [be[idm.example.com]]] [ipa_certmap_parse_results] (0x4000): Trying to add rule [smartcardrule][-1][<ISSUER>CN=Certificate Authority,O=IDM.EXAMPLE.COM][(ipacertmapdata=X509:<I>{issuer_dn!x509}<S>{subject_dn})].
    [be[idm.example.com]]] [parse_template] (0x0040): Parse template invalid.
    [be[idm.example.com]]] [parse_ldap_mapping_rule] (0x0040): Failed to add template.
    [be[idm.example.com]]] [parse_mapping_rule] (0x0040): Failed to parse LDAP mapping rule.
    [be[idm.example.com]]] [ipa_certmap_parse_results] (0x0020): sss_certmap_add_rule failed for rule [smartcardrule], skipping. Please check for typos and if rule syntax is supported.
    [be[idm.example.com]]] [ipa_subdomains_certmap_done] (0x0040): Unable to parse certmap results [22]: Invalid argument
    [be[idm.example.com]]] [ipa_subdomains_refresh_certmap_done] (0x0020): Failed to read certificate mapping rules [22]: Invalid argument
  6. 매핑 규칙 구문을 확인합니다.

    # ipa certmaprule-show smartcardrule
      Rule name: smartcardrule
      Mapping rule: (|(userCertificate;binary={cert!bin})(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500}))
      Matching rule: <ISSUER>CN=Certificate Authority,O=IDM.EXAMPLE.COM
      Domain name: ipa.test
      Enabled: TRUE
  7. 필요한 경우 인증서 매핑 규칙을 수정합니다.

    # ipa certmaprule-mod smartcardrule --maprule '(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})'

추가 리소스

  • sss-certmap 매뉴얼 페이지를 참조하십시오.

9.5.2. 스마트 카드 인증서와 관련된 사용자 확인

스마트 카드로 인증하는 데 문제가 있는 경우 올바른 사용자가 스마트 카드 인증서와 연결되어 있는지 확인합니다.

사전 요구 사항

절차

  1. 사용자가 스마트 카드 인증서와 연결되어 있는지 확인합니다.

    # ipa certmap-match cert.pem
    --------------
    1 user matched
    --------------
      Domain: IDM.EXAMPLE.COM
      User logins: idmuser1
    ----------------------------
    Number of entries returned 1
    ----------------------------

    사용자 또는 도메인이 올바르지 않으면 인증서가 사용자에게 매핑되는 방법을 확인합니다. 인증서가 사용자에 매핑되는 방법 확인을 참조하십시오.

  2. 사용자 항목에 인증서가 포함되어 있는지 확인합니다.

    # ipa user-show idmuser1
      User login: idmuser1
    [...]
    Certificate:MIIEejCCAuKgAwIBAgIBCzANBgkqhkiG9w0BAQsFADAzMREwDwYDVQQKDAhJUEEuVEVTVDEeMBwGA1UEAwwVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XD
  3. 사용자 항목에 인증서가 없으면 사용자 항목에 base-64로 인코딩된 인증서를 추가합니다.

    1. header 및 footer가 제거된 인증서가 포함된 환경 변수를 생성하고 단일 행에 연결합니다. ipa user-add-cert 명령에서 예상되는 형식입니다.

      $ export CERT=`openssl x509 -outform der -in idmuser1.crt | base64 -w0 -`

      idmuser1.crt 파일의 인증서가 PEM 형식이어야 합니다.

    2. ipa user-add-cert 명령을 사용하여 idmuser1 의 프로필에 인증서를 추가합니다.

      $ ipa user-add-cert idmuser1 --certificate=$CERT
    3. SSSD(System Security Services Daemon) 캐시를 지웁니다.

      # 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
  4. ipa certmap-match 를 다시 실행하여 사용자가 스마트 카드 인증서와 연결되어 있는지 확인합니다.