10.5. 인증서 매핑 및 일치 규칙 문제 해결
스마트 카드로 인증하는 데 문제가 있는 경우 스마트 카드 인증서를 사용자에게 올바르게 연결했는지 확인합니다. 기본적으로 사용자 항목에 usercertificate
속성의 일부로 전체 인증서가 포함된 경우 인증서가 사용자와 연결됩니다. 그러나 인증서 매핑 규칙이 정의된 경우 인증서와 사용자 연결 방식이 변경될 수 있습니다. 인증서 매핑 및 일치 규칙의 문제를 해결하려면 다음 섹션을 참조하십시오.
스마트 카드를 사용하여 SSH를 사용하여 인증하는 경우 전체 인증서를 IdM(Identity Management)의 사용자 항목에 추가해야 합니다. SSH를 사용하여 인증하기 위해 스마트 카드를 사용하지 않는 경우 ipa user-add-certmapdata
명령을 사용하여 인증서 매핑 데이터를 추가할 수 있습니다.
10.5.1. 인증서가 사용자에게 매핑되는 방법 확인
기본적으로 사용자 항목에 usercertificate
속성의 일부로 전체 인증서가 포함된 경우 인증서가 사용자와 연결됩니다. 그러나 인증서 매핑 규칙이 정의된 경우 인증서와 사용자 연결 방식이 변경될 수 있습니다. 인증서 매핑 규칙을 확인하려면 다음 절차를 따르십시오.
사전 요구 사항
- 스마트 카드에서 사용할 IdM(Identity Management) 서버 및 클라이언트를 설치하고 구성했습니다.
- 스마트 카드 리더를 감지하고 스마트 카드의 내용을 표시할 수 있습니다. 시스템의 스마트 카드 액세스 테스트를 참조하십시오.
- 스마트 카드 인증서를 IdM 사용자에게 매핑했습니다. 스마트 카드에서 인증을 구성하기 위한 인증서 매핑 규칙을 참조하십시오.
절차
현재 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
은 인증서의 제목을 확인합니다.
-
IdM 서버의
/etc/sssd/sssd.conf
파일에debug_level = 9
를 추가하여 SSSD(System Security Services Daemon) 로깅을 활성화합니다.[domain/idm.example.com] ... debug_level = 9
SSSD를 다시 시작하십시오.
# systemctl restart sssd
매핑이 올바르게 표시되면
/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]]] [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
매핑 규칙 구문을 확인합니다.
# 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
필요한 경우 인증서 매핑 규칙을 수정합니다.
# ipa certmaprule-mod smartcardrule --maprule '(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})'
추가 리소스
-
sss-certmap
매뉴얼 페이지를 참조하십시오.
10.5.2. 스마트 카드 인증서와 관련된 사용자 확인
스마트 카드로 인증하는 데 문제가 있는 경우 올바른 사용자가 스마트 카드 인증서와 연결되어 있는지 확인합니다.
사전 요구 사항
- 스마트 카드에서 사용할 IdM(Identity Management) 서버 및 클라이언트를 설치하고 구성했습니다.
- 스마트 카드 리더를 감지하고 스마트 카드의 내용을 표시할 수 있습니다. 시스템의 스마트 카드 액세스 테스트를 참조하십시오.
- 스마트 카드 인증서를 IdM 사용자에게 매핑했습니다. 스마트 카드에서 인증을 구성하기 위한 인증서 매핑 규칙을 참조하십시오.
-
스마트 카드의 인증서 사본 (예:
cert.pem
)이 있습니다.
절차
사용자가 스마트 카드 인증서와 연결되어 있는지 확인합니다.
# ipa certmap-match cert.pem -------------- 1 user matched -------------- Domain: IDM.EXAMPLE.COM User logins: idmuser1 ---------------------------- Number of entries returned 1 ----------------------------
사용자 또는 도메인이 올바르지 않으면 인증서가 사용자에게 매핑되는 방법을 확인합니다. 인증서가 사용자에 매핑되는 방법 확인을 참조하십시오.
사용자 항목에 인증서가 포함되어 있는지 확인합니다.
# ipa user-show idmuser1 User login: idmuser1 [...] Certificate:MIIEejCCAuKgAwIBAgIBCzANBgkqhkiG9w0BAQsFADAzMREwDwYDVQQKDAhJUEEuVEVTVDEeMBwGA1UEAwwVQ2VydGlmaWNhdGUgQXV0aG9yaXR5MB4XD
사용자 항목에 인증서가 없으면 사용자 항목에 base-64로 인코딩된 인증서를 추가합니다.
header 및 footer가 제거된 인증서가 포함된 환경 변수를 생성하고 단일 행에 연결합니다.
ipa user-add-cert
명령에서 예상되는 형식입니다.$ export CERT=`openssl x509 -outform der -in idmuser1.crt | base64 -w0 -`
idmuser1.crt
파일의 인증서가 PEM 형식이어야 합니다.ipa user-add-cert
명령을 사용하여idmuser1
의 프로필에 인증서를 추가합니다.$ ipa user-add-cert idmuser1 --certificate=$CERT
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
-
ipa certmap-match
를 다시 실행하여 사용자가 스마트 카드 인증서와 연결되어 있는지 확인합니다.