Generar certificados autofirmados con OpenSSL Crear un certificado raíz auto-firmado Para crear un certificado primero hay que generar una clave privada, luego hay que añadir los datos personales y finalmente hay que firmarlo. Utilizar los siguientes comandos para generar un certificado auto-firmado: • Genera una clave privada de longitud 2048 openssl genrsa -out clave_raiz.pem 2048 • Generar un certificado auto-firmado a partir de la clave anterior. Cuando pregunte los datos personales del certificado, especificar en el nombre que es el certificado RAIZ. openssl req -new -x509 -key clave_raiz.pem -out raiz.cer -days 730 –config openssl.cfg • Verificar el contenido del certificado. Comprobado que el subject y el issuer son iguales. openssl x509 -in raiz.cer -text Crear un certificado personal (CSR) Para crear un certificado personal, debemos crear una clave privada, luego generar un Certificate Signing Request, y finalmente debemos conseguir la firma de una CA: • Genera una clave privada de longitud 2048: openssl genrsa -out mi_clave_privada.pem 2048 • Generar un certifícate signing request, utilizando ahora el nombre personal openssl req -new -key mi_clave_privada.pem -out micert.csr –config openssl.cfg Firmar el certificado personal con el certificado raiz Para obtener un certificado "valido" lo vamos a firmar con nuestro propio certificado raíz que hemos generando antes. No es una CA de reconocido prestigio, pero es la nuestra. • Firmamos el CSR utilizando nuestra clave raíz: openssl x509 -req -in micert.csr -CA raiz.cer -CAkey clave_raiz.pem -set_serial 12345 -days 365 -out micert.pem • Verificamos el contenido del certificado. En este caso comprobad que el subject y el issuer son iguales: openssl x509 -in micert.pem -text Guardar el certificado personal en formato PKCS#12 Para guardar nuestro certificado personal de forma segura, debemos juntar la parte pública del certificado (micert.pem) con la clave privada (mi_clave_privada.pem) en un archivo seguro .p12 protegido por contraseña. openssl pkcs12 -export -in micert.pem -inkey mi_clave_privada.pem -out micert.p12