Configuré una pequeña CA autofirmada para mi entorno de desarrollo. Me gustaría crear muchos certificados de servidor diferentes con diferentes propiedades. Mi enfoque es crear una sección de extensiones específicas para cada servidor. Tengo un gran openssl.cnf que contiene secciones como esta:
[ 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
Luego, cuando creo mi csr usando openssl
, uso los parámetros -config myCustomOpenssl.cnf -reqexts server0_http
. Cuando miro mi solicitud, openssl req -text -noout -in myrequest.csr
todo se ve perfecto.
Sin embargo, después de firmar la solicitud, las secciones "Uso de clave extendida X509v3" y "Nombre alternativo del sujeto X509v3" desaparecen. Para solucionar este problema también puse -extfile myCustomOpenssl.cnf -reqexts server0_http
los parámetros para la llamada de firma openssl
.
¿Es ese el comportamiento esperado? Siempre pensé que el archivo csr solo debe ser suficiente para crear un certificado según lo solicitado, es decir, con todas sus secciones. La forma en que funciona mi sistema en este momento es que obtengo un certificado con secciones faltantes. Para obtener el certificado como lo quiero, tengo que proporcionar el archivo csr y la sección correspondiente del archivo de configuración openssl que utilicé para crear la solicitud. Esto no es un problema para mi configuración pequeña, pero se vuelve bastante complicado si me convierto en una CA más grande. ¿Se supone que es así o estoy usando openssl incorrectamente?