고객이 자체 서명 된 인증서를 사용하여 응용 프로그램이 작동합니다. 작동하려면 인증서 서명에 사용한 루트 인증서를 설치해야합니다.
하나의 도메인에 대해서만 유효성을 검사하도록 루트 인증서를 구성 할 수 있습니까?
고객이 자체 서명 된 인증서를 사용하여 응용 프로그램이 작동합니다. 작동하려면 인증서 서명에 사용한 루트 인증서를 설치해야합니다.
하나의 도메인에 대해서만 유효성을 검사하도록 루트 인증서를 구성 할 수 있습니까?
답변:
아니요 , 고객의 CA 인증서를 신뢰한다는 것은 해당 CA가 서명 한 모든 인증서의 신뢰입니다.
최종 사용자가 특정 (하위) 도메인에 대해서만 고객이나 다른 CA 인증서를 신뢰할 수 있도록 선택할 수있는 쉬운 옵션이있는 응용 프로그램 / 라이브러리를 모르겠습니다. example.com 및 * .example.org 및 기타 정보는 없습니다.
모질라는 현재 신뢰할 수있는 정부가로 CA의 후원에 대해 비슷한 우려가 열려 관심 지점 및 예를 들어를 크롬 불량이 * .google.com에 인증서와 Diginotar CA의 타협이 공개 된 방법이었다 Google 사이트에 액세스하기위한 내장 추가 검사를 가지고 .
그러나 CA를 신뢰하지 않더라도 해당 CA가 서명 한 특정 서버 인증서를 가져 오거나 신뢰할 수 있으므로 해당 인증서의 호스트 이름에 대한 SSL 경고가 표시되지 않습니다. 따라서 오류나 불만없이 응용 프로그램이 작동해야합니다.
X.509v3 PKI 표준의 매우 사용되지 않는 옵션은 이름 제약 조건 확장으로, CA 인증서에 인증서를 발급 할 권한이있는 도메인 이름 패턴의 화이트리스트 및 블랙리스트를 포함 할 수 있습니다.
운이 좋을 수도 있고 고객이 PKI 인프라를 설정하고 해당 CA 인증서에 해당 이름 제약 조건을 포함 시켰을 때 스스로를 제한했습니다. 그런 다음 CA 인증서를 직접 가져 와서 제한된 범위의 도메인 이름 만 유효성 검증 할 수 있음을 알 수 있습니다.
example.com
또는 *.ad.example.com
유효합니다. 내부 CA는 *.example.bank
중간자 (man-in-the-middle) 공격 을 허용하고 온라인 뱅킹 자격 증명을 스누핑하기 위한 인증서를 발급 할 수도 있습니다 .
@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를 브라우저의 트러스트 데이터베이스에 추가하십시오.
basicConstraints
구성 파일 의 행으로 인해 제약 조건 확장이 인증서에 두 번 포함되어 Firefox에서 암호 오류 메시지와 함께 인증서를 거부하게됩니다. 안전하게 제거 할 수 있다고 생각합니다.
error with certificate to be certified - should be self signed
. 그것은 무엇을 의미하고 어떻게 해결합니까? pastebin.ubuntu.com/p/QHhpQh2N6J