Como Crear Certificados Digitales Con OpenSSL

12
Manual creado por: Fabio H. Cerón, Alberto Balcázar R. pág. 1 Como crear certificados digitales con OpenSSL 1 Por medio de este tutorial se pretende configurar un servidor web localmente para que tenga conexiones seguras mediante OpenSSL, se requiere para este ejemplo que el servidor local haga las funciones de entidad certificadora o CA, probar que localmente se puede ser entidad CA y servidor web con datos diferentes entre CA y servidor web y probar el canal en claro con un sniffer para demostrar que los datos viajan cifrados. Este manual se realizó con Ubuntu PASO 1: Verificación de Apache y OpenSSL. Se verifica que OpenSSL esté instalado correctamente y que el servicio de apache este corriendo. $ openssl version $ /etc/init.d/apache2 status PASO 2: Generar llave en SSL Con la siguiente instrucción se genra la clave con encripcion des3 y con una longitud de 1024, se digita el passwrd que se utilizara y se verifica en la carpeta que se generó efectivamente la clave. $ sudo openssl genrsa -des3 -out server.key 1024 1 Copiado de http://www.binaryti.com/2011/09/certificados-digitales-con-openssl.html

Transcript of Como Crear Certificados Digitales Con OpenSSL

Page 1: Como Crear Certificados Digitales Con OpenSSL

Manual creado por: Fabio H. Cerón, Alberto Balcázar R.

pág. 1

Como crear certificados digitales con OpenSSL1

Por medio de este tutorial se pretende configurar un servidor web localmente para que tenga conexiones seguras mediante OpenSSL, se requiere para este ejemplo que el servidor local haga las funciones de entidad certificadora o CA, probar que localmente se puede ser entidad CA y servidor web con datos diferentes entre CA y servidor web y probar el canal en claro con un sniffer para demostrar que los datos viajan cifrados. Este manual se realizó con Ubuntu

PASO 1: Verificación de Apache y OpenSSL.

Se verifica que OpenSSL esté instalado correctamente y que el servicio de apache este corriendo. $ openssl version $ /etc/init.d/apache2 status

PASO 2: Generar llave en SSL

Con la siguiente instrucción se genra la clave con encripcion des3 y con una longitud de

1024, se digita el passwrd que se utilizara y se verifica en la carpeta que se generó

efectivamente la clave.

$ sudo openssl genrsa -des3 -out server.key 1024

1 Copiado de http://www.binaryti.com/2011/09/certificados-digitales-con-openssl.html

Page 2: Como Crear Certificados Digitales Con OpenSSL

Manual creado por: Fabio H. Cerón, Alberto Balcázar R.

pág. 2

PASO 3: Crear petición de firma del certificado CSR

Se crea una nueva petición de firma del certificado creado a través de la siguiente

instrucción.

$ sudo openssl req -new -key server.key -out server.csr

reg: Request para el certificado

new: nueva petición

key: Archivo del que se leerá la llave

uot: Archivo de petición generado

Acá se evidencia los parámetros establecidos como ciudad, nombre del certificado,

entidad certificadora, etc.

Page 3: Como Crear Certificados Digitales Con OpenSSL

Manual creado por: Fabio H. Cerón, Alberto Balcázar R.

pág. 3

PASO 4: Firmar la petición elaborado

Se deben firmar las peticiones creadas y verificar que esta OK, como lo muestra la figura.

$ sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

x509: Aplicar formato estándar de llave pública

req: Request para el certificado

days: Validez del certificado (1 año)

in: Input de la petición de firma elaborada previamente

signkey: La llave que firmara el certificado

out: Certificado resultante

Se pueden ver los parámetros de configuración anteriormente realizados.

PASO 5: Crear una versión de llave que no requiera password

Se realiza la siguiente instrucción para que el servicio apache no pida password cuando

inicia.

$ sudo openssl rsa -in server.key -out server.key.insecure

PASO 6: Renombrar archivos

Se renombran los archivos con el nuevo archivo generado anteriormente, con eso

evitaremos la autenticación al inicio del servicio apache.

$ sudo mv server.key.insecure server.key

Page 4: Como Crear Certificados Digitales Con OpenSSL

Manual creado por: Fabio H. Cerón, Alberto Balcázar R.

pág. 4

PASO 7: verificación y aseguramiento

Se pueden asegurar los archivos creados.

server.crt: Certificado autofirmado

server.csr: Certificado signing request

server.key: Llave del servidor

Para que solo root los pueda modificar.

$ sudo chmod 000 server.csr

$ sudo chmod 000 server.crt

$ sudo chmod 000 server.key

