각 요소의 정의
- SSLCertificateKeyFile
- 서버의 **개인 키(Private Key)**가 저장된 파일을 가리킵니다.
- 개인 키는 서버가 자신을 식별할 수 있는 중요한 정보로, 서버가 SSL 통신을 할 때 암호화된 데이터를 복호화하거나 데이터를 서명하는 데 사용됩니다.
- 보안성이 매우 중요한 파일이며, 외부에 노출되지 않도록 주의해야 합니다.
- SSLCertificateFile
- 서버의 **공인 인증서(Public Certificate)**가 저장된 파일을 의미합니다.
- 공인 인증서에는 서버의 도메인, 발급자, 만료일 등의 정보가 포함되어 있으며, 인증 기관(CA)이 서버의 도메인과 개인 키를 확인하여 발급합니다.
- 클라이언트는 이 인증서를 통해 서버가 신뢰할 수 있는지 확인하고, 공개 키를 통해 암호화된 통신을 진행할 수 있습니다.
- SSLCertificateChainFile
- 서버 인증서와 루트 인증서 사이의 **중간 인증서(Intermediate Certificate)**들을 포함하는 파일을 지정합니다.
- 클라이언트가 서버 인증서를 검증할 때, 서버 인증서가 최상위 루트 인증서까지 이어지는 신뢰 체인이 필요합니다. 이 체인을 완성하기 위해 중간 인증서를 제공해야 하며, 이를 SSLCertificateChainFile에서 지정합니다.
- 중간 인증서들을 서버 인증서와 루트 인증서의 순서로 포함하여 체인을 완성합니다.
- Apache의 최신 버전에서는 SSLCertificateFile에 서버 인증서와 중간 인증서를 포함시키는 방식으로 SSLCertificateChainFile 없이도 설정 가능합니다.
- SSLCACertificateFile
- 인증 기관(CA)의 인증서가 저장된 파일을 의미합니다.
- 서버가 클라이언트와 SSL 연결을 설정할 때, 클라이언트는 서버의 인증서가 유효한지 확인하기 위해 이 파일을 참조할 수 있습니다.
- 주로 서버가 클라이언트 인증을 수행하거나 상호 인증이 필요한 경우 사용됩니다.
- 일반적으로 루트 인증서 및 중간 인증서가 포함되어, 인증 체인(Chain of Trust)을 구성합니다.
이 세 가지 파일은 SSL/TLS 보안 통신을 위한 필수 구성 요소로, 각각 서버 인증 및 데이터 암호화를 위한 역할을 수행합니다.
combined.pem 만드는 법
cat Cert 파일 Chain_CA 파일 CA 파일 > combined.pem
합친 파일은 보통 서버의 SSLCertificateFile 설정에 사용됩니다. 각 파일의 순서는 SSL 인증서 체인 구성을 위한 필수 요소로, 클라이언트가 서버 인증서를 신뢰할 수 있도록 하기 위해 중요합니다. nginx의 SSLCertificateFile 파일에 사용하고 있습니다.
구성 요소와 순서의 의미
- Cert 파일
- 서버의 개별 인증서로, 서버 도메인에 대해 발급된 SSL 인증서입니다.
- 이 파일에는 서버의 도메인 정보와 공개 키가 포함되어 있으며, 클라이언트가 이 파일을 통해 서버의 신원을 확인합니다.
- SSL 인증 체인 상 가장 상위(첫 번째) 항목으로 사용됩니다.
- Chain CA 파일
- **중간 인증서(Chain CA)**로, 서버 인증서를 발급한 중간 인증 기관의 인증서입니다.
- SSL 인증 체인의 중간에 위치하며, 서버 인증서와 루트 인증서 간의 신뢰 체인을 완성합니다.
- 이 중간 인증서는 클라이언트가 최종 루트 인증서까지 신뢰할 수 있도록 연결하는 역할을 합니다.
- CA 파일
- **루트 인증서(CA)**로, 최상위 인증 기관의 인증서입니다.
- 루트 인증서는 브라우저나 OS의 신뢰 저장소에 포함되어 있으므로, 인증서 체인의 마지막에 위치하여 최종 신뢰성을 부여합니다.
따라서, 이 명령은 서버 인증서(Cert 파일), 중간 인증서(Chain CA 파일), 그리고 루트 인증서(CA 파일)를 합쳐서 SSL 인증 체인 파일을 구성하는 것입니다. combined.pem 파일을 생성하여 서버의 SSLCertificateFile 설정에 사용하면, 클라이언트가 체인 순서에 맞게 인증을 수행하고 SSL 연결을 신뢰할 수 있게 됩니다.
구별법
openssl x509 -in 파일이름.crt -text -noout
- 각 인증서를 분석하려면 openssl x509 명령어로 정보를 출력할 수 있습니다. 이를 통해 각 인증서의 **발급자(Issuer)**와 **대상(Subject)**를 확인할 수 있습니다.
. 파일 내용의 주요 특징
- 서버 인증서 (Cert 파일)
- Subject: 해당 서버의 도메인 정보를 포함하고 있습니다 (예: CN=example.com).
- Issuer: 중간 인증 기관 또는 루트 인증 기관이 됩니다.
- 일반적으로 사이트(서버) 인증서입니다.
- 중간 인증서 (Chain CA 파일)
- Subject: 중간 인증 기관 이름이 나타납니다 (예: CN=GlobalSign Organization Validation CA - SHA256 - G2).
- Issuer: 상위 인증 기관(루트 인증 기관)을 나타냅니다.
- 서버 인증서와 루트 인증서를 연결하는 중간 인증서로, 클라이언트가 최상위 루트까지 도달하도록 합니다.
- 루트 인증서 (CA 파일)
- Subject와 Issuer가 동일합니다. 루트 인증서는 자가 서명(self-signed)되어 있으므로, 일반적으로 발급자(Issuer)와 주체(Subject)가 동일합니다.
- 예: Subject: CN=GlobalSign Root CA와 Issuer: CN=GlobalSign Root CA로 표시됩니다.
- 최상위 인증 기관으로 신뢰 체인의 끝을 형성합니다.
요약 정리
- 서버 인증서 (Cert): 주체(Subject)에 서버의 도메인이 포함.
- 중간 인증서 (Chain CA): 발급자(Issuer)가 루트 인증 기관, 주체(Subject)가 중간 인증 기관 이름.
- 루트 인증서 (CA): 발급자(Issuer)와 주체(Subject)가 동일 (자가 서명됨).
이와 같은 방식으로 각 파일의 내용을 확인하여 구분할 수 있습니다.