Bug in LWP::UserAgent von Znuny 6.0.33?

Hilfe zu OTRS Problemen aller Art
Post Reply
schulmann
Znuny wizard
Posts: 470
Joined: 20 Nov 2011, 16:08
Znuny Version: 6.5.4
Real Name: Schulmann

Bug in LWP::UserAgent von Znuny 6.0.33?

Post by schulmann »

Hallo,

beim PackageManager ist mir aufgefallen, dass die Sysconfig-Variable WebUserAgent::DisableSSLVerification enabled werden muss wenn ein Proxy angegeben wird.
Andernfalls kommt die Meldung: 500 SSL upgrade failed: hostname verification failed ...

Bei der Untersuchung bin ich auf das CPAN-Modul LWP::UserAgent gestossen.
Dort scheint ein Fehler zu liegen: verify_hostname funktioniert nicht bei einem Proxy in der Version von Znuny 6.0.33

Getestet habe ich es mit folgendem Skript:

Code: Select all

#!/usr/bin/perl
use lib "/opt/otrs/Kernel/cpan-lib"; # Diese Zeile entscheidet über Erfolg oder Misserfolg.
use LWP::UserAgent ();
my $ua = LWP::UserAgent->new(timeout => 10, verify_hostname => 1);
$ua->proxy(['https'], 'http://192.168.2.127:3128/');
my $response = $ua->get('https://download.znuny.org');
if (!$response->is_success) {
  die $response->status_line;
}
exit;
Je nachdem ob die 2. Zeile deaktiviert ist (Package von Debian wird verwendet) oder aktiviert ist (Package von Znuny 6.0.33 wird verwendet) funktioniert die Host-Verifikation.

Umgebung: Debian 10 mit libwww-perl 6.36-2

MfG
Claus-Dieter
Znuny6/Debian/ESXi
root
Administrator
Posts: 3934
Joined: 18 Dec 2007, 12:23
Znuny Version: Znuny and Znuny LTS
Real Name: Roy Kaldung
Company: Znuny
Contact:

Re: Bug in LWP::UserAgent von Znuny 6.0.33?

Post by root »

Hi,

das liegt aber nicht wirklich an Znuny/OTRS, sondern am Proxy. Ein "normaler" Proxy wie z.B. Squid schiebt HTTPS-Verbindungen einfach durch. Andere, wie dieser anscheinend brechen diese Verbindung auf (ssl bumping) und präsentieren dem Client dafür das Zertifikat des Proxy. Damit kann man zwar den Inhalt auf Viren etc. checken, aber die Verbindung ist nicht mehr vertrauenswürdig.

- Roy
Znuny and Znuny LTS running on CentOS / RHEL / Debian / SLES / MySQL / PostgreSQL / Oracle / OpenLDAP / Active Directory / SSO

Use a test system - always.

Do you need professional services? Check out https://www.znuny.com/

Do you want to contribute or want to know where it goes ?
schulmann
Znuny wizard
Posts: 470
Joined: 20 Nov 2011, 16:08
Znuny Version: 6.5.4
Real Name: Schulmann

Re: Bug in LWP::UserAgent von Znuny 6.0.33?

Post by schulmann »

Hallo Roy,

als Proxy hatte ich einen neu installierten Squid auf Debian 10.
Dort habe ich nur eine Zeile in die Datei /etc/squid/squid.conf eingefügt: http_access allow localnet.
Die SSL-Verbindung dürfte damit nicht aufgebrochen werden.

Claus-Dieter
Znuny6/Debian/ESXi
root
Administrator
Posts: 3934
Joined: 18 Dec 2007, 12:23
Znuny Version: Znuny and Znuny LTS
Real Name: Roy Kaldung
Company: Znuny
Contact:

Re: Bug in LWP::UserAgent von Znuny 6.0.33?

Post by root »

