확장 기능을 사용한 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

openssl그런 다음 매개 변수를 사용하여 CSR을 만들 때 -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 인증서를 발급하도록 유도할 수 있습니다.

관련 정보