AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 979856
Accepted
slackline
slackline
Asked: 2019-08-20 08:22:33 +0800 CST2019-08-20 08:22:33 +0800 CST 2019-08-20 08:22:33 +0800 CST

proxy reverso nginx para erro SSL radical

  • 772

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 Gatewaye 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?

nginx
  • 2 2 respostas
  • 1355 Views

2 respostas

  • Voted
  1. Best Answer
    vx3r
    2019-08-21T01:23:59+08:002019-08-21T01:23:59+08:00

    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 entrada

    Acredito que o Radicale não está manipulando a autenticação por certificado de cliente e seu servidor Radicale está ouvindo, 127.0.0.1portanto, configurando o SSL no Radicale, você basicamente está tentando criptografar o tráfego no host local.

    Outro ponto na sua configuração.

    location /radicale/ {                                                         
              ...
              auth_basic                    "Radicale - Password Required";             
              auth_basic_user_file          /etc/radicale/users;                        
              ...
    }   
    

    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:

    • desabilite o SSL no Radicale e deixe o proxy reverso lidar com o SSL com LetsEncrypt.
    • desabilite a autenticação básica no proxy reverso e deixe o Radicale lidar com a autenticação do usuário.

    Se você ainda deseja criptografar o tráfego entre o proxy reverso e o Radicale, basta remover a parte do certificado do cliente e adicionarproxy_ssl_name

    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;  
    
              proxy_ssl_name                "####";
              proxy_ssl_verify              on;                                                     
              proxy_ssl_trusted_certificate /etc/radicale/server_cert.pem;              
    }   
    

    proxy_ssl_nameé necessário para evitar o 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: "####"
    

    Isso 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.

    • 2
  2. Chris Dennis
    2022-01-27T10:59:09+08:002022-01-27T10:59:09+08:00

    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 que X-Script-Nameestá definido. Eu uso letsencrypt/certbot para os certificados.

    A estrofe do nginx é:

    server {
        server_name radicale.example.com;
        # (all :80 connections are being redirected to :443)
        listen 443 ssl;                                                                                                                                                           
        listen [::]:443 ssl;                                                                                                                                      
        access_log /var/log/nginx/radicale/access.log main;                                                                                                                                                      
        error_log  /var/log/nginx/radicale/error.log info;                                                                                                                                                                                                                                                                                    
        location / {
                proxy_pass        http://localhost:5232/;
                proxy_set_header  X-Script-Name /;
                proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;                                                                                                                                   
                proxy_set_header  Host $http_host;                                                                                                                                                              
                proxy_pass_header Authorization;                                                                                                                                                                
        }                                                                                                                                                                                                       
        ssl_certificate /etc/letsencrypt/live/radicale.example.com/fullchain.pem; # managed by Certbot                                                                                                             
        ssl_certificate_key /etc/letsencrypt/live/radicale.example.com/privkey.pem; # managed by Certbot                                                                                                           
    

    }

    Nenhuma configuração de SSL é necessária na configuração do Radicale e estou deixando o Radicale lidar com as senhas do usuário.

    • 0

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve