인증서 체인 유효성 검사

Apigee Edge 문서입니다.
Go to the Apigee X documentation.
info

이 문서에서는 Apigee Edge의 키 저장소 또는 트러스트 저장소에 인증서를 업로드하기 전에 인증서 체인을 검증하는 방법을 설명합니다. 이 프로세스는 OpenSSL 툴킷을 사용하여 인증서 체인을 검증하며 OpenSSL을 사용할 수 있는 모든 환경에 적용됩니다.

시작하기 전에

이 문서의 단계를 사용하기 전에 다음 주제를 이해해야 합니다.

  • 인증서 체인에 익숙하지 않은 경우 신뢰 체인을 읽어보세요.
  • OpenSSL 라이브러리에 익숙하지 않은 경우 OpenSSL을 읽어보세요.
  • 이 가이드의 명령줄 예시를 사용하려면 OpenSSL 클라이언트를 설치하거나 최신 버전으로 업데이트하세요.
  • 인증서가 PEM 형식인지 확인합니다. 인증서가 PEM 형식이 아닌 경우 지원되는 형식으로 인증서 변환의 안내에 따라 PEM 형식으로 변환합니다.

전체 체인의 인증서 주체 및 발급기관 검증

OpenSSL 명령어를 사용하여 인증서 체인을 검증하려면 다음 섹션에 설명된 단계를 완료하세요.

인증서 체인 분할

인증서를 검증하기 전에 다음 단계를 사용하여 인증서 체인을 별도의 인증서로 분할해야 합니다.

  1. OpenSSL 클라이언트가 있는 서버에 로그인합니다.
  2. 아직 분할하지 않은 경우 인증서 체인을 다음 인증서로 분할합니다.
    • 엔티티 인증서: entity.pem
    • 중간 인증서: intermediate.pem
    • 루트 인증서: root.pem

다음 그림은 인증서 체인의 예시를 보여줍니다.

인증서 체인 흐름: ID 인증서에서 중간 인증서로, 중간 인증서에서 루트 인증서로

인증서 주체 및 발급기관 확인

이 섹션에서는 인증서의 주체와 발급기관을 가져오고 유효한 인증서 체인이 있는지 확인하는 방법을 설명합니다.

  1. 다음 OpenSSL 명령어를 실행하여 체인의 각 인증서(entity에서 root까지)에 대한 SubjectIssuer를 가져오고 올바른 인증서 체인을 구성하는지 확인합니다.
    openssl x509 -text -in certificate | grep -E '(Subject|Issuer):'
        

    여기서 certificate는 인증서의 이름입니다.

  2. 체인의 인증서가 다음 가이드라인을 준수하는지 확인합니다.
    • 각 인증서의 Subject는 체인의 이전 인증서 (Entity 인증서 제외)의 Issuer와 일치합니다.
    • 루트 인증서의 SubjectIssuer는 동일합니다.

    체인의 인증서가 이러한 가이드라인을 준수하는 경우 인증서 체인이 완전하고 유효한 것으로 간주됩니다.

    샘플 인증서 체인 검증

    다음 예시는 인증서 3개가 포함된 샘플 인증서 체인에 대한 OpenSSL 명령어의 출력입니다.

    엔티티 인증서

    openssl x509 -text -in entity.pem | grep -E '(Subject|Issuer):'
    
    Issuer: C = US, O = Google Trust Services, CN = GTS CA 1O1
    Subject: C = US, ST = California, L = Mountain View, O = Google LLC, CN = *.enterprise.apigee.com
            

    중간 인증서

    openssl x509 -text -in intermediate.pem  | grep -E '(Subject|Issuer):'
    
    Issuer: OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
    Subject: C = US, O = Google Trust Services, CN = GTS CA 1O1
            

    루트 인증서

    openssl x509 -text -in root.pem | grep -E '(Subject|Issuer):'
    
    Issuer: OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
    Subject: OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
            

    위의 예시에서 다음 사항에 유의하세요.

    • 중간 인증서의 Subject는 엔티티 인증서의 Issuer 와 일치합니다.
    • 루트 인증서의 Subject는 중간 인증서의 Issuer와 일치합니다.
    • 루트 인증서의 SubjectIssuer는 동일합니다.

    위의 예시에서 샘플 인증서 체인이 유효함을 확인할 수 있습니다.

인증서 주체 및 발급기관 해시 확인

