SSL Fehler

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
letzter3
Beiträge: 446
Registriert: 16.07.2011 22:07:31

SSL Fehler

Beitrag von letzter3 » 25.03.2017 17:24:25

Hallo zusammen.
Bin am Testen einer odoo-Installation.
Diese soll im proxy-Mode auf https erzwungen werden.
Beim Versuch, den lokalen nginx zu erreichen, bekomme ich folgenden Fehler:
An error occurred during a connection to 127.0.0.1:8069. SSL received a record that exceeded the maximum permissible length. Error code: SSL_ERROR_RX_RECORD_TOO_LONG
Meine odoo.conf sieht wie folgt aus:

Code: Alles auswählen

root@debian:/etc/nginx/sites-available# cat odoo                                            
                                                                                                                                          
## OpenERP backend ##                                                                                                                     
upstream odoo {                                                                                                                           
    server 127.0.0.1:8069 weight=1 fail_timeout=0;                                                                                        
}                                                                                                                                         
                                                                                                                                          
upstream odoo-im {                                                                                                                        
    server 127.0.0.1:8072 weight=1 fail_timeout=0;                                                                                        
}                                                                                                                                         
                                                                                                                                          
## https site##                                                                                                                           
server {                                                                                                                                  
    listen      443;                                                                                                                      
    server_name 192.168.0.128;                                                                                                            
    root        /usr/share/nginx/html;                                                                                                    
    index       index.html index.htm;                                                                                                     
    ssl_certificate /etc/nginx/ssl/odootest.crt;                                                                                          
    ssl_certificate_key /etc/nginx/ssl/odootest.key;                                                                                      
        allow all;                                                                                                                        


        # log files
        access_log  /var/log/nginx/192.168.0.128.access.log;
        error_log   /var/log/nginx/192.168.0.128.error.log;



        # proxy buffers
        proxy_buffers 16 64k;
        proxy_buffer_size 128k;

        ## default location ##
        location / {
            proxy_pass  http://odoo;
            # force timeouts if the backend dies
            proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
            proxy_redirect off;
            proxy_read_timeout 300000;

            # set headers
            proxy_set_header    Host            $host;
            proxy_set_header    X-Real-IP       $remote_addr;
            proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header    X-Forwarded-Proto https;
        }

        # cache some static data in memory for 60mins
        location ~* /web/static/ {
            proxy_cache_valid 200 60m;
            proxy_buffering on;
            expires 864000;
            proxy_pass http://odoo;
        }

        location /longpolling {
            proxy_pass http://odoo-im;
        }
    }

## http redirects to https ##
server {
    listen      80;
    server_name 192.168.0.128;

    # Strict Transport Security
    add_header Strict-Transport-Security max-age=2592000;
    rewrite ^/.*$ https://$host$request_uri? permanent;
    return 301 https://$host$request_uri;
}
Der ssl-client-Test ergibt:

Code: Alles auswählen

root@debian:~# openssl s_client -connect 127.0.0.1:443
CONNECTED(00000003)
139634740041360:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:782:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 289 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : 0000
    Session-ID: 
    Session-ID-ctx: 
    Master-Key:                                                                                                                           
    Key-Arg   : None                                                                                                                      
    PSK identity: None                                                                                                                    
    PSK identity hint: None                                                                                                               
    SRP username: None                                                                                                                    
    Start Time: 1490457857                                                                                                                
    Timeout   : 300 (sec)                                                                                                                 
    Verify return code: 0 (ok)


Die nginx-Konfiguration wird nicht bemängelt (nginx -t meldet keinen Fehler)

Die Schlüssel sind unter /etc/nginx/ssl abgelegt:

Code: Alles auswählen

root@debian:/etc/nginx/ssl# ls
odootest.crt  odootest.csr  odootest.key
Warum wird die Schlüssellänge angemeckert bzw. wie kann die zu lang werden???
Wie behebe ich das Problem?

letzter3
Beiträge: 446
Registriert: 16.07.2011 22:07:31

Re: SSL Fehler

Beitrag von letzter3 » 31.03.2017 20:48:10

keiner (oder niemand :-)) eine Idee?
Zumindest den Fehler beim ssl-client-Test habe ich behoben.
Der liefert nun von intern und extern:

Code: Alles auswählen

oot@debian:/etc/nginx# openssl s_client -connect 127.0.0.1:443
CONNECTED(00000003)
depth=0 C = DE, ST = Mecklenburg-Vorpommern, L = Ludwigslust, O = Braumanufaktur, CN = webmaster@example.org, emailAddress = webmaster@example.org
verify error:num=18:self signed certificate
verify return:1
depth=0 C = DE, ST = Mecklenburg-Vorpommern, L = Ludwigslust, O = Braumanufaktur, CN = webmaster@example.org, emailAddress = webmaster@example.org
verify return:1
---
Certificate chain
 0 s:/C=DE/ST=Mecklenburg-Vorpommern/L=Ludwigslust/O=Braumanufaktur/CN=webmaster@example.org/emailAddress=webmaster@example.org
   i:/C=DE/ST=Mecklenburg-Vorpommern/L=Ludwigslust/O=Braumanufaktur/CN=webmaster@example.org/emailAddress=webmaster@example.org
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIDxDCCAqwCCQCGvOiuCkOo1DANBgkqhkiG9w0BAQsFADCBozELMAkGA1UEBhMC
.....
I3bPXdJ7/EA=
-----END CERTIFICATE-----
subject=/C=DE/ST=Mecklenburg-Vorpommern/L=Ludwigslust/O=Braumanufaktur/CN=webmaster@example.org/emailAddress=webmaster@example.org
issuer=/C=DE/ST=Mecklenburg-Vorpommern/L=Ludwigslust/O=Braumanufaktur/CN=webmaster@example.org/emailAddress=webmaster@example.org
---
No client certificate CA names sent
---
SSL handshake has read 1643 bytes and written 415 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-GCM-SHA384
    Session-ID: A171F5F59548DA08660E0A12A83EA5DCA461DC475CDB9C6A645212E1FC1FBC99
    Session-ID-ctx: 
    Master-Key: 1466AE909BAAEB82C53A35537FD345AAD0CFFA06FA906B9B79534576586D00383A39DDF0784A62520A384C6ED265E0C9
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 300 (seconds)
    TLS session ticket:
    0000 - 65 fd 64 0e 32 42 be 03-62 8f e9 c3 f2 02 78 af   e.d.2B..b.....x.
    .....
    00a0 - 0d 24 f9 ef 77 f4 c1 d3-76 70 b9 bb 0f 30 fd 5e   .$..w...vp...0.^

    Start Time: 1490985378
    Timeout   : 300 (sec)
    Verify return code: 18 (self signed certificate)
---
closed
Unabhängig davon bekomme ich keinen Zugriff.
Chromium, Mozilla und konquerer meckern
Chromium:
Diese Website kann keine sichere Verbindung bereitstellen

192.168.0.128 hat eine ungültige Antwort gesendet.
ERR_SSL_PROTOCOL_ERROR
Mozilla:
An error occurred during a connection to 192.168.0.128:8069. SSL received a record that exceeded the maximum permissible length. Error code: SSL_ERROR_RX_RECORD_TOO_LONG
Konqueror:
Die Aktion lässt sich nicht ausführen
Verbindungsaufbau vom Server abgelehnt

Details der Anfrage:
Adresse: https://192.168.0.128:8069/
Protokoll: https
Datum und Zeit: Freitag, 31. März 2017 20:07
Zusätzliche Information: 192.168.0.128: SSL-Aushandlung fehlgeschlagen
Beschreibung:
Server 192.168.0.128 lehnt eine Verbindung mit diesem Rechner ab.
netstat liefert:

Code: Alles auswählen

tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      0          133054      12902/nginx -g daem
tcp        0      0 0.0.0.0:8069            0.0.0.0:*               LISTEN      121        15819       663/python      
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      0          133055      12902/nginx -g daem
Ist das korrekt, dass bei der IP alles Nullen sind?

Meine jetzige conf nochmal beigefügt:

Code: Alles auswählen

root@debian:/etc/nginx/sites-enabled# cat odoo.conf                          
## https://www.odoo.com/fr_FR/forum/help-1/question/nginx-reverse-proxy-on-80-443-32052

## Based on: http://www.schenkels.nl/2013/01/reverse-ssl-proxy-using-nginx-with-openerp-v7/