$ sudo chmod 000 server.key.secure

PASO 8: Carpeta SSL en apache2

Se debe crear un directorio en llamado ssl en /etc/apache2 y copiar todas las claves

creadas

$ sudo mkdir /etc/apacge2/ssl

$ sudo ls /etc/apache2/

$ sudo cp server.crt /etc/apache2/ssl/

$ sudo cp server.key /etc/apache2/ssl/

Page 5: Como Crear Certificados Digitales Con OpenSSL

Manual creado por: Fabio H. Cerón, Alberto Balcázar R.

pág. 5

PASO 9: activar modulos SSL

Activar SSL y reiniciar el servicio Apache.

$ sudo a2enmod ssl

$ sudo /etc/init.d/apache2 restart

$ sudo a2enmod ssl

Después de ejecutada esta acción de debe realizar esto mismo con:

$ sudo a2ensite default-ssl

Page 6: Como Crear Certificados Digitales Con OpenSSL

Manual creado por: Fabio H. Cerón, Alberto Balcázar R.

pág. 6

PASO 10: Carpeta de sitio seguro

En la ruta:

$ sudo mkdir /etc/apache2/sites-available/ se debe crear la carpeta /ssl

Luego verificamos

$ ls /etc/apache2/sites-available/

PASO 11: Copiar archivo default

A la carpeta creada anteriormente se le copia el archivo default.

$ sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl/

Page 7: Como Crear Certificados Digitales Con OpenSSL

Manual creado por: Fabio H. Cerón, Alberto Balcázar R.

pág. 7

PASO 12: Directorios http y https

Se debe crear en /var/www/ una carpeta con el nombre /html. Posterior a ello en /var se

debe crear una carpeta llamada /www-ssl y dentro de ese directorio crear un directorio

llamado /html.

$ sudo ls /var/www/

$ sudo mkdir /var/html

$ sudo ls /var/www/

$ sudo ls /var/

$ sudo mkdir/var/www-ssl

$ sudo ls /var/

$ sudo mkdir /var/www-ssl/html

$ sudo ls /var/www-ssl

PASO 13: Editar /default

Se debe editar el archivo default ubicado en la carpeta /ssl recientemente creada donde

se encuentran los archivos de apache /etc/apache2 de manera que se escuche el puerto

443 para conexiones seguras. Se debe agregar las siguientes líneas para poder leer los

certificados.

Modificar

<Virtualhost *:80> a <Virtualhost *:443>

Agregar la instrucción después de ServerAdmin

ServerName localhost

Modificar la ruta de DocumentRoot a

/var/www-ssl/html

Page 8: Como Crear Certificados Digitales Con OpenSSL

Manual creado por: Fabio H. Cerón, Alberto Balcázar R.

pág. 8

Agregar al final del código

SSLEngine On

SSLCertificateFile /etc/apache2/ssl/server.crt

SSLCertificateKeyFile /etc/apache2/ssl/server.key

Se debe también modificar el archivo /default de /etc/apache2/sites-available/ en la

parte de DocumentRoot a

/var/www/html

Y por último se agrega la instrucción después de ServerAdmin

ServerName localhost

Page 9: Como Crear Certificados Digitales Con OpenSSL

Manual creado por: Fabio H. Cerón, Alberto Balcázar R.

pág. 9

Reiniciar apache2 y se debe evidenciar que sube el servicio

$ sudo /etc/init.d/apache2 restar

Page 10: Como Crear Certificados Digitales Con OpenSSL

Manual creado por: Fabio H. Cerón, Alberto Balcázar R.

pág. 10

PASO 14: Modificacion ruta de SSL

Se debe modificar la ruta para que no tenga problema de direccionamiento de los

certificados digitales.

NMAP localhost

Se corre NMAP para verificar que está corriendo el puerto 443 en el localhost.

Page 11: Como Crear Certificados Digitales Con OpenSSL

Manual creado por: Fabio H. Cerón, Alberto Balcázar R.

pág. 11

PASO 15: Verificar resultado

Se accede a http://localhost como se muestra en la imagen para verificar que el servicio

apache está arriba.

Posterior a ello se accede a https://localhost y se muestra la imagen siguiente, que

indica que es una conexión insegura pero por ser una entidad certificadora no reconocida.

Page 12: Como Crear Certificados Digitales Con OpenSSL

Manual creado por: Fabio H. Cerón, Alberto Balcázar R.

pág. 12

Parámetros de configuración del certificado anteriormente generado

Se acepta el nuevo certificado digital creado.

Por último se puede verificar el servicio corriendo de forma segura.