Aunque esto es algo inusual, la línea de comandos de OpenSSL, que incluye muchas características destinadas principalmente a problemas de depuración, puede hacerlo. Use openssl x509
( sin -req
) con -CA certfile -CAkey keyfile
o solo -CA file
si tiene cert y privatekey en un archivo (lo que puede hacer PEM). Añade -digestname
e.g. -sha256
si no es el predeterminado (SHA1).
Puede especificar la nueva serie explícitamente con -set_serial
, o usar casi el mismo esquema de archivo serie como openssl ca
de forma predeterminada o explícitamente; vea man [1ssl?] x509
en su sistema (a menos que Windows) o en la web en el encabezado 'Opciones de firma' alrededor de 1/3 del camino hacia abajo. (La diferencia es que ca
usa el valor hexadecimal del archivo después de incrementando, pero x509 [-req] -CA*
lo usa antes . La asignación serial / cert NO se registra en un archivo 'base de datos', como lo hace ca
.) Puede especificar la duración del período de validez, pero no puede especificar tiempos de inicio y final arbitrarios como ca
can.
Esto reemplaza el nombre del emisor, el número de serie, el período de validez y la firma en el nuevo certificado (de salida), pero no cambia ninguna de las extensiones, que en su caso se ve bien. Si el certificado de entrada contiene la extensión AuthorityKeyIdentifier (AKI) para identificar su certificado padre / 'firmante', esa extensión en el certificado de salida no identificará correctamente a su padre, lo que puede causar problemas al usar el certificado. Puedes reemplazar las extensiones agregando -clrext -extfile filename -extensions section
, pero debes hacer todas de ellas, lo que puede ser inconveniente.
Si utiliza el proceso de dos pasos de x509 -x509toreq
para crear un CSR y luego x509 -req -CA*
o ca
para emitir un certificado de ese CSR, esto descarta todas las extensiones del certificado de entrada. Si desea alguna extensión, debe volver a agregarla: para x509 -req -CA*
esto debe ser explícito en la línea de comando; para ca
puede configurarse en el archivo de configuración o anularse en la línea de comandos.
ObRant: emitir un certificado a menudo se describe como 'firmar el CSR / request'. No lo es. El cuerpo del certificado, también conocido como certTBS (TBS = a-be-be-signed), normalmente se basa en parte en el CSR, pero la mayoría del cuerpo del certificado es diferente del CSR.