# Validación de los certificados

## ¿Que es SSL?

Un certificado SSL es un certificado digital que autentica la identidad de un sitio web y permite una conexión cifrada. SSL procede de Secure sockets Layer, un protocolo de seguridad que crea un enlace cifrado entre un servidor web y un navegador web. Básicamente, la capa SSL permite que dos partes tengan una “conversación” privada. Para establecer esta conexión segura, se instala en un servidor web un certificado SSL (también llamado “certificado digital”) que cumple dos funciones: Autenticar la identidad del sitio web.

[https://latam.kaspersky.com/resource-center/definitions/what-is-a-ssl-certificate](https://latam.kaspersky.com/resource-center/definitions/what-is-a-ssl-certificate)

Los certificados SSL se pueden obtener directamente de una autoridad de certificación (Certificate Authority, CA). Las autoridades de certificados emiten millones de certificados SSL cada año1 Para solicitar cualquier certificado es necesario además de autentificarnos, enviar el contenido de un archivo CSR (Solicitud de Firma de Certificado), que se obtiene mediante OpenSSL en nuestro propio servidor. También existen autoridades de certificación gratuitas como <mark style="color:green;">**Let’s Encrypt**</mark> que ofrecen certificados SSL/TLS gratuitos

Para generar un certificado SSL con Let’s Encrypt se puede utilizar la herramienta Certbot. (Nota: Trabaja con python3 y puede romper algunas dependencias al instalar).

{% code overflow="wrap" %}
```bash
$ sudo certbot certonly --manual --preferred-challenges=dns -d example.com -d www.example.com

# Generar Certificados para cifrar
$ sudo openssl req -new -x509 -noenc -subj "/CN=exploitpack.com/C=US/L=San Fransisco" -keyout key.pem -out cet.pem -days 365 -verbose

```
{% endcode %}

## Herramientas

Las herramientas principales que se pueden ocupar para el análisis de certificados son:

### testssl.sh

<figure><img src="https://3716593425-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FghTUs02Gr2jdaFqpzAHM%2Fuploads%2Fgit-blob-f1207f2dedcca3fc61ce2554cfa464add3a47d15%2Fimage%20(2)%20(1).png?alt=media" alt=""><figcaption></figcaption></figure>

{% embed url="https://github.com/drwetter/testssl.sh" %}
testssl.sh
{% endembed %}

{% code overflow="wrap" %}
```bash
./testssl.sh --html --quiet <URI>
```
{% endcode %}

### sslscan

<figure><img src="https://3716593425-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FghTUs02Gr2jdaFqpzAHM%2Fuploads%2Fgit-blob-1159892223018fae451926dacde15103fe23d807%2Fimage%20(10).png?alt=media" alt=""><figcaption></figcaption></figure>

{% embed url="https://github.com/rbsec/sslscan" %}
sslscan
{% endembed %}

{% code overflow="wrap" %}
```bash
sslscan --show-certificate <Target>
```
{% endcode %}

## Laboratorios

{% embed url="https://github.com/vulhub/vulhub/tree/master/openssl/CVE-2014-0160" %}
