paint-brush
Instale certificados en Alpine Image para establecer una comunicación segura (SSL/TLS)por@karthiknagesh
112,396 lecturas
112,396 lecturas

Instale certificados en Alpine Image para establecer una comunicación segura (SSL/TLS)

por Karthik Nagesh2017/09/12
Read on Terminal Reader
Read this story w/o Javascript

Demasiado Largo; Para Leer

Cada comunicación cliente/servidor debe protegerse a través de un protocolo con Secure Socket Layer/Transport Layer Security . El predecesor de Transport Layer Security (TLS) es Secure Socket Layer (SSL), la razón de la existencia de TLS se debe a la vulnerabilidad de SSL frente a un ataque y SSL difiere de TLS en los estándares criptográficos sobre la comunicación entre aplicaciones.

Company Mentioned

Mention Thumbnail
featured image - Instale certificados en Alpine Image para establecer una comunicación segura (SSL/TLS)
Karthik Nagesh HackerNoon profile picture

Cada comunicación cliente/servidor debe estar asegurada a través de un protocolo con Secure Socket Layer/Transport Layer Security. El predecesor de Transport Layer Security (TLS) es Secure Socket Layer (SSL), la razón de la existencia de TLS se debe a la vulnerabilidad de SSL frente a un ataque y SSL difiere de TLS en los estándares criptográficos sobre la comunicación entre aplicaciones.

Una comunicación segura entre aplicaciones se basa en un certificado (cert) distribuido por una autoridad de certificación (CA) que es mutuamente acordada por el cliente y el servidor. CA es una entidad que emite certificados digitales que tienen el estándar x.509 (utiliza criptografía de clave pública) y algunos de los principales proveedores de CA son Comodo, GoDaddy, Global Sign y Symantec.

Este artículo se centrará en cómo instalar certificados en la imagen de la ventana acoplable que tiene una API RESTful. Podemos categorizar el artículo en tres secciones que explican conceptos clave sobre seguridad y cómo lograrlo.

  • Formatos de certificado
  • Comunicación cliente/servidor y autenticación unidireccional
  • Agregar certificado a la imagen de la ventana acoplable

Formatos de certificado

La mayoría de los formatos de certificados tienen el sufijo -.pem, .cer, .crt, .key. Los clientes que se comunican (navegadores/sistemas de clientes) con el servidor tendrán *.pem (correo de privacidad mejorada) o .cer (extensión de archivo de un certificado SSL) para establecer una conexión segura.

Formato común de *.pem, *.cer, *.crt

El algoritmo RSA (Rivest-Shamir-Adleman) se utiliza para cifrar y descifrar mensajes en comunicaciones donde una clave se mantiene pública y la otra como privada, lo que define el concepto de criptografía de clave pública, también conocido como cifrado asimétrico. Los ataques más comunes como MITMA (Man In The Middle Attack) se pueden prevenir mediante el uso de TLS. La Autoridad de registro (RA) ayuda a autenticar el certificado de la Infraestructura de clave pública (PKI) disponible y actúa como intermediario para CA.

Comunicación cliente/servidor y autenticación unidireccional

En resumen, a continuación se resume la comunicación general para realizar una conexión segura entre dos recursos a través de la autenticación unidireccional.

  1. Solicitud del cliente de un recurso protegido del servidor (llamada API RESTful)
  2. El cliente presenta la información cifrada con su clave pública al servidor
  3. El servidor evalúa la solicitud con su clave privada (disponible solo en el lado del servidor) y responde en función del recurso solicitado

Funcionaría de la misma manera para la autenticación mutua donde el cliente y el servidor proporcionan sus claves públicas y descifran sus mensajes con sus propias claves privadas disponibles en su extremo.

Agregar certificado a la imagen de la ventana acoplable

Podemos ver una demostración de cómo lograr la autenticación unidireccional en un contenedor docker que tiene la API RESTful de Golang. Consulte el artículo Golang y Docker: microservicios (API RESTful) para el modelo empresarial que ilustra los pasos para crear la API Restful y envolverla en una imagen de Docker.

Una imagen acoplable se compone de múltiples recursos que harán que un contenedor sirva una solicitud por sí solo en la nube y es responsabilidad del administrador instalar los certificados relevantes en el directorio raíz dentro de la imagen para asegurarla. Indique también en su código que considere los certificados desde la raíz al realizar llamadas a otras API seguras.

Imagen con certificados instalados

En alpine tenemos una utilidad de paquete llamada ca-certificates que viene con sus certificados preinstalados para el navegador Mozilla. También debe actualizar el paquete con sus certificados de terceros necesarios para TLS y esto se puede hacer especificando un comando de certificado de actualización como se muestra a continuación en Dockerfile.

DE alpino: más reciente

EJECUTAR actualización de apk && apk agregar certificados CA && rm -rf /var/cache/apk/*

COPIAR ./mycert.crt /usr/local/share/ca-certificates/mycert.crt

EJECUTAR actualizar-ca-certificados

Agregue los siguientes comandos a su archivo Docker que explica los pasos a continuación.

  • Extraiga la imagen alpina del registro de la ventana acoplable
  • Instale el paquete de certificados CA dentro de la imagen de la ventana acoplable y elimine la carpeta temporal
  • Copie el certificado de su máquina local a la carpeta deseada dentro de la imagen que se va a construir.
  • Ejecute el comando update-ca-certificates para actualizar el nuevo certificado en la carpeta correspondiente

Los pasos anteriores agregarán su certificado de terceros a su imagen acoplable, una vez que la imagen esté construida y el contenedor esté activo, la biblioteca de Golang detectará el certificado (estándar x.509) y proporcionará la clave pública adecuada para establecer una conexión segura con las API de llamadas.