Me gustaría configurar mi propio respondedor OCSP (solo con fines de prueba). Esto requiere que tenga un certificado raíz y algunos certificados generados a partir de él.
He logrado crear un certificado autofirmado con openssl. Quiero usarlo como certificado raíz. El siguiente paso sería crear los certificados derivados. Sin embargo, parece que no puedo encontrar la documentación sobre cómo hacer esto. ¿Alguien sabe dónde puedo encontrar esta información?
Editar
En retrospectiva, mi pregunta aún no está completamente respondida. Para aclarar el problema, representaré mi cadena de certificados de esta manera:
RAÍZ -> A -> B -> C -> ...
Actualmente puedo crear los certificados ROOT y A, pero no he descubierto cómo hacer una cadena más larga.
Mi comando para crear el certificado raíz es:
openssl req -new -newkey rsa:1024 -nodes -out ca.csr -keyout ca.key
openssl x509 -trustout -signkey ca.key -days 365 -req -in ca.csr -out ca.pem
El certificado A se crea así:
openssl genrsa -out client.key 1024
openssl req -new -key client.key -out client.csr
openssl ca -in client.csr -out client.cer
Este comando depende implícitamente del certificado raíz, para el cual encuentra la información requerida en el archivo de configuración openssl.
Sin embargo, el Certificado B solo debe confiar en A, que no está registrado en el archivo de configuración, por lo que el comando anterior no funcionará aquí.
¿Qué línea de comando debo usar para crear certificados B y más allá?
Editar
Encontré la respuesta en este artículo . El certificado B (cadena A -> B) se puede crear con estos dos comandos:
# Create a certificate request
openssl req -new -keyout B.key -out B.request -days 365
# Create and sign the certificate
openssl ca -policy policy_anything -keyfile A.key -cert A.pem -out B.pem -infiles B.request
También cambié el archivo openssl.cnf:
[ usr_cert ]
basicConstraints=CA:TRUE # prev value was FALSE
Este enfoque parece estar funcionando bien.
fuente
Respuestas:
Puede usar OpenSSL directamente.
Cree una clave privada de la Autoridad de certificación (esta es su clave más importante):
Cree su certificado autofirmado de CA:
Emita un certificado de cliente generando primero la clave, luego solicite (o use uno proporcionado por un sistema externo) y luego firme el certificado utilizando la clave privada de su CA:
(Es posible que deba agregar algunas opciones ya que estoy usando estos comandos junto con mi archivo openssl.conf. Es posible que primero necesite configurar su propio archivo .conf).
fuente
openssl ca -in client.csr -out client.cer -cern ca.pem -keyfile ca.key
, pero necesita undemoCA
directorio y varios accesorios.Una vez que haya creado su CA, puede usarla para firmar así:
Crea una clave:
Crea una csr:
Firmarlo :
y así sucesivamente reemplazando * _A con * _B y
CA_certificate_you_created.crt
concrt_A.crt
yCA_key_you_created.key
conkey_A.key
Tu cambio:
significa que los certificados que emite se pueden usar para firmar otros certificados.
fuente
OpenSSL viene con un script de Perl "CA.pl" para ayudarlo a crear un certificado de CA raíz autofirmado, junto con la clave privada correspondiente, además de algunos archivos y directorios simples para ayudar a realizar un seguimiento de cualquier certificado futuro que firme (también conocido como problema ) con esa raíz CA. También le ayuda a generar otros pares de claves y solicitudes de firma de certificados (CSR) y le ayuda a procesar esos CSR (es decir, emitir certificados para ellos) y más.
Tenga en cuenta que muchos productos requieren que los certificados de CA contengan un determinado atributo que los marque como certificados de CA, o no serán aceptados como firmantes / emisores válidos de otros certificados. Si el certificado autofirmado que creó no contiene ese atributo, es posible que tenga problemas para que otro software lo trate como un certificado de CA raíz válido.
Si recuerdo correctamente, la sintaxis es algo así:
fuente
/usr/lib/ssl/misc/CA.pl
Encontré esta publicación: https://stackoverflow.com/questions/19665863/how-do-i-use-a-self-signed-certificate-for-a-https-node-js-server
Es para Node.JS, pero el script en este repositorio de GitHub usa comandos openSLL para crear un certificado raíz de CA y un certificado de dominio.
Ejecutar usando:
bash make-root-ca-and-certificates.sh 'example.com'
O para localhost usando:
bash make-root-ca-and-certificates.sh 'localhost'
make-root-ca-and-certificates.sh
fuente