#4sysadmins

Inicio » GNU/Linux » PKI: certificados autofirmados, self-signed certificates

PKI: certificados autofirmados, self-signed certificates

Follow #4sysadmins on WordPress.com

Crear Autoridad Certificadora (Public Key Infrastructure)

Nota: en mi caso mi PKI se encuentra en un servidor local sin acceso a Internet. Una vez generados los certificados, los muevo donde sean necesarios.

$ ssh user@ubuntu-server
$ sudo su -

# cd ~; mkdir pki; cd pki
# openssl genrsa -out CA.key 4096
# chmod 400 CA.key
# openssl req -x509 -new -nodes -key CA.key -sha256 -days 7300 -out CA.crt
	ES
	Seville
	Seville
	Nebul4ck Org.
	Nebul4ck Security Dept
	Nebul4ck CA
	nebul4ck@no-existe.org

# chmod 444 CA.crt
# openssl x509 -noout -text -in CA.crt

Recordar que este certificado «CA.crt» es el que deberéis de importar en vuestro navegador Web para que autorice de forma correcta las conexiones con los servidores a los que vayáis a añadir un certificado firmado por esta CA.

Certificados de Servidor

Editar y añadir al siguiente archivo aquello que sea necesario para que las secciones/argumentos queden como veremos a continuación. Además vamos a suponer que accederemos a nuestro servidor apache con alguno de los siguientes fqdn:

# cd /etc/ssl/
# cp openssl.cnf openssl-ok.cnf
# vi openssl-ok.cnf
...
[req]
req_extensions = v3_req

[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = vpn-00a1cc34.nebul4ck.org
DNS.2 = vpn-00b1cc35.nebul4ck.org
DNS.3 = vpn-gwtransit-1110aa.backup
DNS.4 = vpnClient

[ CA_default ]
copy_extensions = copy

Los alt_names (por si no os habéis dado cuenta) son los FQDN o nombres completo los cuales nuestro certificado reconocerá cuando accedamos al servidor por www (en Apache2 = ServerName).

# openssl genrsa -out vpn.key 2048
# openssl req -new -key vpn.key -out vpn.csr
	ES
	Seville
	Seville
	Nebul4ck Org.
	Nebul4ck Security Dept
	vpn-00a1cc34.nebul4ck.org
	nebul4ck@no-existe.org
	[]
	[]

El CNAME debe de coincidir con el nombre del servidor (con el que accedemos vía web)

# openssl x509 -req -in vpn.csr -CA CA.crt -CAkey CA.key \
-CAcreateserial -out vpn.crt -days 7300 -sha256 -extensions \
v3_req -extfile /etc/ssl/openssl-ok.cnf

Certificado de usuario para autenticación Web

# openssl req -newkey rsa:2048 -keyout vpnClient.key -out vpnClient.csr -nodes -days 7300 -subj "/CN=vpnClient"
# openssl x509 -req -in vpnClient.csr -CA CA.crt -CAkey CA.key \
-out vpnClient.crt -set_serial 01 -days 7300 -extensions \
v3_req -extfile /etc/ssl/openssl-ok.cnf

# openssl pkcs12 -export -clcerts -in vpnClient.crt -inkey vpnClient.key -out vpnClient.p12
Enter Export Password: ************
Verifying - Enter Export Password: ************

Ahora ya puedes importar este p12 en tu navegador y autenticarte contra tu servidor web de forma segura.


Deja un comentario, Gracias!