Passa al contenuto principale

Sicurezza di rete

Per motivi di sicurezza, Semaphore non deve essere utilizzato su HTTP non cifrato!

Perché usare connessioni cifrate? Vedere: Articolo di Cloudflare.

Le opzioni disponibili sono:


VPN

È possibile utilizzare una VPN Client-to-Site, che termina sul server Semaphore, per cifrare e proteggere la connessione.

TLS

Semaphore supporta SSL/TLS a partire dalla versione v2.12.

config.json:

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

Oppure tramite variabili d'ambiente (utile per 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 di reindirizzamento da HTTP a HTTPS

Per configurare il listener di reindirizzamento da HTTP a HTTPS, aggiungere uno dei seguenti campi al blocco tls in config.json, oppure impostare la variabile d'ambiente corrispondente.

Usare http_redirect_addr per associare il listener a un indirizzo IP e a una porta specifici. Usare http_redirect_port per restare in ascolto su tutte le interfacce di rete. Queste opzioni si escludono a vicenda.

Associare il listener di reindirizzamento HTTP aconfig.json (blocco tls)Variabile d'ambiente
Indirizzo IP e porta specifici"http_redirect_addr": "172.29.184.90:80"SEMAPHORE_TLS_HTTP_REDIRECT_ADDR=172.29.184.90:80
Tutte le interfacce di rete su una porta"http_redirect_port": 80SEMAPHORE_TLS_HTTP_REDIRECT_PORT=80

Reverse proxy

In alternativa, è possibile utilizzare un reverse proxy davanti a Semaphore per gestire le connessioni sicure. Ad esempio:

Certificato SSL autofirmato

È possibile generare il proprio certificato SSL con lo strumento CLI 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"

Certificato SSL Let's Encrypt

È possibile utilizzare Certbot per generare e rinnovare automaticamente un certificato SSL Let's Encrypt.

Esempio per Apache:

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

Altri

Se si desidera utilizzare un altro reverse proxy, assicurarsi di inoltrare anche le connessioni websocket sulla route /api/ws!