루트 인증서 사용을 도메인으로 제한할 수 있습니까?

루트 인증서 사용을 도메인으로 제한할 수 있습니까?

내 고객은 애플리케이션이 작동하기 위해 자체 서명된 인증서를 사용합니다. 작업하려면 인증서 서명에 사용한 루트 인증서를 설치해야 합니다.

하나의 도메인에 대해서만 유효성을 검사하도록 루트 인증서를 구성할 수 있습니까?

답변1

경험상 다음과 같습니다.

아니요, 고객의 CA 인증서를 신뢰한다는 것은 해당 CA가 서명한 모든 인증서에 대한 신뢰를 의미합니다.

나는 최종 사용자가 특정 (하위) 도메인, 즉 *에 대해서만 고객이나 다른 CA 인증서를 신뢰하도록 선택할 수 있는 쉬운 옵션이 있는 애플리케이션/라이브러리에 대해 알지 못합니다. example.com 및 *.example.org 외에는 아무것도 없습니다.

Mozilla는 현재 신뢰할 수 있는 정부 후원 CA에 대해 비슷한 우려를 갖고 있습니다.주의점을 열어라그리고 예를 들어크롬Google 사이트에 액세스하기 위한 추가 검사 기능이 내장되어 있으며, 이는 악성 *.google.com 인증서와 Diginotar CA의 손상이 공개된 방식입니다.

그러나 CA를 신뢰하지 않더라도 해당 CA가 서명한 특정 서버 인증서를 가져오거나 신뢰할 수 있으므로 해당 인증서의 호스트 이름에 대한 SSL 경고가 표시되지 않습니다. 그러면 애플리케이션이 오류나 불만 없이 작동하게 될 것입니다.

예외:

X.509v3 PKI 표준에서 매우 잘 사용되지 않는 옵션은이름 제약CA 인증서에 인증서 발급 권한이 부여된 도메인 이름 패턴의 화이트리스트 및 블랙리스트를 포함할 수 있는 확장입니다.

운이 좋으면 고객이 PKI 인프라를 설정하고 CA 인증서에 해당 이름 제약 조건을 포함할 때 자제할 수 있습니다. 그런 다음 CA 인증서를 직접 가져와서 제한된 범위의 도메인 이름만 검증할 수 있다는 것을 알 수 있습니다.

답변2

@CryptoGuy는 여기에 꽤 좋은 답변을 제공했지만 더 확장하고 싶었습니다.

다른 말로 하면:

원하는 이름 목록에 발급된 해당 CA의 인증서를 신뢰하도록 타사 CA를 제한할 수 있습니다. 3rd party CA에 Name Constraints 확장 기능이 없더라도 상호 인증을 통해 자체 내부 CA 서버를 이용하여 적용이 가능합니다. 비결은 내부 CA를 사용하여 타사 CA에 서명하는 것입니다.

리프 SSL 인증서 -> 교차 인증서 -> CA 인증서 -> 내부 루트 인증서.

그리고 그 작업을 수행하는 방법은 다음과 같습니다(OpenSSL 명령줄 CA 사용).

간단한 CA 만들기

openssl req -new -x509 -days 3650 -newkey rsa:2048 -sha256 -out root-ca.crt -keyout root-ca.key -subj "/CN=My Root CA"

중간 CA를 생성하거나…

이름 제약 조건을 사용하여 중간 CA 요청을 만듭니다.

openssl req -new -days 3650 -newkey rsa:2048 -out domain-ca.req -sha256 -keyout domain-ca.key -config ossl_domain_com.cfg

파일 에 다음이 포함됩니다 ossl_domain_com.cfg.

[ req ]
prompt=no
distinguished_name=req_distinguished_name
req_extensions=domain_ca

[ req_distinguished_name ]
CN=somedomain.com trust CA

[ domain_ca ]
basicConstraints=critical,CA:true,pathlen:1
nameConstraints=critical,permitted;DNS:.somedomain.com

그런 다음 해당 CA를 사용하여 중간 도메인 CA에 서명하세요.

openssl x509 -req -in domain-ca.req -CA root-ca.crt -CAkey root-ca.key -sha256 -set_serial 1 -out domain-ca.crt -extensions domain_ca -extfile ossl_domain_com.cfg

...또는 루트 CA로 다시 서명

중간 생성을 건너뛴 경우 루트 CA를 사용하여 서명하세요. 해당 인증서를 사용하여 귀하의 권한 하에 있는 원래 도메인의 CA에 다시 서명하세요. 여기에 CA 확장을 추가할 수 있습니다.

openssl x509 -in third_party_ca.crt -CA domain-ca.crt -CAkey domain-ca.key -set_serial 47 -sha256 -extensions domain_ca -extfile ossl_domain_com.cfg -out domain-cross-ca.crt

openssl x509 -x509toreq위의 중간 항목과 정확히 동일한 방식으로 서명하는 요청을 생성하는 데 사용해야 할 수도 있습니다 .

이제 루트 CA, 중간 CA 및 도메인 교차 CA를 브라우저의 신뢰 데이터베이스에 추가하십시오.

관련 정보