22장. 만료된 시스템 인증서에서 복구


IdM(Identity Management) 인증서가 만료되면 웹 UI, LDAP 및 인증서 발행과 같은 핵심 서비스가 실패합니다. ipa-certupdateipa-cacert-manage 와 같은 명령이 시스템이 보안 연결을 설정할 수 없기 때문에 작동하지 않습니다. 다음 섹션에서는 몇 가지 중요한 실패 시나리오에 대한 절차를 제공합니다.

중요

변경하기 전에 IdM 서버의 전체 백업을 생성합니다. 최소한 각 서버에 중요한 데이터의 파일 수준 백업을 만듭니다.

# tar czvf /root/pki-backup_$(hostname -f)_$(date +%F).tar.gz /etc/dirsrv/slapd-* /etc/pki/pki-tomcat/ /var/lib/ipa/ /var/kerberos/krb5kdc/

신뢰할 수 있는 백업 없이 진행하지 마십시오.

주의

ipa-cert-fix 명령을 주의해서 사용하십시오. ipa-cert-fix 는 특정 실패 시나리오를 위해 설계된 강력하지만 침입적인 툴입니다. 갱신 서버의 서비스 인증서가 만료되었습니다.

  • CA 인증서 자체가 만료된 경우 ipa-cert-fix 를 실행하지 마십시오.
  • 갱신 서버가 복구할 수 없는 상태인 경우를 제외하고 복제본 서버에서 ipa-cert-fix 를 실행하지 마십시오. 이 상황에서 자신을 발견하면 지원 티켓을 작성하십시오.
  • ipa-cert-fix 를 일반적인 문제 해결 도구로 실행하지 마십시오.

이 도구를 잘못 사용하면 상황이 더 나빠질 수 있습니다.

22.1. 복제본의 만료된 서비스 인증서에서 복구

이 실패 시나리오에서는 갱신 서버가 정상이지만 하나 이상의 복제본이 인증서를 갱신하지 못하고 이제 오프라인 상태입니다. 목표는 복제본을 복원하기 위해 서버에서 필요한 인증서를 수동으로 동기화하거나 다시 게시하는 것입니다.

이 절차에서는 4가지 중요 인증서 ( RA Agent 인증서, Cryostat 인증서, LDAP) 인증서 및 PKI Tomcat(Web Server) 인증서를 다룹니다.

참고

갱신 서버인 서버가 확실하지 않은 경우 IdM 서버에서 다음 명령을 실행합니다. 명령 출력은 CA 갱신 서버의 고유 이름(DN)입니다.

# ldapsearch -Y GSSAPI -b cn=masters,cn=ipa,cn=etc,dc=example,dc=com ipaConfigString=caRenewalMaster dn
Copy to Clipboard Toggle word wrap

Kerberos를 사용할 수 없는 경우 Directory Manager 암호와 함께 다음 명령을 사용하십시오.

# ldapsearch -x -D 'cn=Directory Manager' -W -b cn=masters,cn=ipa,cn=etc,dc=example,dc=com ipaConfigString=caRenewalMaster dn
Copy to Clipboard Toggle word wrap

