Y bien como sabemos openssl es una herramienta opensource que nos ayuda a resolver algunas de nuestras necesidades criptográficas. De que se trata el post, pues de generar certificados x509 de CA y de una entidad que necesite un certificado, llamémoslo un usuario. Las razones por las que llegaron aquí son diversas pero esto les puede servir para su curso de criptografía, o tal vez para un servidor web seguro https, o por los puros lulz. Los algoritmos mas comunes en los certificados son rsa y dsa y dependiendo el nivel de seguridad que deseen pues varia la longitud de la llave. Según recuerdo cuando hice este manualillo que rescate de mis archivos , basta con copiar y pegar en la mayoría de las instrucciones, pero varían en algunos nombres de archivos de entrada y salida, que obviamente pueden ser diferentes. No van a encontrar este manualillo en otro lado, ni en ingles, ya que es 100% mio jeje. No hay problema si lo publican en otro lado, de preferencia ponen una referencia al blog.
***********RSA**************
crear llave privada
sudo openssl genrsa -out millaveprivada 1024
crear llave publica
sudo openssl rsa -in millaveprivada -out millavepublica -pubout
para cifrar con llave publica
sudo openssl rsautl -in prueba -out prueba.cifrado -inkey millavepublica -pubin -encrypt
para cifrar con llave privada (firmar)
sudo openssl rsautl -in prueba -out prueba.pricifrado -inkey millaveprivada -sign
para descifrar con llave publica
*****
para decifrar con llave privada
sudo openssl rsautl -in prueba.pucifrado -out prueba.descifrado -inkey millaveprivada -decrypt
*******DIGESTOS**********
para crear digesto
sudo openssl dgst -sha1 -out digestoprueba prueba
para crear digesto firmado
sudo openssl dgst -sha1 -out digestoprueba -sign millaveprivada prueba
********FIRMA DIGITAL RSA***********
1) GENERAR PRIVADA
2) GENERAL PUBLICA
3) sudo openssl dgst -sha1 -out pruebafirmado -sign millaveprivada prueba
********VERIFICAR FIRMA RSA ************
1) sudo openssl dgst -sha1 -verify millavepublica -signature pruebafirmado prueba
******CERTIFICADOS RSA************
Crear el certificado de la autoridad
sudo openssl req -out ca.cer -new -key millaveprivada -config CAconfig.conf -x509 -days 365
* Generar par de claves RSA para un usuario de 1024 bits
1)sudo openssl genrsa -out privadauser1 1024
2)sudo openssl rsa -in privadauser1 -out publicauser1 -pubout
* Generar un requerimiento del certificado para este usuario
1) sudo openssl req -out req_user1 -new -key privadauser1 -config CAconfig.conf
Nota: pide una contraseña al final como desafio
* Firmar el requerimiento y generar el certificado del usuario
1) sudo openssl x509 -inform PEM -outform PEM -keyform PEM -CAform PEM -CAkeyform PEM -in req_user1 -out certificadoUser1 -days 365 -req -CA ca.cer -CAkey millaveprivada -sha1 -CAcreateserial -text
*************Certificado DSA**************
* Generar Parametros DSA
1) sudo openssl dsaparam -out dsaparametros 1024
* Generar llave privada DSA
sudo openssl gendsa dsaparametros -out dsa_privada
* Generar llave publica DSA
sudo openssl dsa -in dsa_privada -pubout -out dsa_publica
* Crear el certificado de la autoridad
sudo openssl req -out dsa_ca.cer -new -key dsa_privada -config CAconfig.conf -x509 -days 365
* Generar par de claves DSA para un usuario de 1024 bits
1) sudo openssl dsaparam -out dsaparametros_user1 1024
2) sudo openssl gendsa dsaparametros_user1 -out dsa_privada_user1
3) sudo openssl dsa -in dsa_privada_user1 -pubout -out dsa_publica_user1
* Generar un requerimiento del certificado para este usuario
1) sudo openssl req -out dsa_req_user1 -new -key dsa_privada_user1 -config CAconfig.conf
Nota: pide una contraseña al final como desafio
* Firmar el requerimiento y generar el certificado del usuario
1) sudo openssl x509 -inform PEM -outform PEM -keyform PEM -CAform PEM -CAkeyform PEM -in dsa_req_user1 -out dsa_certificadoUser1 -days 365 -req -CA dsa_ca.cer -CAkey dsa_privada -sha1 -CAcreateserial -text