Saltar al contenido principal

Seguridad de red

Por razones de seguridad, Semaphore no debe usarse a través de HTTP sin cifrar.

¿Por qué usar conexiones cifradas? Consulte: Artículo de Cloudflare.

Opciones disponibles:


VPN

Puede usar una VPN de cliente a sitio, que termine en el servidor de Semaphore, para cifrar y proteger la conexión.

TLS

Semaphore admite SSL/TLS a partir de la versión v2.12.

config.json:

{
...
"tls": {
"enabled": true,
"cert_file": "/path/to/cert/example.com.cert",
"key_file": "/path/to/key/example.com.key"
}
...
}

O variables de entorno (útil para Docker):

export SEMAPHORE_TLS_ENABLED=True
export SEMAPHORE_TLS_CERT_FILE=/path/to/cert/example.com.cert
export SEMAPHORE_TLS_KEY_FILE=/path/to/key/example.com.key

Listener de redirección de HTTP a HTTPS

Para configurar el listener de redirección de HTTP a HTTPS, añada uno de los siguientes campos al bloque tls de config.json, o establezca la variable de entorno correspondiente.

Use http_redirect_addr para vincular el listener a una dirección IP y un puerto específicos. Use http_redirect_port para escuchar en todas las interfaces de red. Estas opciones son mutuamente excluyentes.

Vincular el listener de redirección HTTP aconfig.json (bloque tls)Variable de entorno
Una dirección IP y un puerto específicos"http_redirect_addr": "172.29.184.90:80"SEMAPHORE_TLS_HTTP_REDIRECT_ADDR=172.29.184.90:80
Todas las interfaces de red en un puerto"http_redirect_port": 80SEMAPHORE_TLS_HTTP_REDIRECT_PORT=80

Proxy inverso

Alternativamente, puede usar un proxy inverso delante de Semaphore para gestionar las conexiones seguras. Por ejemplo:

Certificado SSL autofirmado

Puede generar su propio certificado SSL con la herramienta de línea de comandos openssl:

openssl req -x509 -newkey rsa:4096 \
-keyout key.pem -out cert.pem \
-sha256 -days 3650 -nodes \
-subj "/C=US/ST=California/L=San Francisco/O=CompanyName/OU=DevOps/CN=example.com"

Certificado SSL de Let's Encrypt

Puede usar Certbot para generar y renovar automáticamente un certificado SSL de Let's Encrypt.

Ejemplo para Apache:

sudo snap install certbot
sudo certbot --apache -n --agree-tos -d example.com -m [email protected]

Otros

Si desea usar cualquier otro proxy inverso, asegúrese de reenviar también las conexiones websocket en la ruta /api/ws.