인증서 체인 유효성 검사

현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동
정보

이 문서에서는 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는 체인에 있는 이전 인증서의 Issuer와 일치합니다 (Entity 인증서 제외).
    • 루트 인증서의 경우 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는 체인에 있는 이전 인증서의 Issuer과 일치합니다 (Entity 인증서 제외).
    • 루트 인증서의 경우 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은 인증서 이름입니다.

체크엔드 옵션을 통한 인증서 만료 유효성 검사 샘플

다음 명령어는 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 메시지는 인증서가 아직 만료되지 않았음을 나타냅니다.