확장 기능이 포함된 OpenSSL 서명 요청

확장 기능이 포함된 OpenSSL 서명 요청

내 개발 환경을 위해 소규모 자체 서명 CA를 설정했습니다. 다양한 속성을 가진 다양한 서버 인증서를 만들고 싶습니다. 내 접근 방식은 각 서버에 대해 특정 확장 섹션을 만드는 것입니다. 다음과 같은 섹션을 포함하는 하나의 큰 openssl.cnf가 있습니다.

[ server0_http ]

nsCertType                      = server
nsComment                       = "HTTP server0"
basicConstraints=CA:FALSE
extendedKeyUsage=serverAuth
subjectAltName=@server0_http_altnames

[ server0_http_altnames ]
URI.1 = https://server.domain.tld
URI.2 = http://server.domain.tld
IP.1  = 1.2.3.4
DNS.1 = server.doamin.tld

그런 다음 사용하여 CSR을 만들 때 openssl매개 변수를 사용합니다 -config myCustomOpenssl.cnf -reqexts server0_http. 내 요청을 보면 openssl req -text -noout -in myrequest.csr모든 것이 완벽해 보입니다.

그러나 요청에 서명한 후 "X509v3 확장 키 사용" 및 "X509v3 주체 대체 이름" 섹션이 사라졌습니다. 이 문제 를 해결하기 위해 -extfile myCustomOpenssl.cnf -reqexts server0_http.openssl

그게 예상되는 행동인가요? 나는 항상 csr 파일만으로도 요청에 따라, 즉 모든 섹션이 포함된 인증서를 생성하기에 충분하다고 생각했습니다. 현재 내 시스템이 작동하는 방식은 누락된 섹션이 있는 인증서를 얻는 것입니다. 원하는 대로 인증서를 얻으려면 csr 파일과 요청을 생성하는 데 사용한 openssl 구성 파일의 해당 섹션을 제공해야 합니다. 소규모 설정에서는 문제가 되지 않지만 더 큰 CA가 되면 상당히 지저분해집니다. 아니면 내가 openssl을 잘못 사용하고 있습니까?

답변1

그것을 발견! 내가 설명한 것은 openssl의 정상적인 예상 동작입니다. 기본적으로 사용자 정의 확장은 인증서에 복사되지 않습니다.

openssl이 요청한 확장을 인증서에 복사하려면 copy_extensions = copy서명을 위해 지정해야 합니다. 바닐라 설치에서는 이 줄을 default_CA의 섹션에 추가해야 함을 의미합니다 openssl.cnf.

openssl.cnf(적어도) Centos와 함께 제공되는 라인 에는 이미 주석으로 포함되어 있으며 "주의해서 사용하세요"라는 경고가 표시됩니다. 주의하지 않으면 요청자가 이를 악용하여 CA 인증서를 발급하도록 할 수 있습니다.

관련 정보