프로세스

  1. IdM 서비스가 실행 중인지 확인합니다.

    # ipactl status
    Copy to Clipboard Toggle word wrap
  2. 선택 사항입니다. 실행 중인 서비스가 없는 경우 강제로 시작하도록 합니다.

    # ipactl start -f
    Copy to Clipboard Toggle word wrap

    -f 또는 --force 플래그는 만료된 인증서로 인해 서비스를 통신할 수 없는 경우 필요한 일부 시작 검사를 바이패스합니다.

  3. 갱신 서버와 실패한 복제본 간의 RA 에이전트 및 Cryostat 인증서를 비교합니다.

    정상 갱신 서버와 실패한 복제본 모두에서 RA 에이전트 및 하위 시스템의 일련 번호를 검색하고 해당 서버가 동일한지 확인합니다.

    1. RA 에이전트 인증서 및 해당 LDAP 항목. 일련 번호는 3진수로 구분된 설명 특성 문자열에서 두 번째 값입니다(예: 2;SERIAL;…​:):

      # openssl x509 -in /var/lib/ipa/ra-agent.pem -noout -serial
      
      # ldapsearch -D "cn=directory manager" -W -b "uid=ipara,ou=people,o=ipaca" description
      Copy to Clipboard Toggle word wrap
    2. 하위 시스템 인증서 및 해당 LDAP 항목. 일련 번호는 3진수로 구분된 설명 특성 문자열에서 두 번째 값입니다(예: 2;SERIAL;…​:):

      # certutil -L -d /etc/pki/pki-tomcat/alias/ -n 'subsystemCert cert-pki-ca' | grep "Serial Number"
      
      # ldapsearch -D "cn=directory manager" -W -b "uid=pkidbuser,ou=People,o=ipaca" description
      Copy to Clipboard Toggle word wrap

      복제본의 일련 번호가 CA 갱신 서버의 일련 번호가 일치하지 않으면 다음 단계를 진행하여 동기화합니다.

  4. 정상적인 인증서를 복제본에 수동으로 복사합니다. 갱신 서버에서 ra-agent.pem 및 하위 시스템 인증서를 실패한 복제본에 복사합니다.

    1. RA 에이전트 인증서 파일을 복사합니다.

      # scp /var/lib/ipa/ra-agent.pem root@failed-replica.idm.example.com:/tmp/
      Copy to Clipboard Toggle word wrap
    2. 하위 시스템 인증서를 내보냅니다.

      # certutil -L -d /etc/pki/pki-tomcat/alias -n 'subsystemCert cert-pki-ca' -a > /tmp/subsystem.pem
      Copy to Clipboard Toggle word wrap
    3. 하위 시스템 인증서를 복사합니다.

      # scp /tmp/subsystem.pem root@failed-replica.idm.example.com:/tmp/
      Copy to Clipboard Toggle word wrap
  5. 실패한 복제본에서 만료된 RA 에이전트 인증서를 교체합니다.

    1. 정상적인 인증서를 위치에 복사합니다.

      # cp /tmp/ra-agent.pem /var/lib/ipa/ra-agent.pem
      Copy to Clipboard Toggle word wrap
    2. LDAP에서 해당 항목을 업데이트하여 올바른 인증서 Blob 및 일련 번호가 포함되어 있는지 확인합니다. 이 단계에는 Directory Manager 암호가 필요합니다.

      1. 한 줄 Blob으로 변환하고 변수에 저장하여 LDAP에 대한 새 RA 에이전트 인증서를 준비합니다.

        # RA_CERT_BLOB=$(sed -rn '/^-----BEGIN CERTIFICATE-----$/{:1;n;/^-----END CERTIFICATE-----$/b2;H;b1};:2;${x;s/\s//g;p}' /tmp/ra-agent.pem)
        Copy to Clipboard Toggle word wrap
      2. 새 인증서에서 일련 번호를 추출하여 변수에 저장합니다.

        # RA_CERT_SERIAL=$(openssl x509 -in /tmp/ra-agent.pem -noout -serial | cut -d'=' -f2)
        Copy to Clipboard Toggle word wrap
      3. LDAP 데이터베이스를 수정하기 전에 IdM 서비스가 실행 중인지 확인합니다.

        # ipactl start -f
        Copy to Clipboard Toggle word wrap
      4. 새 인증서 Blob 및 일련 번호를 사용하여 RA 에이전트의 LDAP 항목을 업데이트합니다. Directory Manager 암호를 입력하라는 메시지가 표시됩니다.

        # ldapmodify -D "cn=Directory Manager" -W -x <<EOF
        dn: uid=ipara,ou=people,o=ipaca
        changetype: modify
        add: userCertificate
        userCertificate:: ${RA_CERT_BLOB}
        
        replace: description
        description: 2;${RA_CERT_SERIAL};CN=Certificate Authority,O=IDM.EXAMPLE.COM;CN=IPA RA,O=IDM.EXAMPLE.COM
        EOF
        Copy to Clipboard Toggle word wrap

        IDM.EXAMPLE.COM 을 IdM 영역으로 교체하거나 사용자 정의 인증서 제목 기반을 사용합니다.

  6. 실패한 복제본에서 만료된 하위 시스템 인증서를 교체합니다.

    1. 정상 인증서를 NSS 데이터베이스로 가져옵니다. 이를 위해서는 NSS 데이터베이스 암호가 필요합니다. 이 암호는 /etc/pki/pki-tomcat/password.conf 에서 확인할 수 있습니다.

      1. 다음 명령에서 더 쉽게 사용할 수 있도록 NSS 데이터베이스 암호 파일의 위치에 대한 변수를 설정합니다.

        # PWDFILE=/etc/pki/pki-tomcat/alias/pwdfile.txt
        Copy to Clipboard Toggle word wrap
      2. NSS 데이터베이스에서 만료된 이전 하위 시스템 인증서를 제거합니다.

        # certutil -D -d /etc/pki/pki-tomcat/alias -n 'subsystemCert cert-pki-ca' -f $PWDFILE
        Copy to Clipboard Toggle word wrap
      3. /tmp/subsystem.pem 파일의 새 정상 하위 시스템 인증서를 NSS 데이터베이스에 추가합니다.

        # certutil -A -d /etc/pki/pki-tomcat/alias -n 'subsystemCert cert-pki-ca' -t ",," -i /tmp/subsystem.pem -f $PWDFILE
        Copy to Clipboard Toggle word wrap
    2. RA 에이전트 단계와 유사한 LDAP의 해당 항목을 업데이트합니다.

      # SUBSYS_CERT_BLOB=$(cat /tmp/subsystem.pem | sed -rn '/^-----BEGIN CERTIFICATE-----$/{:1;n;/^-----END CERTIFICATE-----$/b2;H;b1};:2;${x;s/\s//g;p}')
      
      # SUBSYS_CERT_SERIAL=$(openssl x509 -in /tmp/subsystem.pem -noout -serial | cut -d'=' -f2)
      
      # ldapmodify -D "cn=Directory Manager" -W -x <<EOF
      dn: uid=pkidbuser,ou=people,o=ipaca
      changetype: modify
      add: userCertificate
      userCertificate:: ${SUBSYS_CERT_BLOB}
      
      replace: description
      description: 2;${SUBSYS_CERT_SERIAL};CN=Certificate Authority,O=IDM.EXAMPLE.COM;CN=CA Subsystem,O=IDM.EXAMPLE.COM
      EOF
      Copy to Clipboard Toggle word wrap

      IDM.EXAMPLE.COM 을 IdM 영역으로 교체하거나 사용자 정의 인증서 제목 기반을 사용합니다.

  7. 복제본의 LDAP 서비스에 대한 임시 인증서를 수동으로 발행합니다.

    1. 실패한 복제본에서 Directory Server의 NSS 데이터베이스의 기존 키에서 CSR(인증서 서명 요청)을 생성합니다.

      # DS_INSTANCE=$(grep ldap_uri /etc/ipa/default.conf | sed -n 's|.%2Frun%2F\(slapd-\)\.socket.|\1|p')*
      
      # LDAP_CERT_NICKNAME=$(grep nsSSLPersonalitySSL "/etc/dirsrv/${DS_INSTANCE}/dse.ldif" | awk '{ print $2 }')
      
      # HOSTNAME=$(hostname -f)
      
      # PWDFILE="/etc/dirsrv/${DS_INSTANCE}/pwdfile.txt"
      
      # certutil -R -d "/etc/dirsrv/${DS_INSTANCE}" -k ${LDAP_CERT_NICKNAME} -n ${LDAP_CERT_NICKNAME} -s "CN=${HOSTNAME}" -a -f "${PWDFILE}" -8 "${HOSTNAME}" -o /tmp/ldap.csr
      Copy to Clipboard Toggle word wrap
      참고

      위의 명령은 /tmp/ldap.csr 를 생성합니다. 일부 certutil 버전에서는 파일에 텍스트를 추가할 수 있습니다. 파일에 ----BEGIN NEW CERTIFICATE REQUEST------ 블록만 포함되어 있는지 확인합니다.

    2. IdM CA에서 인증서를 서명한 경우:

      1. 실패한 복제본에서 CSR을 갱신 서버에 복사합니다.

        # scp /tmp/ldap.csr root@renewal-master.idm.example.com:/tmp/
        Copy to Clipboard Toggle word wrap
      2. 갱신 서버에서 CSR에 서명합니다. ldap/ Principal를 사용하여 인증서가 GSSAPI 바인딩에 유효한지 확인합니다.

        # ipa cert-request /tmp/ldap.csr --principal="ldap/$(hostname -f)" --certificate-out=/tmp/ldap.pem
        Copy to Clipboard Toggle word wrap
      3. 갱신 서버에서 새 인증서를 다시 복제본으로 복사합니다.

        # scp /tmp/ldap.pem root@failed-replica.idm.example.com:/tmp/
        Copy to Clipboard Toggle word wrap
      4. 실패한 복제본에서 새 인증서를 Directory 서버의 NSS 데이터베이스로 가져옵니다.

        # certutil -D -d "/etc/dirsrv/${DS_INSTANCE}" -n ${LDAP_CERT_NICKNAME} -f "${PWDFILE}"
        
        # certutil -A -d "/etc/dirsrv/${DS_INSTANCE}" -n ${LDAP_CERT_NICKNAME} -t ",," -i /tmp/ldap.pem -f "${PWDFILE}"
        Copy to Clipboard Toggle word wrap
    3. 외부 CA에서 인증서에 서명한 경우:

      1. /tmp/ldap.csr 파일을 가져와서 서명을 위해 외부 인증 기관에 제출합니다.
      2. 새 인증서 파일(예: new_ldap_cert.pem)이 수신되면 실패한 복제본의 /tmp/ 디렉터리에 안전하게 복사하여 ldap.pem 으로 이름을 바꿉니다.
      3. 실패한 복제본에서 새 인증서를 Directory 서버의 NSS 데이터베이스로 가져옵니다.

        # certutil -D -d "/etc/dirsrv/${DS_INSTANCE}" -n ${ LDAP_CERT_NICKNAME} -f "${PWDFILE}"
        
        # certutil -A -d "/etc/dirsrv/${DS_INSTANCE}" -n ${ LDAP_CERT_NICKNAME} -t ",," -i /tmp/ldap.pem -f "${PWDFILE}"
        Copy to Clipboard Toggle word wrap
  8. 복제본의 PKI Tomcat 서비스에 대한 임시 인증서를 수동으로 발행합니다.

    1. 영향을 받는 복제본에서 PKI Tomcat NSS 데이터베이스에 저장된 기존 키를 사용하여 CSR을 생성합니다.

      # HOSTNAME=$(hostname -f)
      
      # PWDFILE="/etc/pki/pki-tomcat/alias/pwdfile.txt"
      
      # certutil -R -d /etc/pki/pki-tomcat/alias -k 'Server-Cert cert-pki-ca' -n 'Server-Cert cert-pki-ca' -s "CN=${HOSTNAME},O=IDM.EXAMPLE.COM" -a -f "${PWDFILE}" -o /tmp/server-cert.csr
      Copy to Clipboard Toggle word wrap

      IDM.EXAMPLE.COM 을 IdM 영역으로 교체하거나 사용자 정의 인증서 제목 기반을 사용합니다.

    2. 실패한 복제본에서 CSR을 갱신 서버에 복사합니다.

      # scp /tmp/server-cert.csr root@renewal-master.idm.example.com:/tmp/
      Copy to Clipboard Toggle word wrap
    3. 갱신 서버에서 CSR에 서명합니다. 웹 서버 인증서에 host/ principal를 사용합니다.

      # ipa cert-request /tmp/server-cert.csr --principal="host/$(hostname -f)" --certificate-out=/tmp/server-cert.pem
      Copy to Clipboard Toggle word wrap
    4. 갱신 서버에서 새 인증서를 다시 복제본으로 복사합니다.

      # scp /tmp/server-cert.pem root@failed-replica.idm.example.com:/tmp/
      Copy to Clipboard Toggle word wrap
    5. 실패한 복제본에서 새 인증서를 PKI Tomcat NSS 데이터베이스로 가져옵니다.

      # certutil -D -d /etc/pki/pki-tomcat/alias -n 'Server-Cert cert-pki-ca' -f "${PWDFILE}"
      
      # certutil -A -d /etc/pki/pki-tomcat/alias -n 'Server-Cert cert-pki-ca' -t ",," -i /tmp/server-cert.pem -f "${PWDFILE}"
      Copy to Clipboard Toggle word wrap
  9. 서비스를 다시 시작하고 나머지 인증서를 갱신합니다.

    1. 복제본에서 IdM 서비스를 다시 시작하여 새 인증서를 사용합니다.

      # ipactl restart
      Copy to Clipboard Toggle word wrap
    2. certmonger 서비스를 다시 시작하여 수동 변경 사항을 적용합니다. 다시 시작되면 나머지 인증서를 갱신하기 시작해야 합니다.

      # systemctl restart certmonger
      Copy to Clipboard Toggle word wrap
    3. 정기적으로 getcert list | grep -E "Request ID|status|expires" 를 실행하여 갱신 프로세스를 확인할 수 있습니다. 모든 인증서가 MONITORING 상태에 있으면 프로세스가 완료됩니다.
    4. 이제 certmonger 서비스가 CA와 통신할 수 있어야 합니다. 몇 분 후에 하나 이상의 인증서가 갱신되지 않은 상태로 남아 있는 경우 수동으로 갱신하는 것이 좋습니다.

      # getcert list
      
      # getcert resubmit -i <REQUEST_ID>
      Copy to Clipboard Toggle word wrap
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat