Zum Hauptinhalt springen
  1. Projekte/

Zertifikatstest für SSL-Zertifikate

projekte php react next.js
Inhaltsverzeichnis

Einleitung
#

Verbindungen im Internet sollten zu 100% verschlüsselt erfolgen.
Leider birgt die Konfiguration von SSL-Zertifikaten einige Schwierigkeiten, ausserdem sind Fehlermeldungen bei verschlüsselten Verbindungen oft unverständlich.

Projektbeschrieb
#

Um die Konfiguration von SSL-Zertifikaten zu prüfen, habe ich mir ein PHP-Skript erstellt, welches im Hintergrund openssl aufruft und das Resultat des Befehls anzeigt.
Um die Dateneingabe und -ausgabe modern und einfach zu gestalten, habe ich ein “Frontend” (eine Webseite) mit dem Framework next.js basierend auf React erstellt.

Funktionen
#

Die Webseite bietet folgende Funktionen:

  • Im Frontend kann der Hostname, das Protokoll und der Port eingegeben werden.
  • Hostname, Protokoll und Port können auch mittels Query String definiert werden, so kann z.B. ein Link per E-Mail oder Messenger geteilt werden. Beispiel: https://gma.name/cert/?hostname=mail.cyon.ch&protocol=smtp
  • Zusätzlich können Optionen definiert werden, um z.B. die Verbindung mit gewissen Protokoll-Versionen (z.B. TLS1.1) zu verhindern oder zu erzwingen.
  • Das Backend prüft die Eingaben und stellt sicher, dass nur gültige Hostnamen verwendet werden können.
  • Das Backend führt den Befehl openssl mit den gewünschten Parametern aus und gibt die Ausgabe des Befehls ans Frontend zurück.
  • Das Frontend verbessert die Darstellung der Ausgabe und packt die Anzeige der Zertifikate in ein spezielles Control.

Ein SSL-Zertifikat wird üblicherweise als Base64 kodierter Text angezeigt. Der Text sieht etwa so aus: (Zertifikat für gma.name und www.gma.name vom 30.5.2023)

-----BEGIN CERTIFICATE-----
MIIFIjCCBAqgAwIBAgISBB+dm+GddAJRFn9yprqV1smgMA0GCSqGSIb3DQEBCwUA
MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD
EwJSMzAeFw0yMzA1MzAxOTQ1MThaFw0yMzA4MjgxOTQ1MTdaMBMxETAPBgNVBAMT
CGdtYS5uYW1lMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtz7z5ZCc
+JeLsZzsiOzw7U0UFFdemP4uw7Awq5UhCgufC4FpOinpYfYbHjnFUlEp2IIQIPoq
0R0iQNBJgbt6kGCRwtLbIVEe71MXq0+bRgEl6bPEOImxM1tK9R0m1ElLoZZBOXxJ
KB2VzzwgqowGWUYOJKRQWJUa+SYx1aJL34V8VOWBNdHGDmEDHFrY9zIEgjipdmhx
jaPFRKgE0Sa/aoIC8ROtBSP25noE5Mq6QlI1Shn7fht0t+qtImB/QqFBN61C91iQ
O3I6L801dADYWRdMdBKSpk68STOoNgHNLwf0V9SWUHGxvx4JEySe5XE/fn/pjm7U
l6CmKb75M2ruWwIDAQABo4ICTzCCAkswDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQW
MBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQr
nSFa6Nrz0TZe3tU2H2bDf3YksDAfBgNVHSMEGDAWgBQULrMXt1hWy65QCUDmH6+d
ixTCxjBVBggrBgEFBQcBAQRJMEcwIQYIKwYBBQUHMAGGFWh0dHA6Ly9yMy5vLmxl
bmNyLm9yZzAiBggrBgEFBQcwAoYWaHR0cDovL3IzLmkubGVuY3Iub3JnLzAhBgNV
HREEGjAYgghnbWEubmFtZYIMd3d3LmdtYS5uYW1lMEwGA1UdIARFMEMwCAYGZ4EM
AQIBMDcGCysGAQQBgt8TAQEBMCgwJgYIKwYBBQUHAgEWGmh0dHA6Ly9jcHMubGV0
c2VuY3J5cHQub3JnMIIBAgYKKwYBBAHWeQIEAgSB8wSB8ADuAHUAtz77JN+cTbp1
8jnFulj0bF38Qs96nzXEnh0JgSXttJkAAAGIbmhx5gAABAMARjBEAiBvJqyRrK5r
uW+D2c3On7fd1UsvZS0p+EdwQBjwVYK0VwIgMjgkwCJg2MSeSi7dzEd+WvXD50+J
z+SYIibOLH2xLZ4AdQB6MoxU2LcttiDqOOBSHumEFnAyE4VNO9IrwTpXo1LrUgAA
AYhuaHH4AAAEAwBGMEQCIE0HhBEgrTr5XMr6i9LtehYnhKI2ST82jyRPQr8GNj3p
AiAB0adoX1zISvenHA2mOJLOW4jwsXr9RTt4Zjk/RJnFrTANBgkqhkiG9w0BAQsF
AAOCAQEAaNePlP9nxqJdii4JgRO0//Y5zFkZskDAtWQDoWzNheenC4gIN39JAWXV
B7X+TOC0lTprpqrg3/hTUjIMUU6iE/hWJW0EDg+zr8YGn1G5Sfh8USui9DILBPAr
en/gGC3Z34l1fFd0rsYeLwwWTuA5Gos0DdsRAndXG+pbeb00TiKXWoLDO8o8A0q+
f4EI1IzYANyeO5S4KEcQx1LXDU+m/UO3lG8tS4ahHRzNYtIze5qScb04BKhRoH0g
qJPuG0YlD16yCTGd2dp6mIX0ACaOcY7rTHY88KLxKCIgV4FvwWnQD+rT8HamoQGu
xh+ucWS3K4ZgfkiO3UxStNDkaHZ4CQ==
-----END CERTIFICATE-----

Das Control “Zertifikatdetails” bereitet die Anzeige dieser Zertifikate auf und bietet zusätzlich folgende Funktionen:

  • Details anzeigen:
    • Die Informationen des Zertifikats werden über openssl in lesbare Form gebracht.
    • Alle Informationen werden dem Benutzer als Tabelle angezeigt.
    • Gültigkeitsinformationen (gültig von/gültig bis) werden vom Unix-Zeitstempel in ein lesbares Datum/Uhrzeit Format umgewandelt.
    • Hostnamen und alternative Namen des Zertifikats werden in grün hervorgehoben.
    • URLs zur Gültigkeitsprüfung des Zertifikats werden in blau hervorgehoben.

Link #

Das Projekt kann unter folgender URL aufgerufen werden: gma.name/cert

Rückmeldungen
#

Ich bin um Meldungen von Fehlern oder allgemeine Rückmeldungen sehr froh. Nutze dafür den “Kontakt” Link oben (@-Symbol).

Verwandte Artikel

Sicheres Passwort generieren
projekte php react next.js
Arduino Projekte
projekte mikrokontroller arduino leds
Selbstportraits
fotos