이 섹션에서는 인증서의 주체와 발급기관의 해시를 가져오고 유효한 인증서 체인이 있는지 확인하는 방법을 설명합니다.

인증서의 해시 시퀀스를 확인하는 것이 좋습니다. 인증서의 일반 이름 (CN)에 원치 않는 공백이나 특수문자가 있는 등의 문제를 식별하는 데 도움이 될 수 있습니다.

  1. 다음 OpenSSL 명령어를 실행하여 체인의 각 인증서(entity에서 root까지)에 대한 hash 시퀀스를 가져오고 올바른 인증서 체인을 구성하는지 확인합니다.
  2. openssl x509 -hash -issuer_hash -noout -in certificate
        

    여기서 certificate는 인증서의 이름입니다.

  3. 체인의 인증서가 다음 가이드라인을 준수하는지 확인합니다.
    • 각 인증서의 Subject는 체인의 이전 인증서 (Entity 인증서 제외)의 Issuer와 일치합니다.
    • 루트 인증서의 SubjectIssuer는 동일합니다.

    체인의 인증서가 이러한 가이드라인을 준수하는 경우 인증서 체인이 완전하고 유효한 것으로 간주됩니다.

    해시 시퀀스를 통한 샘플 인증서 체인 검증

    다음 예시는 인증서 3개가 포함된 샘플 인증서 체인에 대한 OpenSSL 명령어의 출력입니다:

    openssl x509 -in entity.pem -hash -issuer_hash -noout
    c54c66ba #this is subject hash
    99bdd351 #this is issuer hash
        
    openssl x509 -in intermediate.pem -hash -issuer_hash -noout
    99bdd351
    4a6481c9
        
    openssl x509 -in root.pem -hash -issuer_hash -noout
    4a6481c9
    4a6481c9
        

    위의 예시에서 다음 사항에 유의하세요.

    • 중간 인증서의 subject hash는 엔티티 인증서의 issuer hash와 일치합니다.
    • 루트 인증서의 subject hash는 발급기관 인증서의 issuer hash와 일치합니다.
    • 루트 인증서의 subjectissuer hash는 동일합니다.

    위의 예시에서 샘플 인증서 체인이 유효함을 확인할 수 있습니다.

인증서 만료 확인

이 섹션에서는 다음 방법을 사용하여 체인의 모든 인증서가 만료되었는지 확인하는 방법을 설명합니다.

  • 인증서의 시작일과 종료일을 가져옵니다.
  • 만료 상태를 가져옵니다.

시작일 및 종료일

다음 OpenSSL 명령어를 실행하여 체인의 각 인증서(entity에서 root까지)에 대한 시작일과 종료일을 가져오고 체인의 모든 인증서가 유효하며(시작일이 오늘 이전) 만료되지 않았는지 확인합니다.

시작일 및 종료일을 통한 샘플 인증서 만료 검증

openssl x509 -startdate -enddate -noout -in entity.pem
notBefore=Feb  6 21:57:21 2020 GMT
notAfter=Feb  4 21:57:21 2021 GMT
openssl x509 -startdate -enddate -noout -in intermediate.pem
notBefore=Jun 15 00:00:42 2017 GMT
notAfter=Dec 15 00:00:42 2021 GMT
openssl x509 -startdate -enddate -noout -in root.pem
notBefore=Apr 13 10:00:00 2011 GMT
notAfter=Apr 13 10:00:00 2022 GMT

만료 상태

다음 OpenSSL 명령어를 실행하여 인증서가 이미 만료되었는지 또는 만료될 예정인지 다음 N seconds에서 확인합니다. 이렇게 하면 현재 시스템 날짜를 기준으로 인증서의 만료 상태가 반환됩니다.

openssl x509 -checkend <N Seconds> -noout -in certificate

여기서 certificate는 인증서의 이름입니다.

checkend 옵션을 통한 샘플 인증서 만료 검증

다음 명령어는 0 seconds를 사용하여 인증서가 이미 만료되었는지 확인합니다.

openssl x509 -checkend 0 -noout -in entity.pem
Certificate will not expire
openssl x509 -checkend 0 -noout -in intermediate.pem
Certificate will not expire
openssl x509 -checkend 0 -noout -in root.pem
Certificate will not expire

이 예시에서 Certificate will not expire 메시지는 인증서가 아직 만료되지 않았음을 나타냅니다.