example crear certificado openssl x509

crear - OpenSSL como CA sin tocar el entorno certs/crl/index/etc



openssl linux (4)

Basado en la respuesta de snow6oy , esto es lo que hice:

openssl x509 -req -CA CACert.pem -CAkey CAKey.pem -CAcreateserial -in YourCSR.csr -out YourCert.pem

Un par de banderas opcionales que pueden ser útiles:

  • -days 1095
    (El valor predeterminado es 30 días)

  • -sha256
    (RHEL 7 por defecto es SHA-1)

Creo que tengo el comando OpenSSL correcto para firmar un certificado, pero me he quedado atascado y los tutoriales que he encontrado usan un formato de argumento diferente (estoy usando OpenSSL 0.9.8o 01 Jun 2010).

openssl ca -cert cert.pem -keyfile key.pem

(La clave privada no está encriptada y la CSR está en estándar).

Da este error

Using configuration from /usr/lib/ssl/openssl.cnf ./demoCA/index.txt: No such file or directory unable to open ''./demoCA/index.txt''

Mirando ese archivo de configuración:

[ ca ] default_ca = CA_default # The default ca section [ CA_default ] dir = ./demoCA # Where everything is kept certs = $dir/certs # Where the issued certs are kepp crl_dir = $dir/crl # Where the issued crl are kept database = $dir/index.txt # database index file.

No tengo nada de esto configurado. No quiero configurar nada de esto.

¿Es estrictamente necesario o hay una opción de "no molestar"?

Intenté crear directorios y archivos vacíos pero estoy enredado. Lo que realmente quiero es que funcione un comando como el anterior, con salida en la salida estándar, sin tocar nada en el sistema de archivos.


En lugar de usar la opción ca, pruebe la opción x509 con -req. Usted agregaría -CAfile para señalar su autoridad. Esto firmará su certificado sin agregar entradas al índice. Hay más información sobre el uso de x509 como "mini CA" aquí.

http://www.openssl.org/docs/apps/x509.html#SIGNING_OPTIONS


No conozco ninguna opción de "no molestar", pero aquí es cómo puede configurar una demostración rápida CA:

#!/bin/bash CAROOT=/path/to/ca mkdir -p ${CAROOT}/ca.db.certs # Signed certificates storage touch ${CAROOT}/ca.db.index # Index of signed certificates echo 01 > ${CAROOT}/ca.db.serial # Next (sequential) serial number # Configuration cat>${CAROOT}/ca.conf<<''EOF'' [ ca ] default_ca = ca_default [ ca_default ] dir = REPLACE_LATER certs = $dir new_certs_dir = $dir/ca.db.certs database = $dir/ca.db.index serial = $dir/ca.db.serial RANDFILE = $dir/ca.db.rand certificate = $dir/ca.crt private_key = $dir/ca.key default_days = 365 default_crl_days = 30 default_md = md5 preserve = no policy = generic_policy [ generic_policy ] countryName = optional stateOrProvinceName = optional localityName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional EOF sed -i "s|REPLACE_LATER|${CAROOT}|" ${CAROOT}/ca.conf cd ${CAROOT} # Generate CA private key openssl genrsa -out ca.key 1024 # Create Certificate Signing Request openssl req -new -key ca.key / -out ca.csr # Create self-signed certificate openssl x509 -req -days 10000 / -in ca.csr / -out ca.crt / -signkey ca.key

Ahora puedes generar y firmar claves:

# Create private/public key pair openssl genrsa -out server.key 1024 # Create Certificate Signing Request openssl req -new -key server.key / -out server.csr # Sign key openssl ca -config ${CAROOT}/ca.conf / -in server.csr / -cert ${CAROOT}/ca.crt / -keyfile ${CAROOT}/ca.key / -out server.crt


Y las opciones como -sha256 -days 1095 no son necesarias.

openssl x509 -req -in YOUR_CSR.csr -CA YOUR_CA.pem -CAkey YOUR_CA_KEY.pem -CAcreateserial -out YOUR_WANTED.crt