chain.pem 파일의 목적은 무엇입니까?

chain.pem 파일의 목적은 무엇입니까?

chaim.pem 파일에 대한 일반적인 질문입니다. 내 호스트에서 얻은 csr을 사용하고 LetsEncrypt의 Certbot을 사용하여 https 인증서를 생성했습니다. 다음 명령을 사용했습니다.

$ certbot certonly --manual --csr 파일-with-my-csr.txt

certbot은 0000_cert.pem, 0000_chain.pem, 0001_chain.pem 3개의 파일을 생성했습니다. 그런 다음 cert.pem 파일을 사용하여 호스트에 인증서를 다시 설치했습니다. 모든 것이 순조롭게 진행되었습니다.

내 질문은 "체인" 파일이 어디에 사용되는지입니다. 왜냐하면 나는 아무데도 사용하지 않았기 때문입니다. 어떤 시나리오에서 유용할까요?

답변1

Certbot 출력이 약간 이상합니다. 여러 개의 개별 파일이 아닌 올바른 순서로 모든 내용이 포함된 "fullchain.pem" 파일을 받았어야 합니다.

(수동 설치 자체는 말할 것도 없고, 이를 자동화해야 합니다.)

내 질문은 "체인" 파일이 무엇에 사용되는지입니다.

모든 WebPKI 인증 기관에는 최소한 2계층 시스템이 있습니다.

  1. 오프라인으로 안전하게 저장된 루트 CA 인증서는 중간(발급) CA 인증서에 서명합니다.
  2. 온라인에 저장된 중간 CA는 서버(최종 엔터티) 인증서에 서명합니다.

예를 들어,여기 다이어그램이 있습니다암호화하자,일반적으로 계층 구조는 다음과 같습니다.

Root: "DST Root CA X3" (or possibly "ISRG Root X1")
\-- Issuing: "Let's Encrypt R3"
    \-- End-entity: "letsencrypt.org"

대부분의 TLS 클라이언트(브라우저, 운영 체제)는뿌리인증서가 사전 설치되어 있습니다. 이렇게 하면 CA가 인프라를 변경할 때마다 업데이트할 필요가 없으며 CA 자체가 추가되거나 제거될 때만 업데이트됩니다.

그러나 각 인증서의 서명을 확인하려면필요바로 앞의 인증서를 보유해야 합니다(예: 루트 CA만으로는 서버 인증서의 서명을 직접 확인할 수 없습니다. 둘 사이에는 직접적인 암호화 관계가 없습니다).

이는 루트 CA 간의 체인을 완료하려면 클라이언트에 모든 중간 인증서가 있어야 함을 의미합니다. 중간체 중 하나라도 누락되면 클라이언트는 나머지를 확인할 만큼 충분한 정보를 더 이상 갖고 있지 않습니다.

HTTPS의 경우주요한방법은 서버가 모든 체인 인증서를 보내도록 하는 것입니다. 왜냐하면 서버는 이미 인증서를 가지고 있어야 하기 때문입니다.

일부 웹 브라우저에는 이를 위한 대체 메커니즘이 있습니다. 예를 들어 Firefox는 "이전에 본" 중간 항목의 캐시를 유지하는 반면 Windows는 인증서의 AIA URL을 사용하여 중간 항목을 다운로드하려고 시도합니다.

그러나 모든 브라우저가 이를 수행하는 것은 아니며, 중요한 것은 대부분의 웹이 아닌 TLS 클라이언트입니다.~하지 않다그러한 대안이 전혀 없습니다. 불완전한 체인은 HTTPS에서는 작동하는 경우가 많지만 SMTP나 IRC와 같은 경우에는 작동하지 않습니다.

그런 다음 cert.pem 파일을 사용하여 호스트에 인증서를 다시 설치했습니다. 모든 것이 순조롭게 진행되었습니다.

대부분의 경우에만 작동했습니다.일부사용자(주로 Windows 및 Firefox)를 제외하고 다른 많은 사용자는 제외되었습니다. 자신의 시스템에서 작동한다고 해서 다른 모든 시스템에서도 작동해야 한다고 가정하지 마십시오.

다음과 같은 도구SSL 연구소또는 gnutls-cli example.com:443서버가 전체 체인을 전송하지 않는 상황에 대해 경고합니다.

그러나 "귀하의 호스트"가 무엇이든 AIA 정보에서 중간 항목을 사전에 다운로드할 수도 있습니다(Windows의 IIS가 약간 의심됩니다).5월이렇게 하면 자동으로 공백이 채워집니다. 하지만 그런 일이 어디에서나 이루어지면 매우 드뭅니다.

일반 Certbot 사용

일반적으로 Certbot은 수신된 인증서를 "사용 준비가 완료된" 형식으로 폴더에 저장하며 /etc/letsencrypt/live, fullchain.pem에는 호스트 인증서와 필요한 모든 상위 인증서가 포함되어 있습니다. 예를 들어 Apache httpd 2.4.x에서는 다음을 사용합니다.

SSLCertificateFile    /etc/letsencrypt/live/example.net/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.net/privkey.pem

답변2

간단한 설명을 보실 수 있습니다여기

먼저, PEM이란 무엇입니까?

PEM은 암호화 키를 저장하는 데 자주 사용되는 컨테이너 파일 형식입니다. 이는 약간의 데이터를 저장하는 데 사용되는 파일의 구조와 인코딩 유형을 간단히 정의하므로 다양한 용도로 사용됩니다.

PEM 파일이란 무엇입니까?

PEM은 단지 표준일 뿐입니다. 여기에는 텍스트가 포함되어 있으며 형식에 따라 PEM 파일이 다음으로 시작됩니다.

SSL 인증서와 함께 사용되는 Pem 파일:

SSL 인증서가 포함된 PEM 파일

PEM 파일은 SSL 인증서 및 관련 개인 키를 저장하는 데 사용됩니다. 여러 인증서가 전체 SSL 체인에 있으며 다음 순서로 작동합니다.

인증 기관(CA)이 도메인 이름에 할당한 최종 사용자 인증서입니다. 이는 nginx 및 Apache에서 HTTPS를 암호화하는 데 사용하는 파일입니다. 상위 기관이 소규모 인증 기관에 제공하는 최대 4개의 선택적 중간 인증서입니다. 기본 CA에서 자체 서명한 체인의 가장 높은 인증서인 루트 인증서입니다.

그렇다면 chain.pem은 무엇입니까?

chain.pem은 체인의 나머지 부분입니다. 이 경우 LetsEncrypt의 루트 인증서만 해당됩니다.

파일 chain.pem에는 중간 인증서가 포함되어 있습니다.

SSL 인증서를 설치할 때 사이트 인증서뿐만 아니라 중간 인증서도 설치해야 합니다. 중요한 것이 있습니다. 명시된 바와 같이여기:

루트 인증서에는 해당 키를 얻을 수 없도록 보장하는 자체 보안 계층이 있으므로 중간 인증서는 루트 인증서 대신 작동합니다. 중간 인증서는 최종 엔터티 인증서와 루트 인증서 사이에서 "신뢰 체인" 역할을 합니다.

그리고여기:

모든 주요 인증 기관은 추가 보안 수준으로 인해 중간 인증서를 사용합니다. 이는 잘못 발행되거나 보안 사고가 발생하는 경우 피해를 최소화하고 분류하는 데 도움이 됩니다. 루트 인증서와 문자 그대로 서명된 모든 인증서를 취소하는 대신 중간 인증서만 취소하면 해당 중간 인증서에서 발급된 인증서 그룹만 신뢰할 수 없게 됩니다.

관련 정보