OpenSSL wird überflüssig: TlsLib4Pascal ist eine neue Bibliothek für TLS (Nachfolger von SSL), die einen vollständig verwalteten TLS 1.2 und 1.3 Stack bereitstellt.
↗https://github.com/Xor-el/TlsLib4Pascal
Licence: MIT, © 2026 Ugochukwu Mmaduekwe
Die Bibliothek implementiert TLS 1.2 und TLS 1.3 von Grund auf neu, ohne dabei OpenSSL oder eine TLS-Engine des Betriebssystems wie SChannel (Windows Secure Channel) zu verwenden. Der Code ist reines Object Pascal und läuft dadurch gleichermaßen unter Windows, Linux, macOS und den BSDs.
Kryptografie: Als einzige Abhängigkeit wird ↗CryptoLib4Pascal genutzt, das die eigentlichen kryptografischen Primitive liefert. Das Krypto-Backend ist über eine ICryptoProvider-Schnittstelle austauschbar, so dass Entwickler bei Bedarf ein anderes Backend einsetzen können.
Architektur: Den Kern bildet eine Sans-IO-Engine, die keine Sockets, Threads oder Timer besitzt. Darauf setzen drei Integrationsebenen auf: Ebene 1 ist eine einfache Fassade namens TTlsLib. Ebene 2 ist TTlsStream, ein Standard-TStream, der TLS über eine Transport-Schnittstelle mit nur zwei Methoden spricht. Und Ebene 3 liefert fertige Adapter für mORMot, Indy, Synapse und fcl-net. Jeder Adapter klinkt sich in die eigene SSL-Nahtstelle des jeweiligen Stacks ein, so dass bestehender Code oft nur eine neue uses-Klausel benötigt.
Protokoll-Merkmale: TLS 1.3 verwendet ausschließlich AEAD-Cipher-Suites, während TLS 1.2 auf ein gehärtetes ECDHE- + AEAD-Profil beschränkt bleibt. Schwache Optionen wie CBC-HMAC, RC4 und statischer RSA-Schlüsselaustausch sind bewusst ausgeschlossen, und ein Post-Quanten-Hybrid-Schlüsselaustausch (↗X25519MLKEM768) ist standardmäßig in jedem Preset aktiviert.
Trust and Verification: Die Bibliothek führt eine vollständige PKIX-Pfad-Validierung durch, prüft Hostnamen gegen die SANs des Zertifikats und unterstützt sowohl Certificate Pinning als auch gestapeltes oder Live-OCSP-/CRL-Widerruf. Das Vertrauen auf das Betriebssystem (Zertifikatsspeicher) lässt sich optional als Paket hinzufügen. Dabei arbeitet die Bibliothek fail-closed: sie schließt keinen Handshake ab, den sie nicht verifizieren kann.
Getestet wird die Bibliothek gegen die BoGo-Konformitätssuite von BoringSSL, die als verpflichtendes CI-Gate läuft, sowie gegen byte-exakte RFC-8448-Testvektoren, eine OpenSSL-Interoperabilitätsmatrix und strukturbewusstes Fuzzing.
Anwendungsfälle: TlsLib4Pascal passt zu jedem Pascal-Projekt, das TLS ohne OpenSSL-Abhängigkeit benötigt. Typische Szenarien:
Zertifikat und privater Schlüssel: Die Bibliothek erzeugt selbst keine Zertifikate, sondern erwartet zwei PEM-kodierte Eingaben - eine Zertifikatskette, leaf-first, also das eigene Server-Zertifikat, evtl. gefolgt von Zwischen-Zertifikaten, sowie einen dazu passenden privaten Schlüssel, der unverschlüsselt oder mit einem separat übergebenen Passwort verschlüsselt sein kann.
Woher diese Dateien stammen, hängt von der jeweiligen Bereitstellung ab. Für öffentliche Produktionsserver empfiehlt sich ein Zertifikat einer öffentlichen CA, meist kostenlos über ↗Let's Encrypt, wobei Tools wie Certbot oder win-acme fullchain.pem und privkey.pem direkt erzeugen.
Interne oder Entwicklungs-Server kommen dagegen häufig mit einem selbstsignierten Zertifikat aus,
das sich einmalig mit einem beliebigen Standardwerkzeug erstellen lässt, etwa dem openssl-req Befehl
oder PowerShells New-SelfSignedCertificate.
Ein solches Werkzeug wird dabei nur offline zur Erzeugung der PEM-Dateien genutzt
und ist keine Laufzeitabhängigkeit von TlsLib4Pascal selbst.
Auch PKCS#12-/.pfx-Bundles werden unterstützt, allerdings nur über die native API TTlsPresets ... WithCredentialPkcs12 der Bibliothek
und nicht über TFpHttpServer.CertificateData, das separate PEM-Dateien erwartet.
Eine Konsequenz selbstsignierter Zertifikate ist, dass die clientseitige PKIX-Validierung von TlsLib4Pascal sie standardmäßig ablehnt, da keine öffentliche CA dahintersteht. Wer sich mit einem selbst-signierten Testserver verbinden möchte, muss das Zertifikat daher entweder explizit als Trust Anchor hinzufügen oder - nur für lokale Tests, niemals in Produktion - die Verifizierung vollständig über die klar gekennzeichnete „dangerous" API-Oberfläche umgehen.
Diese Seite auf englisch: TLS Stack for FreePascal