Continuando tentando configurar o nginx para usar um proxy reverso para radicale que está sendo executado no host local e agora estou recebendo erros de SSL seguindo a documentação no proxy que criei meus próprios certificados SSL.
A seção relevante da minha configuração nginx é
location /radicale/ {
proxy_pass http://127.0.0.1:9468/;
#proxy_pass http://46.105.31.182:9468/;
proxy_set_header X-Script-Name /radicale;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Remote-User $remote_user;
auth_basic "Radicale - Password Required";
auth_basic_user_file /etc/radicale/users;
proxy_ssl_verify on;
proxy_ssl_certificate /etc/radicale/client_cert.pem;
proxy_ssl_certificate_key /etc/radicale/client_key.pem;
proxy_ssl_trusted_certificate /etc/radicale/server_cert.pem;
}
...e minha configuração radical para certificados SSL é...
[server]
hosts = 127.0.0.1:9468
ssl = true
certificate = /etc/radicale/server_cert.pem
key = /etc/radicale/server_key.pem
certificate_authority = /etc/radicale/client_cert.pem
[auth]
type = http_x_remote_user
htpasswd_filename = /etc/radicale/users
htpasswd_encryption = bcrypt
Se eu for ao site https://####/radicale , é solicitado nome de usuário e senha para autenticação, mas o nginx retorna o seguinte erro ...
upstream prematurely closed connection while reading response header from upstream, client: 62.253.154.162, server: #####, request: "GEET /radicale/ HTTP/2.0", upstream: "http://127.0.0.1:9468/", host: "####"
...e relatórios de Radical a montante...
ERROR: An exception occurred during request: SSL handshake failed: [SSL: HTTP_REQUEST] http request (_ssl.c:1076)
Se eu desabilitar o SSL entre o proxy reverso no Radicale e o nginx, não é um problema, posso acessar o WebUI https://####/radicale e posso fazer o login. Mas se eu habilitá-lo, vá para https://####/radicale e recebo uma caixa pop-up solicitando nome de usuário/senha e os relatórios do navegador 502 Bad Gateway
e os erros acima ocorrem novamente.
Eu tenho certificados LetsEncrypt e trabalhando no meu domínio isso pode estar causando algum tipo de conflito com os certificados SSL que estão sendo usados para o proxy reverso?
De acordo com a documentação do Nginx,
proxy_ssl_certificate
proxy_ssl_certificate_key
são relevantes se você deseja que o NGINX se identifique para os servidores upstream usando um certificado de cliente SSL fornecido. Você também precisará configurar os servidores upstream para exigir certificados de cliente para todas as conexões SSL de entradaAcredito que o Radicale não está manipulando a autenticação por certificado de cliente e seu servidor Radicale está ouvindo,
127.0.0.1
portanto, configurando o SSL no Radicale, você basicamente está tentando criptografar o tráfego no host local.Outro ponto na sua configuração.
Sua parte de autenticação já é tratada pela própria Radicale. Não faz sentido adicionar essas linhas no proxy de reversão.
Eu sugiro:
Se você ainda deseja criptografar o tráfego entre o proxy reverso e o Radicale, basta remover a parte do certificado do cliente e adicionar
proxy_ssl_name
proxy_ssl_name
é necessário para evitar o erroIsso se deve ao fato de que o nome usado para ser verificado em relação ao nome do certificado SSL é $proxy_host por padrão.
Eu sei que este é um tópico antigo, mas para o registro eu consegui trabalhar assim ...
Estou usando um subdomínio separado como radicale.example.com, e o script está
/
dentro dele, então é isso queX-Script-Name
está definido. Eu uso letsencrypt/certbot para os certificados.A estrofe do nginx é:
}
Nenhuma configuração de SSL é necessária na configuração do Radicale e estou deixando o Radicale lidar com as senhas do usuário.