In den meisten Serverbetriebssystemen werden OpenSSL-Versionen kleiner Version 3.5 verwendet, so dass der PQC Algorithmus nicht nativ unterstützt wird. Wir zeigen Ihnen, wie Sie den Webserver nginx dennoch damit absichern und härten können und ein A+ Rating bei https://www.ssllabs.com erhalten.

Bevor Sie mit der Einrichtung beginnen prüfen Sie bitte, ob der Webserver bereits Openssl 3.5.x verwendet oder wir manuell eingreifen müssen. Wechseln Sie dafür in den priviligierten Benutzermodus:
sudo -s
Führen Sie „nginx -V“ aus:
nginx -V
nginx version: nginx/1.29.3
built by gcc 12.2.0 (Debian 12.2.0-14+deb12u1)
built with OpenSSL 3.0.16 11 Feb 2025 (running with OpenSSL 3.0.17 1 Jul 2025)
TLS SNI support enabled
Das Beispiel zeigt Ihnen, dass unter Ubuntu 24 noch OpenSSL 3.0.16 verwendet wird. Am Beispiel Debian 13 wird hingegen „OpenSSL 3.5.1“ dargestellt:
nginx -V
nginx version: nginx/1.29.3
built by gcc 14.2.0 (Debian 14.2.0-19)
built with OpenSSL 3.5.1 1 Jul 2025
TLS SNI support enabled
Wird also keine OpenSSL-Version ab 3.5 verwendet so beginnen wir mit der Einrichtung der notwendigen Module.
apt install -y build-essential git cmake ninja-build libssl-dev
Klonen Sie nun das liboqs-Repository:
mkdir ~/nginx && cd ~/nginx
git clone --branch main https://github.com/open-quantum-safe/liboqs.git
Wechseln Sie in das Verzeichnis „liboqs“, erzeugen darin das Verzeichnis „build“ und wechseln dort hinein:
cd liboqs && mkdir build && cd build
Erstellen Sie nun die Komponenten und führen die Installation aus:
cmake -GNinja -DCMAKE_INSTALL_PREFIX=/usr/local -DOQS_DIST_BUILD=ON ..
ninja
ninja install
Klonen Sie nun das oqs-provider Projekt:
cd ~/nginx
git clone --branch main https://github.com/open-quantum-safe/oqs-provider.git
Wechseln Sie in das Verzeichnis „oqs-provider“, erzeugen darin das Verzeichnis „build“ und wechseln dort hinein:
cd oqs-provider && mkdir build && cd build
Erstellen Sie nun die Komponenten und führen die Installation aus:
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DOPENSSL_ROOT_DIR=/usr/local/ssl ..
make -j$(nproc)
make install
Um diese Erweiterung global nutzen zu können fügen wir die nachfolgenden Zeilen in die openssl.conf ein:
cp /etc/ssl/openssl.cnf /etc/ssl/openssl.cnf.bak
cat <<EOF >>/etc/ssl/openssl.cnf
# c-rieger.de - pqc-nginx
openssl_conf = openssl_init
[openssl_init]
providers = provider_sect
[provider_sect]
default = default_sect
oqsprovider = oqsprovider_sect
[default_sect]
activate = 1
[oqsprovider_sect]
activate = 1
module = /usr/lib/x86_64-linux-gnu/ossl-modules/oqsprovider.so
#
EOF
Passen Sie nun die vHost-Konfiguration an, bspw. nextcloud.conf:
nano /etc/nginx/conf.d/nextcloud.conf
und ergänzen diese beide Zeilen:
# ssl_ecdh_curve X448:secp521r1:secp384r1;
ssl_ecdh_curve X25519MLKEM768:X25519:prime256v1;# PQC curves

Führen Sie nun einen Test der Webserverkonfiguration aus
cd ~ && nginx -t
und starten den Webserver neu.
systemctl restart nginx.service

Ab sofort unterstützt Ihr Webserver den PQC (Post-Quantum Cryptography) Schlüsselaustausch.
Über Ihre Unterstützung würden wir uns sehr freuen – vorab vielen und herzlichen Dank dafür.
