Creación de una autoridad certificadora con openssl en Debian 12
¿Que es openssl?
OpenSSL es una herramienta que nos permite crear y administrar certificados digitales, de esta manera podemos crear nuestra propia autoridad certificadora (CA) y generar certificados para nuestros servicios.
Requisitos
- Sistema Debian 12 actualizado.
- Privilegios de root o sudo.
- Acceso a internet.
- Conocimientos básicos de criptografía.
Instalacion
Para instalar openssl, solo tenemos que ejecutar el siguiente comando:
root@openssl:~# apt install openssl -y
Creación de la CA
Para crear nuestra propia CA, primero tenemos que crear una carpeta donde vamos a guardar los certificados:
root@openssl:~# mkdir ca
Nos movemos a la carpeta que acabamos de crear:
root@openssl:~# cd ca
Y creamos las subcarpetas y ficheros necesarios:
root@openssl:~/ca# mkdir certs crl newcerts private
root@openssl:~/ca# touch index.txt
root@openssl:~/ca# echo 1000 > serial
root@openssl:~/ca# cp /etc/ssl/openssl.cnf .
Modificamos el archivo openssl.cnf:
root@openssl:~/ca# nano openssl.cnf
Buscamos la sección [ CA_default ] y la modificamos según nuestras necesidades.
Creamos la clave privada de la CA:
root@openssl:~/ca# openssl genpkey -algorithm RSA -out private/ca.key -aes256
Ahora tenemos que crear la solicitud de certificado para la CA:
root@openssl:~/ca# openssl req -new -key private/ca.key -out ca-csr.pem -config openssl.cnf
Y por último tenemos que firmar la solicitud de certificado con la clave privada de la CA:
root@openssl:~/ca# openssl x509 -req -in ca-csr.pem -signkey private/ca.key -out ca-cert.pem
Creación de un certificado
Ahora vamos a crear un certificado ssl para una maquina llamada “webserver”:
Creamos una clave privada para la maquina webserver:
root@webserver:~# openssl genpkey -algorithm RSA -out webserver.key -aes256
Creamos un fichero de configuración para la solicitud de certificado:
root@webserver:~# nano openssl.cnf
Y lo configuramos con nuestros datos:
[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
[dn]
C = ES
ST = YourState
L = YourCity
O = YourOrganization
OU = YourOrganizationalUnit
CN = webserver.local.net
Creamos una solicitud de certificado para la maquina webserver:
root@webserver:~# openssl req -new -key webserver.key -out webserver.csr -config openssl.cnf
Ahora tenemos que firmar la solicitud de certificado con la CA:
root@openssl:~# openssl x509 -req -in webserver.csr -signkey private/ca.key -out webserver.crt
Ya tendriamos el certificado firmado por la CA.
Con esto ya tendríamos nuestra propia CA con openssl en debian 12 y un certificado firmado por la CA.