루트 인증서 사용을 도메인으로 제한 할 수 있습니까 자체 서명 된 인증서를 사용하여 응용 프로그램이

고객이 자체 서명 된 인증서를 사용하여 응용 프로그램이 작동합니다. 작동하려면 인증서 서명에 사용한 루트 인증서를 설치해야합니다.

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



답변

경험적으로 볼 때 :

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

최종 사용자가 특정 (하위) 도메인에 대해서만 고객이나 다른 CA 인증서를 신뢰할 수 있도록 선택할 수있는 쉬운 옵션이있는 응용 프로그램 / 라이브러리를 모르겠습니다. example.com 및 * .example.org 및 기타 정보는 없습니다.

모질라는 현재 신뢰할 수있는 정부가로 CA의 후원에 대해 비슷한 우려가 열려 관심 지점 및 예를 들어를 크롬 불량이 * .google.com에 인증서와 Diginotar CA의 타협이 공개 된 방법이었다 Google 사이트에 액세스하기위한 내장 추가 검사를 가지고 .

그러나 CA를 신뢰하지 않더라도 해당 CA가 서명 한 특정 서버 인증서를 가져 오거나 신뢰할 수 있으므로 해당 인증서의 호스트 이름에 대한 SSL 경고가 표시되지 않습니다. 따라서 오류나 불만없이 응용 프로그램이 작동해야합니다.

예외 :

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

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


답변

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

말을 바꾸려면 :

타사 CA가 발급 한 인증서를 해당 이름의 인증서로 신뢰하도록 제한 할 수 있습니다. 타사 CA에 이름 제약 조건 확장이 없더라도 상호 인증을 통해 자체 내부 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 확장을 추가 할 수 있습니다.

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

-x509-to-req인수를 사용하여 요청을 작성 해야 할 수도 있습니다. 요청을 작성하려면 위 중간과 정확히 같은 방식으로 서명하십시오.

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