Certificados SSL con OpenSSL

OpenSSL es una aplicación y una API GNU relacionada con temas de cifrado. La web oficial es www.openssl.org.

Los certificados son unos ficheros que sirven para "certificar" la identidad de un ordenador, empresa o persona y para realizar cifrado de datos.

Los certificados contienen una clave pública y otra privada. La clave pública puede ser conocida por todo el mundo pero la privada debe mantenerse en secreto.

Con la clave pública se cifran los datos y con la privada se descifran, de esta manera cualquiera puede cifrar datos, pero sólo el propietario del certificado puede descifrarlos.

Creación de la Clave Privada

openssl genrsa -des3 -out ca.key 1024

Esto crea una clave privada de longitud 1024 bits con el algoritmo triple DES y la guarda en el fichero ca.key.

Creación de la Clave Pública

openssl req -new -key ca.key -out www.midominio.com.csr
Country Name (2 letter code) [AU]:ES
State or Province Name (full name) [Some-State]:BARCELONA
Locality Name (eg, city) []:BARCELONA
Organization Name (eg, company) [Internet Widgits Pty Ltd]:NOMBRE DE MI EMPRESA
Organizational Unit Name (eg, section) []:SISTEMAS
Common Name (eg, YOUR name) []: www.midominio.com
Email Address []:sistemas@midominio.com

Esto crea una clave pública a través de la clave privada y la guarda en el fichero www.midominio.com.csr.

Visualizar una Clave Pública

openssl req -noout -text -in www.midominio.com.csr
Certificate Request:
Data:
Version: 0 (0x0)
Subject: C=ES, ST=BARCELONA, L=BARCELONA, O=NOMBRE DE MI EMPRESA, OU=SISTEMAS, CN=www.midominio.com/emailAddress=sistemas@midominio.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
00:c5:2e:32:e7:56:8a:72:62:c3:3a:d2:58:b7:73:
98:e9:8a:c6:b6:85:ef:ce:10:20:d5:cc:78:7a:d6:
b8:20:09:81:49:18:7c:92:eb:3f:7f:b9:fc:82:ac:
38:92:b3:6a:63:ff:b0:3a:d3:63:44:ba:c1:b1:5b:
48:98:24:0d:6a:80:85:4a:3c:48:ac:a9:03:63:99:
f5:49:09:04:d8:75:7a:c6:ab:00:f6:03:f2:64:b6:
7c:87:cd:b4:b6:7f:b4:2e:48:35:b8:0b:a4:ad:74:
97:10:db:34:6a:a9:08:43:4a:bc:44:3c:86:7b:ec:
b4:5f:a3:17:63:23:78:d5:b1
Exponent: 65537 (0x10001)
Attributes:
a0:00
Signature Algorithm: sha1WithRSAEncryption
1a:f4:9b:21:10:cf:a4:f1:30:d9:0b:30:6b:21:db:01:c0:86:
c4:d5:93:15:7a:54:fb:bb:da:ac:14:d5:3a:47:c8:eb:cf:af:
db:c5:5f:d0:e4:d0:b4:73:f3:bf:4b:1e:c9:69:02:c6:79:e9:
3b:5b:7d:e5:a7:00:f0:d1:82:b7:e5:31:c2:b0:65:1d:e1:e8:
f0:37:84:94:22:8e:72:cb:f7:2a:2e:b4:a5:d4:34:a9:57:6a:
e4:f3:f6:89:b0:1a:ee:16:96:9c:48:88:1f:5b:76:89:00:da:
69:f0:1c:4d:67:dd:c2:5b:8b:01:0c:ce:b3:9e:95:03:1c:8b:
2c:ee

 

Firmado del CSR

Para que el fichero CSR sea un certificado válido debemos enviarlo a una entidad para que lo firme (CA).