Openldap 및 SSL 인증서 체인 유효성 검사 CA 인증서 < root CA

다음과 같은 간단한 PKI를 사용하여 한 서버에서 slapd에 대한 TLS를 설정했습니다.

ldap cert < 중간 CA 인증서 < root CA 인증서

클라이언트에서 TLS를 사용하여 ldap 서버에 연결하기 위해 필자가 찾은 많은 자습서와 마찬가지로 루트 CA 인증서와 ldap 인증서를 신뢰할 수있는 인증서에 추가했습니다.

TLS를 통해 LDAP 서버에 연결할 수 있습니다

그러나 왜 중간 CA 인증서가 필요하지 않습니까? ldap 인증서와 함께 ldap 서버에서 전송해야합니까? slapd 설정에서만 구성했습니다.

olcTLSCACertificateFile: /etc/ldap/ssl/root.pem
olcTLSCertificateFile: /etc/ldap/ssl/ldap_crt.pem
olcTLSCertificateKeyFile: /etc/ldap/ssl/ldap_key.pem

그리고이 루트 및 ldap 인증서 파일 각각에는 자체 인증서 만 포함되어있는 것 같습니다.

내가 뭔가를 오해하고 있습니까? 중간 CA 인증서가 무엇인지 클라이언트가 모르게 작동하는 이유는 무엇입니까?



답변

중간 CA 인증서가있는 이유는 루트 CA 인증서의 개인 키를 오프라인으로 유지할 수 있기 때문입니다.

일반적인 인증 기관 설정에서 루트 CA 인증서는 오프라인 상태로 유지되며 중간 CA 인증서, 무장 경비원, C 수준 직원 및 많은 프로토콜과 관련된 드문 이벤트에 서명하는 데만 사용됩니다. 중간 CA 개인 키는 온라인 상태로 유지되며 최종 고객의 TLS 인증서 요청에 서명하는 데 사용됩니다. 모든 최종 인증서에 서명하기 위해 이러한 종류의 프로토콜을 유지하는 것은 불가능합니다.

CA 손상의 경우 중간 CA (및 서명 한 인증서) 만 교체하면됩니다. 루트 CA가 손상된 경우 CA가 서명 한 모든 인증서를 교체해야하므로 CA를 거의 사용하지 않을 것입니다.

또한 루트 CA는 클라이언트의 신뢰 저장소에 있어야합니다. 클라이언트는 인증서를 허용 할 CA를 결정하고 해당 루트 CA 인증서를 로컬로 유지합니다. 임의의 중간 인증서를 사용하면 이와 관련하여 CA가 더 유연 해집니다. 루트 CA가 아닌 루트 CA 만 서명하기 때문에 훨씬 더 쉽게 변경할 수 있습니다 (예 :보다 안전한 해시 알고리즘으로 업그레이드).

TLS 협상 중에 서버는 인증서와 루트 CA가 아닌 경우 인증서에 서명 인증서와 루트 CA가 아닌 경우 해당 인증서에 서명 한 인증서를 보냅니다 . 클라이언트는 루트 CA 인증서를 가지고 있으므로 서버는 인증서를 보내면 안됩니다. 서버가 루트 CA 인증서를 보내려고하면 일부 클라이언트는 연결을 거부합니다.


귀하의 경우, 인증서의 출처를 지정하지 않았거나 관련 정보를 제공하지 않았으므로 추측 만 가능합니다.

개인 CA의 인증서 인 경우 TLS 인증서는 중간 CA 대신 또는 중간에 추가하여 루트 CA에 의해 직접 서명되었을 수 있습니다. 클라이언트는 신뢰 저장소에 중간체를 가질 수도 있습니다 (그렇지 않아야 함).