Hi,
dann kennt dein Linux die CA nicht. Das ist eine die aktuelle Let's Encrypt, sollte bei einer aktuellen Distribution kein Problem sein. Wenn das aber wirklich an der zweiten Zeile deines Skriptes liegt führe mal bitte folgenden Befehl als OTRS Benutzer aus:

bin/otrs.Console.pl Dev::Code::CPANUpdate --mode stable

und teste bitte noch einmal.

- Roy
Znuny and Znuny LTS running on CentOS / RHEL / Debian / SLES / MySQL / PostgreSQL / Oracle / OpenLDAP / Active Directory / SSO

Use a test system - always.

Do you need professional services? Check out https://www.znuny.com/

Do you want to contribute or want to know where it goes ?
schulmann
Znuny wizard
Posts: 470
Joined: 20 Nov 2011, 16:08
Znuny Version: 6.5.4
Real Name: Schulmann

Re: Bug in LWP::UserAgent von Znuny 6.0.33?

Post by schulmann »

Hallo Roy,

das bewirkt keine Verhaltensänderung: Die zweite Zeile entscheidet weiterhin über Erfolg/Misserfolg.

Code: Select all

root@o6:~# find /opt/otrs/Kernel ! -user otrs -print0|xargs -0r chown otrs:
root@o6:~# su - otrs
otrs@o6:~$ bin/otrs.Console.pl Dev::Code::CPANUpdate --mode stable
Updating CPAN::Audit...
Updating Mozilla::CA...
otrs@o6:~$ logout
root@o6:~# /opt/otrs/x.pl
500 SSL upgrade failed: hostname verification failed at /opt/otrs/x.pl line 8.
root@o6:~# 
Wenn es tatsächlich an dem nicht gefundenen Zertifikat liegt: Wie kann ich in der Sysconfig die CA-Directory eintragen bzw. würde da nicht eine Sysconfig-Variable WebUserAgent::CertPath benötigt?

Das Let's Encrypt-Zertifikat scheint in der Maschine vorhanden zu sein:

Code: Select all

root@o6:~# openssl x509 -in /etc/ssl/certs/DST_Root_CA_X3.pem -text -noout|sed -e '/Subject Public Key Info:/,$d'
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            44:af:b0:80:d6:a3:27:ba:89:30:39:86:2e:f8:40:6b
        Signature Algorithm: sha1WithRSAEncryption
        Issuer: O = Digital Signature Trust Co., CN = DST Root CA X3
        Validity
            Not Before: Sep 30 21:12:19 2000 GMT
            Not After : Sep 30 14:01:15 2021 GMT
        Subject: O = Digital Signature Trust Co., CN = DST Root CA X3
root@o6:~#
Claus-Dieter
Znuny6/Debian/ESXi
root
Administrator
Posts: 3934
Joined: 18 Dec 2007, 12:23
Znuny Version: Znuny and Znuny LTS
Real Name: Roy Kaldung
Company: Znuny
Contact:

Re: Bug in LWP::UserAgent von Znuny 6.0.33?

Post by root »

Hallo,

kann Du bitte einmal von dem System aus folgenden Befehl ausführen:

Code: Select all

https_proxy=http://192.168.2.127:3128/ http_proxy=http://192.168.2.127:3128/ curl -Iv https://download.znuny.org/
Gruss
Roy
Znuny and Znuny LTS running on CentOS / RHEL / Debian / SLES / MySQL / PostgreSQL / Oracle / OpenLDAP / Active Directory / SSO

Use a test system - always.

Do you need professional services? Check out https://www.znuny.com/

Do you want to contribute or want to know where it goes ?
schulmann
Znuny wizard
Posts: 470
Joined: 20 Nov 2011, 16:08
Znuny Version: 6.5.4
Real Name: Schulmann

Re: Bug in LWP::UserAgent von Znuny 6.0.33?

Post by schulmann »

Hallo Roy,

Code: Select all