## OpenERP backend ##
upstream odoo {
    server 127.0.0.1:8069 weight=1 fail_timeout=0;
#    server 192.168.0.128:8069 weight=1 fail_timeout=0;
}

#upstream odoo-im {
#    server 127.0.0.1:8072 weight=1 fail_timeout=0;
#}

## https site##
server {
    listen      443 ssl;
    server_name 192.168.0.128;
    root        /usr/share/nginx/html;
    index       index.html index.htm;
    ssl_certificate /etc/nginx/ssl/odootest.crt;
    ssl_certificate_key /etc/nginx/ssl/odootest.key;
        allow all;

        # log files
        access_log  /var/log/nginx/192.168.0.128.access.log;
        error_log   /var/log/nginx/192.168.0.128.error.log;

        # SSL-Protokolle definieren
        ssl_protocols TLSv1.2 TLSv1.1 TLSv1;

        # cipher einschränken
        ssl_ciphers     HIGH:!ADH!MD5;
#       ssl_prefer_server_ciphers on;

        # proxy buffers
        proxy_buffers 16 64k;
        proxy_buffer_size 128k;

        ## default location ##
        location / {
#           proxy_pass  http://odoo;
#           proxy_pass  http://webserver;
            proxy_pass  http://192.168.0.128;
            # force timeouts if the backend dies
            proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
            proxy_redirect off;
            proxy_read_timeout 300000;

            # set headers
            proxy_set_header    Host            $host;
            proxy_set_header    X-Real-IP       $remote_addr;
            proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header    X-Forwarded-Proto https;
        }

        # cache some static data in memory for 60mins
        location ~* /web/static/ {
            proxy_cache_valid 200 60m;
            proxy_buffering on;
            expires 864000;
#           proxy_pass http://odoo;
            proxy_pass  http://192.168.0.128;
        }

#       location /longpolling {
#           proxy_pass http://odoo-im;
#       }
    }

## http redirects to https ##
server {
    listen      80;
    server_name 192.168.0.128;

    # Strict Transport Security
    add_header Strict-Transport-Security max-age=2592000;
#    rewrite ^/.*$ https://$host$request_uri? permanent;
    return 301 https://$host$request_uri;
}
root@debian:/etc/nginx/sites-enabled# 
Seltsamerweise funktioniert die Umleitung von http auf https ebenfalls nicht.
Bei https://192.168.0.128:8069/web/login kommen die obigen Fehler, bei http://192.168.0.128:8069/web/login funktioniert alles.

Die error bzw. acces-logs sind leer bzw. zeichnen die Zugriffe per http auf.

letzter3
Beiträge: 446
Registriert: 16.07.2011 22:07:31

Re: SSL Fehler

Beitrag von letzter3 » 31.03.2017 21:16:23

Arrg.
Nach cache Löschen geht es hier zumindest weiter.

Nun wieder allerdings:
Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.
grrrmmm :?

reox
Beiträge: 2463
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Re: SSL Fehler

Beitrag von reox » 31.03.2017 21:25:05

Hi!

Deine config scheint wohl ein bisserl durcheinander:

Code: Alles auswählen

#           proxy_pass  http://odoo;
#           proxy_pass  http://webserver;
            proxy_pass  http://192.168.0.128;
Ich denke mal die erste zeile ist korrekt. Mit der letzten leitest du dich ja wieder auf dich selbst, dann macht er den 301 auf https und dann wieder http ...

letzter3
Beiträge: 446
Registriert: 16.07.2011 22:07:31

Re: SSL Fehler

Beitrag von letzter3 » 31.03.2017 21:40:34

Mmmpf.
Ja, mit der ersten Zeile funktioniert das.
Die Erklärung, dass die letzte Zeile nicht funktionieren kann, hab ich verstanden.
Aber wieso funktioniert die erste?

Code: Alles auswählen

http://odoo;
ist doch nirgendwo definiert?

reox
Beiträge: 2463
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Re: SSL Fehler

Beitrag von reox » 01.04.2017 21:42:35

Doch:

Code: Alles auswählen

## OpenERP backend ##                                                                                                                     
upstream odoo {                                                                                                                           
    server 127.0.0.1:8069 weight=1 fail_timeout=0;                                                                                       
} 

Antworten