html 🔒 Https usando Haproxy | Nullcore
Pule para o conteúdo principal
aviso

Este tutorial é uma contribuição da comunidade e não é suportado pela equipe Nullcore. Serve apenas como uma demonstração sobre como personalizar o Nullcore para o seu caso de uso específico. Quer contribuir? Confira o tutorial contribuinte.

Configuração do Haproxy para Nullcore

O Haproxy (alta disponibilidade de proxy) é uma solução especializada em balanceamento de carga e proxy reverso, altamente configurável e projetado para lidar com grandes quantidades de conexões com uma pegada de recursos relativamente baixa. Para mais informações, consulte:https://www.haproxy.org/

Instale o haproxy e vamos criptografar

Primeiro, instale o Haproxy e o CertBot do Let's Crypt:

Derivados de Redhat

sudo dnf install haproxy certbot openssl -y

Derivativos do Debian

sudo apt install haproxy certbot openssl -y

Haproxy Configuração básica

A configuração de Haproxy é por padrão armazenada em/etc/haproxy/haproxy.cfg. Este arquivo contém todas as diretivas de configuração que determinam como o Haproxy operará.

A configuração básica para o Haproxy trabalhar com o Nullcore é bem simples.


# Configurações globais

global
# Para que essas mensagens acabem em /var/log/haproxy.log você vai
# Precisa:

# 1) Configure o syslog para aceitar eventos de log de rede. Isso é feito
# adicionando a opção '-r' às syslogl_options em
#/etc/sysconfig/syslog

# 2) Configure eventos locais2 para ir para o /var/log/haproxy.log
# arquivo. Uma linha como a seguinte pode ser adicionada a
#/etc/sysconfig/syslog

# local2.* /var/log/haproxy.log

Log 127.0.0.1 Local2

chroot/var/lib/haproxy
pidfile /var/run/haproxy.pid
Maxconn 4000
Usuário haproxy
Grupo Haproxy
Daemon

#ajusta o dh-param se muito baixo
tune.ssl.default-dh-param 2048

# Padrões comuns de que todas as seções 'ouvir' e 'back -end' vão
# Use se não for designado em seu bloco

padrões
modo http
log global
Opção httplog
Opção dontLognull
Opção HTTP-SERVER Close
Opção Avance para #Except 127.0.0.0/8
Opção RECREVELA
EXECUTAS 3
Tempo limite HTTP-REQUEST 300S
Fila de tempo limite 2M
Timeout Connect 120s
Cliente de tempo limite 10m
Timeout Server 10m
Timeout Http-Keep-Alive 120s
Timeout Verifique 10s
Maxconn 3000

#http
Web front -end
#Não-SSL
vincular 0.0.0.0:80
#Ssl/tls
vincular 0.0.0.0:443 ssl crt/path/to/ssl/pasta/

#Vamos criptografar ssl
ACL LetSencrypt-Acl path_beg /.well-nnown/acme-challenge/
use_backend LetSencrypt-Backend se LetSencrypt-ACL

Método #SubDomain
ACL chat -acl hdr (host) -i subdomain.domain.tld
#Path método
ACL Chat-ACL PATH_BEG /OWUI /
use_backend owui_chat se chat-acl

#Pass SSL solicita para deixar criptografar
Back-end LetSencrypt-Backend
Servidor LetSencrypt 127.0.0.1:8688

#Owui chat
back -end owui_chat
# Adicione X-forwarded for
option forwardfor
# Adicione X-Client-IP
http-request add-header x-client-ip %[src]
HTTP-REQUEST Set-cabeçalho X-forwarded-proto https se {ssl_fc}
Chat do servidor <Ip>: 3000

Você verá que temos registros da ACL (roteadores) para o Nullcore e o Let's Encrypt. Para usar o WebSocket com o OWUI, você precisa ter um SSL configurado, e a maneira mais fácil de fazer isso é usar o Let's Encrypt.

Você pode usar o método de subdomínio ou o método do caminho para rotear o tráfego para abrir o WebUI. O método de subdomínio requer um subdomínio dedicado (por exemplo, chat.yourdomain.com), enquanto o método do caminho permite acessar o Webui aberto através de um caminho específico em seu domínio (por exemplo, yourddomain.com/owui/). Escolha o método que melhor atenda às suas necessidades e atualize a configuração de acordo.

informações

Você precisará expor a porta 80 e 443 ao seu servidor Haproxy. Essas portas são necessárias para que o Let's Encrypt valide seu domínio e para o tráfego HTTPS. Você também precisará garantir que seus registros DNS sejam configurados corretamente para apontar para o seu servidor Haproxy. Se você estiver executando o Haproxy em casa, precisará usar o encaminhamento da porta no seu roteador para encaminhar as portas 80 e 443 para o servidor Haproxy.

Emissão de certificados SSL com Let's Encrypt

Antes de iniciar o HaProxy, você deseja gerar um certificado auto -assinado para usar como espaço reservado até que o Let's Encrypt emitir um apropriado. Veja como gerar um certificado autoassinado:

Openssl req -x509 -NewKey RSA: 2048 -Keyout /tmp/haproxy.key-out /tmp/haproxy.crt -days 3650 -nodes -subj "/cn = localhost"

Em seguida, combine a chave e o certificado em um arquivo PEM que o Haproxy pode usar:

cat /tmp/haproxy.crt /tmp/haproxy.key > /etc/haproxy/certs/haproxy.pem

informações

Certifique -se de atualizar a configuração do Haproxy com base em suas necessidades e configuração.

Depois de configurar sua configuração Haproxy, você pode usar o CERTBOT para obter e gerenciar seus certificados SSL. O CERTBOT lidará com o processo de validação com o Let's Encrypt e atualizará automaticamente seus certificados quando eles estiverem próximos de expirar (supondo que você use o Serviço de Renovação Auto-Certbot).

Você pode validar a configuração do Haproxy executandohaproxy -c -f /etc/haproxy/haproxy.cfg. Se não houver erros, você pode começar a Haproxy comsystemctl start haproxye verifique se está funcionando comsystemctl status haproxy

Para garantir que o haproxy comece com o sistema,systemctl enable haproxy

Quando você configurou o Haproxy, você pode usar o Let's Encrypt para emitir seu certificado SSL válido. Primeiro, você precisará se registrar com o Let's Encrypt. Você só precisa fazer isso apenas uma vez:

certbot register --agree-tos --email your@email.com --non-interactive

Então você pode solicitar seu certificado:

CertBot Certonly -N-Standalone-Chequeges-preferidos http-http-01-port-8688 -d yourDomain.com

Depois que o certificado for emitido, você precisará mesclar o certificado e os arquivos de chave privada em um único arquivo PEM que o Haproxy pode usar.

cat /etc/letsecrypt/live/ {domaining }/fullchain.pem /etc/letsecrypt/live/{domaining }/privkey.pem> /etc/haproxy/certs/ {)
CHMOD 600 /etc/haproxy/certs/ {domaining }.pem
CHOWN HAPROXY: HAPROXY /ETC/HAPROXY/CERTS/ {DOMAINAMUM.PEM

Você pode reiniciar o Haproxy para aplicar o novo certificado:systemctl restart haproxy

Haproxy Manager (Opção de implantação fácil)

Se você deseja ter algo gerenciar sua configuração Haproxy e vamos criptografar o SSLs automaticamente, escrevi um script python simples e criei um contêiner do Docker que você pode usar para criar e gerenciar sua configuração Haproxy e gerenciar o ciclo de vida do Certificado Let Encrypt.

https://github.com/shadowdao/haproxy-manager

aviso

Por favor, não exponha a porta 8000 publicamente se você usar o script ou contêiner!