Da CWP leider trotz all der Updates offiziell kein TLSv1.3 für SSL unterstützt bei Centos7, muss man dies manuell installieren, wenn man es unbedingt haben möchte.
Hier zeige ich euch, wie das funktioniert und was es dazu braucht.
Der Grund, warum kein TSLv1.3 möglich ist, liegt daran, dass leider noch immer eine veraltete Version von OpenSSL installiert ist, und diese scheinbar für Centos7 auch nicht mehr upgedated wird. TLSv1.3 benötigt nämlich mindestens OpenSSL 1.1.1, Centos7 mit CWP bietet allerdings nur 1.0.2 an.
Bitte unterstützt meine Arbeit
Also, los gehts:
Anforderungen:
- Apache version 2.4.37 oder größer.
- Nginx version 1.13.0 oder größer.
- OpenSSL version 1.1.1 oder größer.
- Einen korrekten Domain Namen mit korrekt eingestellten DNS Einträgen.
- Ein gültiges TLS Zertifikat.
Wir sehen also, im normalfall bei einem aktuellen CWP, müssen wir nur OpenSSL updaten.
Wir lassen uns erstmal die aktuellen Versionen von OpenSSL und nginx ausgeben
openssl version && nginx -v
Nun installieren wir uns die Entwicklertools damit wir anschließend OpenSSL in der neuen Version kompilieren können
yum install gcc gcc-c++ pcre-devel zlib-devel make unzip gd-devel perl-ExtUtils-Embed libxslt-devel openssl-devel perl-Test-Simple
yum groupinstall 'Development Tools'
Nun laden wir uns die derzeit aktuelle OpenSSL Version herunter, entpacken diese und installieren sie
cd /usr/src
wget https://www.openssl.org/source/old/1.1.1/openssl-1.1.1f.tar.gz
tar xvf openssl-1.1.1f.tar.gz
mv openssl-1.1.1f openssl
cd openssl
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl --libdir=/lib64 shared zlib-dynamic
make -j4
make test
make install
Wir haben die neueste Version von OpenSSL heruntergeladen, die zum Zeitpunkt des Schreibens dieses Beitrags openssl-1.1.1f ist. Danach dekomprimieren wir die Datei, benennen den Ordnernamen um und navigieren zum OpenSSL-Ordner. –prefix und –openssldir steuern die Konfiguration der installierten Komponenten. Das Verhalten und die Wechselwirkungen von –prefix und –openssldir unterscheiden sich geringfügig zwischen OpenSSL 1.0.2 und darunter und OpenSSL 1.1.0 und darüber. Setzen Sie außerdem –prefix und –openssldir auf denselben Pfad. Shared erzwingt das Erstellen von Shared Libraries und Zlib bedeutet, dass die Komprimierung mit Hilfe der Zlib-Bibliothek durchgeführt wird. Es lohnt sich, den make-Test auszuführen, um zu sehen, ob es unerwartete Fehler gibt. Wenn es welche gibt, müssen Sie diese beheben, bevor Sie die Bibliothek installieren.
Jetzt benennen wir die alten OpenSSL binaries um und erzeugen einen neuen symlink.
mv /usr/bin/openssl /usr/bin/openssl-backup
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
Nun testen wir das Ganze. Mit folgedem Befehl sollte dann auch TLSv1.3 angezeigt werden
openssl ciphers -v | awk '{print $2}' | sort | uniq
Jetzt haben wir das neue OpenSSL installiert, allerdings müssen wir jetzt noch nginx neu kompilieren, damit unsere neue Version auch verwendet wird. Dazu laden wir die aktuell neueste Version herunter:
cd /usr/src
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar xvf nginx-1.18.0.tar.gz
cd nginx-1.18.0
./configure --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx \
--modules-path=/usr/lib64/nginx/modules \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--http-client-body-temp-path=/var/lib/nginx/tmp/client_body\ --http-proxy-temp-path=/var/lib/nginx/tmp/proxy \
--http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi \
--http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi \
--http-scgi-temp-path=/var/lib/nginx/tmp/scgi \
--pid-path=/run/nginx.pid \
--lock-path=/run/lock/subsys/nginx --user=nginx \
--group=nginx \
--with-file-aio \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-stream_ssl_preread_module \
--with-http_addition_module \
--with-http_xslt_module=dynamic \
--with-http_image_filter_module=dynamic \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_degradation_module \
--with-http_slice_module \
--with-http_stub_status_module \
--with-http_perl_module=dynamic \
--with-http_auth_request_module \
--with-mail=dynamic \
--with-mail_ssl_module \
--with-pcre \
--with-pcre-jit \
--with-stream=dynamic \
--with-stream_ssl_module \
--with-openssl=/usr/src/openssl
make -j4
make install
Nun ist euer nginx bereit und in der Lage mit TLSv1.3 umzugehen.
Aktualisieren Sie Ihre Nginx-Konfiguration, um TLS 1.3 zu aktivieren.
Fügen Sie die folgenden Zeilen in den Server-Block Ihrer Nginx-Vhost-Konfiguration ein.
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;