El
Puede apoyarnos descargando este artículo en formato PDF a través del siguiente enlace.
Descarga la guía en formato PDF
apagar
El
El
El
Kit de herramientas PKI/TLS de CloudFlare
Adaptado dePágina CFSSL GitHub, CFSSL es la navaja suiza PKI/TLS de código abierto de CloudFlare. Es a la vez una herramienta de línea de comandos y un servidor API HTTP para firmar, verificar y agrupar certificados TLS. No es ético agrupar el paquete correcto. Si la operación es incorrecta, pronto se convertirá en una pesadilla para la depuración. CloudFlare escribió CFSSL para facilitar la agrupación. Al elegir la cadena de certificados correcta, CFSSL resuelve el equilibrio entre rendimiento, seguridad y compatibilidad.
CFSSLInfraestructura de Clave PúblicaNo sólo es una herramienta para agrupar certificados, sino que también puede utilizarse como CA. Esto es posible porque cubre las funciones básicas de la creación de certificados, incluida la creación de claves privadas, la creación de solicitudes de firma de certificados y la firma de certificados.
Breve descripción del certificado SSL y TLS
Como todos sabemos, Internet es un lugar muy inseguro y es posible que cada URL en la que haga clic o cada sitio que visite no garantice que sea el producto que vende. Debido a la naturaleza de los sitios web inseguros en la World Wide Web a gran escala, los certificados SSL han comenzado a funcionar para aliviar algunos de estos riesgos de seguridad. El certificado SSL vincula el nombre de dominio con el nombre del servidor y el nombre de la empresa con la ubicación, formando así el núcleo de confianza en la Web al garantizar la identidad del sitio web. En otras palabras, el certificado contiene el nombre del servidor, una autoridad certificadora (CA) confiable que demuestra la autenticidad del certificado y la clave de cifrado pública del servidor.
Si dirige una empresa y desea brindar servicios en línea, la única forma en que las personas pueden verificar la identidad de su nombre de dominio es a través de un certificado SSL, que será emitido por una autoridad certificadora confiable (como GlobalSign y DigiCert). Los certificados SSL funcionan junto con Transport Layer Security (TLS). Sin un certificado SSL, no puede utilizar TLS para cifrar el tráfico del sitio web. TLS garantiza que la conexión entre el cliente (navegador) y el servidor (como su servidor web) sea:
- Privado (o seguro) porque se utiliza cifrado simétrico para cifrar los datos transmitidos.
- Confiable, porque cada mensaje transmitido contiene una verificación de integridad del mensaje para evitar pérdidas o cambios de datos no detectados durante la transmisión.
- Como todos sabemos, porque el servidor generalmente proporciona identificación a partir de su certificado SSL (incluido el nombre del servidor, la autoridad certificadora (CA) confiable y la clave de cifrado pública del servidor).
Debe saberse que cualquiera puede crear un certificado (certificado autofirmado), pero el navegador solo confía en los certificados de organizaciones en su lista de CA confiables. Una autoridad de certificación o autoridad de certificación (CA) es una entidad que se ha sometido a rigurosas auditorías de seguridad y, por lo tanto, puede emitir certificados digitales confiables, que a su vez confirman que el propietario del sitio web es lo que dice que es su verdadera identidad. El certificado emitido por la CA para sí misma se denomina certificado raíz confiable porque tiene como objetivo establecer el punto final de confianza para la jerarquía de la CA.
En la mayoría de los casos, los certificados no se emiten directamente desde la CA raíz, sino desde las CA intermedias. El certificado de CA intermedio es un certificado subordinado emitido por una raíz confiable y se utiliza específicamente para emitir certificados de servidor de entidad final. El resultado es una cadena de confianza que comienza desde la CA raíz confiable, termina en el medio y finaliza con el certificado SSL que se le emite. Por lo tanto, el uso de certificados intermedios proporciona un mayor nivel de seguridad porque la CA no necesita emitir certificados directamente desde el certificado raíz de la CA. Recursos:Digicert KB.
Ahora que somos buenos con los certificados SSL, TLS y las autoridades certificadoras, es un buen momento para explorar la herramienta CFSSL que tenemos.
CFSSL incluye:
- Un conjunto de paquetes de software para crear herramientas TLS PKI personalizadas
- El programa cfssl, que es una utilidad canónica de línea de comandos que utiliza el paquete de software CFSSL.
- El programa multirootca, que es un servidor de autoridad de certificación que puede utilizar varias claves de firma.
- El programa mkbundle se utiliza para crear un paquete de grupo de certificados.
- El programa cfssljson, que toma la salida JSON de los programas cfssl y multirootca y escribe el certificado, la clave, la CSR y el paquete en el disco.
Instalar CFSSL en Linux
Durante esta instalación, utilicé Ubuntu 20.04. Si desea compilar cfssl y otras herramientas (mkbundle, cfssljson, multirootca) a partir del código fuente, necesita una instalación efectiva de Go 1.12+.
Instalar ir
Primero, prepare el servidor. Estoy actualizando e instalando gcc en Ubuntu 20.04 como se muestra a continuación.
sudo apt update
Instalar los paquetes necesarios
sudo apt install build-essential
El comando anterior instalará nuevos paquetes, incluidos gcc, g++ y make.
Para instalar Go en CentOS, Ubuntu y Linux Mint, haga clic en el enlace a continuación y luego continúe instalando cfssl.
Instalar Go (Golang) en Ubuntu/CentOS
Los siguientes comandos descargarán, compilarán e instalarán todas las utilidades (incluidas cfssl, cfssljson y mkbundle, etc.).
go get -u github.com/cloudflare/cfssl/cmd/...
El paquete binario estará disponible en su directorio de inicio:
$ ls ~/go/bin/
cfssl cfssl-bundle cfssl-certinfo cfssljson cfssl-newkey cfssl-scan mkbundle multirootca
Tenga en cuenta que si solo necesita instalar cfssl por separado, solo necesita ejecutar
go get -u github.com/cloudflare/cfssl/cmd/cfssl
Cómo utilizar CFSSL
Ahora que cfssl está instalado, podemos seguir usándolo en nuestro entorno.
Inicializar autoridad de certificación (CA)
Inicializaremos una CA raíz para nuestro entorno. Primero, debemos guardar las opciones cfssl predeterminadas para usarlas y reemplazarlas en el futuro.
mkdir ~/cfssl
cd ~/cfssl
cfssl print-defaults config > ca-config.json
cfssl print-defaults csr > ca-csr.json
Edite el archivo generado para adaptarlo a su entorno
$ vim ca-csr.json
{
"CN": "Computingforgeeks CA",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "KE",
"ST": "NB",
"L": "Kenya",
"O": "Computingforgeeks",
"OU": "IT"
}
]
}
Tengo la intención de crear un certificado intermedio y, por lo tanto, agregarlo al archivo de configuración en el archivo de configuración. En los siguientes pasos, utilizaremos el certificado en los siguientes pasos para crear el archivo de configuración correspondiente. Notará que el archivo de configuración middle_ca tiene funciones (uso) como firma, autenticación de cliente, autenticación de servidor, firma de certificado, cifrado de clave, etc. Esto tiene un buen efecto en nuestra CA intermedia.
$ vim ca-config.json
{
"signing": {
"default": {
"expiry": "8760h"
},
"profiles": {
"intermediate_ca": {
"usages": [
"signing",
"digital signature",
"key encipherment",
"cert sign",
"crl sign",
"server auth",
"client auth"
],
"expiry": "8760h",
"ca_constraint": {
"is_ca": true,
"max_path_len": 0,
"max_path_len_zero": true
}
},
"peer": {
"usages": [
"signing",
"digital signature",
"key encipherment",
"client auth",
"server auth"
],
"expiry": "8760h"
},
"server": {
"usages": [
"signing",
"digital signing",
"key encipherment",
"server auth"
],
"expiry": "8760h"
},
"client": {
"usages": [
"signing",
"digital signature",
"key encipherment",
"client auth"
],
"expiry": "8760h"
}
}
}
}
Generar CA con opciones específicas
$ cfssl gencert -initca ca-csr.json | cfssljson -bare ca -
[INFO] generating a new CA key and certificate from CSR
[INFO] generate received request
[INFO] received CSR
[INFO] generating key: rsa-2048
[INFO] encoded CSR
[INFO] signed certificate with serial number 575514558967771581279537545623874943296973655847
Los siguientes archivos se generarán en el directorio donde ejecuta el comando. Consta de la clave pública de la CA raíz (ca.pem), la clave privada (ca-key.pem) y la solicitud de firma del certificado (ca.csr). Debe mantener la clave privada lo más segura posible.
- ca-key.pem
- casr
- calcio
Ahora tenemos la CA raíz más importante. La CA raíz nos permitirá generar certificados intermedios. Al igual que una CA, puede utilizar certificados intermedios para generar otros certificados intermedios o firmar directamente certificados y claves.
Crearemos una CA intermedia. Primero, creemos un nuevo directorio que contenga archivos intermedios:
$ mkdir ~/cfssl/intermediate && cd ~/cfssl/intermediate
$ nano intermediate.json
{
"CN": "Computingforgeeks Servers Intermediate CA",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "KE",
"L": "Nairobi",
"O": "Geeks Servers",
"OU": "Servers Intermediate CA",
"ST": "Kileleshwa"
}
],
"ca": {
"expiry": "42720h"
}
}
Después de crear el archivo de configuración, creemos las claves pública y privada intermedias y la solicitud de firma intermedia.
$ cfssl gencert -initca intermediate.json | cfssljson -bare intermediate_ca
[INFO] generating a new CA key and certificate from CSR
[INFO] generate received request
[INFO] received CSR
[INFO] generating key: rsa-2048
[INFO] encoded CSR
[INFO] signed certificate with serial number 49317059847143524717036065772346603828701272228
$ cfssl sign -ca ~/cfssl/ca.pem
-ca-key ~/cfssl/ca-key.pem
-config ~/cfssl/ca-config.json
-profile intermediate_ca intermediate_ca.csr | cfssljson -bare intermediate_ca
[INFO] signed certificate with serial number 557857085402097518963872901169945507335721839653
Notará que estamos usando el archivo ca-config.json que creamos anteriormente, que contiene los archivos de configuración correspondientes, como middle_ca, peer, server y client. Además, tenga en cuenta que aquí estamos utilizando el archivo de configuración middle_ca. Además, también utilizamos las claves públicas y privadas raíz para firmar nuestras claves públicas y privadas intermedias. Después de eso, nuestra CA intermedia y nuestra clave estarán disponibles. En este momento, puede cifrar y ocultar la clave privada de la CA raíz en una ubicación muy segura.
Casos de uso para certificados
Supongamos que desea obtener un nombre de dominio para su servidor web, como ejemplocomputación.com. Lo primero que debes hacer es generar una solicitud de firma de certificado (CSR) para el servidor, similar a la que se muestra en el JSON a continuación.
$ nano geekscsr.json
{
"CN": "server.computingexample.com",
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "KE",
"L": "Nairobi",
"O": "IT Servers",
"OU": "Computing Webserver1",
"ST": "Kileleshwa"
}
],
"hosts": [
"server1.computingexample.com",
"localhost"
]
}
Para utilizar la configuración anterior para generar un certificado de servidor, simplemente haga lo siguiente:
$ cfssl gencert -ca intermediate_ca.pem -ca-key intermediate_ca-key.pem -config ~/cfssl/ca-config.json -profile=server geekscsr.json | cfssljson -bare web-server1
[INFO] generate received request
[INFO] received CSR
[INFO] generating key: rsa-2048
[INFO] encoded CSR
[INFO] signed certificate with serial number 548472281222429688545698573045498525083615863345
Asegúrese de que los archivos intermediario_ca.pem geekscsr.json e intermediario_ca-key.pem estén en el directorio donde se ejecuta el comando.
El comando anterior producirá el siguiente archivo de certificado:
- Servidor web 1.csr
- servidor-web1-clave.pem
- Servidor web 1.pem
Certificado incluido
mkbundle se utiliza para crear paquetes raíz y paquetes intermedios para verificar certificados. Básicamente vincula el certificado final con la clave pública de la CA intermedia y la CA raíz. Si decide no instalar todo al principio, puede instalar mkbundle utilizando el siguiente método:
go get -u github.com/cloudflare/cfssl/cmd/mkbundle
Recopila certificados, verifica la revocación de CRL (planeada para brindar soporte OCSP en la próxima versión) y los certificados vencidos, y los agrupa en un archivo. Contiene un directorio de certificados y archivos de certificados (puede contener varios certificados). Por ejemplo, si hay muchos certificados intermedios en medio del directorio, ejecute:
mkbundle -f bundle.crt intermediates
Para agrupar nuestros certificados, asegúrese de que la clave pública de la CA raíz (ca.pem) y la clave pública intermedia estén en el mismo directorio. Todo lo mío se copiará en el directorio intermedio. Sigamos la convención anterior para agrupar el certificado generado.
##Copy Root CA Public and Intermediate CA public keys into the intermediate directory
$ cp ~/cfssl/ca.pem ~/cfssl/intermediate
$ cd ~/cfssl
$ mkbundle -f web-server1.crt intermediate
[INFO] Found intermediate
[INFO] Found intermediate/ca.pem
[INFO] Loading intermediate/ca.pem
[INFO] Validating CN=Computingforgeeks CA,OU=IT,O=Computingforgeeks,L=Kenya,ST=NB,C=KE
[INFO] Found intermediate/intermediate_ca-key.pem
[INFO] Loading intermediate/intermediate.json
Loading intermediate/intermediate_ca-key.pem
Skipping non-certificate
[INFO] Found intermediate/intermediate_ca.csr
[INFO] Found intermediate/intermediate_ca.pem
[INFO] Loading intermediate/intermediate_ca.csr
[INFO] Skipping non-certificate
[INFO] Loading intermediate/intermediate_ca.pem
[INFO] Validating CN=Computingforgeeks Servers Intermediate CA,OU=Servers Intermediate CA,O=Geeks Servers,L=Nairobi,ST=Kileleshwa,C=KE
[INFO] Found intermediate/web-server1-key.pem
[INFO] Found intermediate/web-server1.csr
[INFO] Found intermediate/web-server1.pem
[INFO] Loading intermediate/web-server1-key.pem
[INFO] Skipping non-certificate
[INFO] Loading intermediate/web-server1.csr
[INFO] Skipping non-certificate
[INFO] Loading intermediate/web-server1.pem
[INFO] Validating CN=server.computingexample.com,OU=Computing Webserver1,O=IT Servers,L=Nairobi,ST=Kileleshwa,C=KE
[INFO] Wrote 3 certificates.
El comando anterior generará el archivo web-server1.crt en el directorio donde nos encontramos actualmente. Ahora podemos copiar y agrupar el certificado en el directorio de certificados conocido en el servidor.
cd ~/cfssl/
sudo cp web-server1.crt /etc/ssl/certs/
cd ~/cfssl/intermediate
sudo cp web-server1-key.pem web-server1.pem /etc/ssl/certs/
Pruebe nuestro certificado
Para probar el certificado generado, instalemos Apache y agreguemos la ruta del certificado a su archivo de configuración.
sudo apt install apache2
##Enable ssl
sudo a2enmod ssl
Configurar nuestro servidor con certificado SSL
Cree un archivo de configuración.
$ sudo vim /etc/apache2/sites-enabled/server1_computingexample_com.conf
ServerAdmin [email protected]
ServerName server1.computingexample.com
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
## HERE ARE OUR GENERATED CERTS!!
SSLCertificateFile /etc/ssl/certs/web-server1.pem
SSLCertificateKeyFile /etc/ssl/certs/web-server1-key.pem
SSLCertificateChainFile /etc/ssl/certs/web-server1.crt
SSLOptions +StdEnvVars
SSLOptions +StdEnvVars
Agregue el archivo index.html de muestra en DocumentRoot/var/www/html/
cd /var/www/html/
sudo vim index.html
Test SSL
Our Test Page has Loaded
Reinicie Apache y verifique si la página está cargada usando el protocolo https
sudo systemctl restart apache2
Visita nuestro servidor web
Si tiene DNS, puede asignar FQDN a IP y usar su nombre de dominio para cargarlo directamente desde el navegador. Para mí lo cargaré usando una IP con protocolo https
https://IP/
Como puede confirmar en la captura de pantalla anterior, el emisor del certificado es la CA intermedia que configuramos anteriormente en este tutorial, y la CA raíz es el primer certificado que creamos. Para que el certificado de CA raíz sea confiable en su entorno, puede agregarlo a la "clave confiable" en Windows o en cualquier plataforma utilizada.
El mejor curso para aprender seguridad:
Conciencia de seguridad de la información-ISO 27001: 2013-Actualización COVID19
?????
(11741)
$ 15,71
$ 84,17
En stock
Udemy.com
Curso completo de ciberseguridad: ¡hackers al descubierto!
?????
(28305)
$ 21,33
$ 134,68
En stock
Udemy.com
Aprende hacking moral desde cero
?????
(76828)
$ 19,08
$ 218,86
En stock
Udemy.com
en conclusión
Allí, nuestra PKI que utiliza CFSSL funciona bien. Puede modificarlo y usarlo para configurar una PKI completa, especialmente en un clúster de Kubernetes. De lo contrario, incluso si continúa estando a salvo, tenga cuidado.
Otras guías interesantes:
Utilice Podman para configurar el registro de contenedores Docker y cifrar SSL
Cifremos el certificado SSL, instale Mastodon en Ubuntu 20.04/18.04
Cómo instalar un certificado SSL en un servidor web IIS
Cómo utilizar OpenSSL para comprobar la caducidad del certificado SSL
El
Puede apoyarnos descargando este artículo en formato PDF a través del siguiente enlace.
Descarga la guía en formato PDF
apagar
El
El
El