Un problema común con el que podemos encontrarnos durante nuestra travesia montando nuestro Home Lab es que nuestras webs figuren como una conexión No segura
.
Esto es debido a que no contamos con un certificado SSL, por decirlo de una manera resumida el certificado SSL es un poco de código en el servidor web que asegura que la conexión sea segura. Cuando la página web contacta a tu servidor, el certificado habilita una conexión encriptada.
Los certificados autofirmados son recomendados para la red local no para servicios públicos.
Generando los Certificados Autofirmados
Generamos una Autoridad de Certificación (CA)
Utilizaremos OpenSSL para generar nuestros certificados.
Viene instalado por defecto en las distribuciones de Linux pero también puede realizarse desde Powershell en Windows.
- Generamos una clave RSA
openssl genrsa -aes256 -out ca-key.pem 4096
> ``-aes256`` es la encriptación de 256 bits
- Generamos un Certificado Público del CA
openssl req -new -x509 -sha256 -days 365 -key ca-key.pem -out ca.pem
> Como vamos a utilizar el certificado internamente podemos aumentar la validez del certificado.
Generando el Certificado
- Creamos una clave RSA
openssl genrsa -out cert-key.pem 4096
- Creamos una Solicitud de Firma de Certificado (CSR)
openssl req -new -sha256 -subj "/CN=yourcn" -key cert-key.pem -out cert.csr
> Anteriormente el sujeto era importante para la validación pero ya no, así que podemos poner lo que queramos en ``"/CN=yourcn"``.
- Creamos un archivo
extfile
con los nombres alternativos
echo "subjectAltName=DNS:your-dns.record,IP:257.10.10.1" >> extfile.cnf
# opcional
echo extendedKeyUsage = serverAuth >> extfile.cnf
> Aquí ingresamos nuestro DNS e IP a las que queremos validar.
> Podemos utilizar wildcards en el DNS tales como *.direccion.
- Creamos el Certificado
openssl x509 -req -sha256 -days 365 -in cert.csr -CA ca.pem -CAkey ca-key.pem -out cert.pem -extfile extfile.cnf -CAcreateserial
> Nuevamente podemos aumentar la validez del certificado.
```bash
cat cert.pem > fullchaim.pem
cat ca.pem >> fullchaim.pem
```
> Creamos un archivo fullchaim que contenga las dos claves que necesitamos.
<!-- Copiar cert-key.pem
Copiar fullchaim.pem -->
Formatos de Certificados
Los Certificados X.509 existen en los Formatos Base64 PEM (.pem, .crt, .ca-bundle), PKCS#7 (.p7b, p7s) y Formatos Binarios DER (.der, .cer), PKCS#12 (.pfx, p12).
Conversión de Certificados
COMANDO | CONVERSIÓN |
---|---|
openssl x509 -outform der -in cert.pem -out cert.der |
PEM a DER |
openssl x509 -inform der -in cert.der -out cert.pem |
DER a PEM |
openssl pkcs12 -in cert.pfx -out cert.pem -nodes |
PFX a PEM |
Verificar Certificados
openssl verify -CAfile ca.pem -verbose cert.pem
Instalar la Autoridad de Certificación (CA) en root CA
En Debian & Derivados
- Mover el CA (
ca.pem
) en/usr/local/share/ca-certificates/ca.crt
. - Actualizar la librería de certificados con:
sudo update-ca-certificates
Para más documentación aquí y aquí.
En Fedora
- Mover el CA (
ca.pem
) en/etc/pki/ca-trust/source/anchors/ca.pem
or/usr/share/pki/ca-trust-source/anchors/ca.pem
- Ahora ejecuta (con sudo si es necesario):
update-ca-trust
Para más documentación aquí.
En Arch
System-wide – Arch(p11-kit) (De la wiki de arch)
- Ejecuta (Como root)
trust anchor --store myCA.crt
- El certificado será escrito en /etc/ca-certificates/trust-source/myCA.p11-kit y los directorios “legacy” se actualizarán automáticamente.
- Si recibes el error “no configured writable location” o similar, importa el CA manualmente:
- Copia el certificado en el directorio /etc/ca-certificates/trust-source/anchors
- y entonces
update-ca-trust
En Windows
Asumiento que el directorio a nuestra Autoridad de Certificacion (CA) es C:\ca.pem
, ejecutamos:
Import-Certificate -FilePath "C:\ca.pem" -CertStoreLocation Cert:\LocalMachine\Root
- Cambia
-CertStoreLocation
aCert:\CurrentUser\Root
en caso de que quieras confiar en los certificados solo para el usuario logueado.
O
En la Terminal, ejecuta:
certutil.exe -addstore root C:\ca.pem
certutil.exe
es una herramienta integrada que agrega confianza en todo el sistema.
En Android
Los pasos exactos cambian entre dispositivos, aquí va una guía generalizada:
- Abrir las configuraciones
- Ubicar la sección
Encryption and Credentials
Normalmente ubicada enSettings > Security > Encryption and Credentials
- Seleccionar
Install a certificate
- Seleccionar
CA Certificate
- Ubicar el archivo
ca.pem
en la memoria utilizando el administrador de archivos. - Seleccionarlo.
- Listo!
Tengo mi teléfono en inglés así que no se como son las opciones en español.