root@o6:~# https_proxy=http://192.168.2.127:3128/ http_proxy=http://192.168.2.127:3128/ curl -Iv https://download.znuny.org/
* Expire in 0 ms for 6 (transfer 0x5573e09f0ee0)
* Uses proxy env variable https_proxy == 'http://192.168.2.127:3128/'
*   Trying 192.168.2.127...
* TCP_NODELAY set
* Expire in 200 ms for 4 (transfer 0x5573e09f0ee0)
* Connected to 192.168.2.127 (192.168.2.127) port 3128 (#0)
* allocate connect buffer!
* Establish HTTP proxy tunnel to download.znuny.org:443
> CONNECT download.znuny.org:443 HTTP/1.1
> Host: download.znuny.org:443
> User-Agent: curl/7.64.0
> Proxy-Connection: Keep-Alive
> 
< HTTP/1.1 200 Connection established
HTTP/1.1 200 Connection established
< 

* Proxy replied 200 to CONNECT request
* CONNECT phase completed!
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* CONNECT phase completed!
* CONNECT phase completed!
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use http/1.1
* Server certificate:
*  subject: CN=download.znuny.org
*  start date: Mar 12 22:17:33 2021 GMT
*  expire date: Jun 10 22:17:33 2021 GMT
*  subjectAltName: host "download.znuny.org" matched cert's "download.znuny.org"
*  issuer: C=US; O=Let's Encrypt; CN=R3
*  SSL certificate verify ok.
> HEAD / HTTP/1.1
> Host: download.znuny.org
> User-Agent: curl/7.64.0
> Accept: */*
> 
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* old SSL session ID is stale, removing
< HTTP/1.1 200 OK
HTTP/1.1 200 OK
< Date: Wed, 24 Mar 2021 12:21:54 GMT
Date: Wed, 24 Mar 2021 12:21:54 GMT
< Server: Apache
Server: Apache
< Content-Type: text/html;charset=ISO-8859-1
Content-Type: text/html;charset=ISO-8859-1

< 
* Connection #0 to host 192.168.2.127 left intact
root@o6:~# 
Claus-Dieter
Znuny6/Debian/ESXi
root
Administrator
Posts: 3934
Joined: 18 Dec 2007, 12:23
Znuny Version: Znuny and Znuny LTS
Real Name: Roy Kaldung
Company: Znuny
Contact:

Re: Bug in LWP::UserAgent von Znuny 6.0.33?

Post by root »

Hi Claus-Dieter,

danke. Ich verstehe zwar noch nicht warum, aber das sieht wahrlich merkwürdig aus. Und da greift auch niemand in die HTTPS-Verbindung ein.
Wärst Du so nett und machst ein Issue auf GitHub auf? Mit Details zu der Umgebung: also OS, Squid-Version und die Ausgabe von bin/otrs.CheckModules.pl --all sowie perl -V

Vielen Dank!

- Roy
Znuny and Znuny LTS running on CentOS / RHEL / Debian / SLES / MySQL / PostgreSQL / Oracle / OpenLDAP / Active Directory / SSO

Use a test system - always.

Do you need professional services? Check out https://www.znuny.com/

Do you want to contribute or want to know where it goes ?
reneeb
Znuny guru
Posts: 5018
Joined: 13 Mar 2011, 09:54
Znuny Version: 6.0.x
Real Name: Renée Bäcker
Company: Perl-Services.de
Contact:

Re: Bug in LWP::UserAgent von Znuny 6.0.33?

Post by reneeb »

Nur als Referenz: Der Bug wurde unter https://github.com/znuny/Znuny/issues/36 gemeldet. Die Lösung ist, LWP::Protocol::https in Kernel/cpan-lib zu aktualisieren. Ein PullRequest ist in Arbeit...
Perl / Znuny development: http://perl-services.de
Free Znuny add ons from the community: http://opar.perl-services.de
Commercial add ons: http://feature-addons.de
Post Reply