¿Es posible proporcionar un subjectAltName-Extension al módulo req
de OpenSSL directamente en la línea de comandos?
Sé que es posible a través de un archivo openssl.cnf, pero eso no es muy elegante para la creación de CSRs por lotes.
Mi solución fue pasar subjectAltName
a través de una variable de entorno.
Primero hay que añadirla a openssl.conf
:
[ san_env ]
subjectAltName=${ENV::SAN}
Luego, establezca la variable de entorno antes de invocar openssl:
export SAN=DNS:value1,DNS:value2
openssl req -extensions san_env -subj '/CN=value1' ...
Nota: el parámetro -extensions san_env
debe estar presente tanto al firmar el CSR como al generarlo. Por lo tanto, para los CSR firmados por CA, añada también -extensions san_env
al comando openssl ca
.
El 2º post de este enlace dice que no es posible hacerlo sólo desde la línea de comandos, pero el 4º post del mismo enlace proporciona una solución usando la capacidad de bash'de referenciar datos como si estuvieran en un archivo.
Echando un vistazo más a fondo, alguien mencionó el parámetro reqexts utilizado para hacer adiciones a la solicitud de certificado. Este blog utiliza env de bash's como una aproximación a esto.
Pero yo'sólo estoy tratando de ayudar. No he probado nada de esto yo mismo.