Ablaufdatum von SSL-Zertifikat herausfinden

Erstellt: 20.05.2022 Bearbeitet: 05.12.2025

Oft stellt sich die Frage, wie lange ein Zertifikat noch gültig ist oder welche Version gerade live ist. Daher hier eine kleine Liste mit nützlichen Argumenten für OpenSSL.

SSL-Abfrage einer Webseite

echo | openssl s_client -servername $DOMAIN -connect HOST:PORT 2>/dev/null | openssl x509 -noout -enddate

$DOMAIN ist die Domain der Webseite, z. B. blog.medi.li, und HOST:PORT der Host oder die IP und der Port, meist 443, also z. B. blog.medi.li:443

Ablaufdatum eines .pem- oder .crt-Zertifikats

openssl x509 -enddate -noout -in file.pem

oder

cat file.pem | openssl x509 -noout -enddate

Ablaufdatum einer PKCS12-Datei

openssl pkcs12 -in mycert.p12 -nodes | openssl x509 -noout -enddate

Hinweis zu nginx

Der Webserver nginx benötigt übrigens ein Reload-Signal, um ein aktualisiertes Zertifikat neu zu laden!

Mermaid Support für das Blog

Erstellt: 16.04.2022 Bearbeitet: 02.10.2025

Mermaid ist eine Javascript basiertes diagram und Chart Lib, bei der man mit einfachen text bausteinen, Diagramme Schreiben kann.

Beispiele

    ​~~~mermaid
    graph TB
        A --> B
        B --> C
    ​~~~
graph TB A --> B B --> C
    ​~~~mermaid
    erDiagram
            CUSTOMER }|..|{ DELIVERY-ADDRESS : has
            CUSTOMER ||--o{ ORDER : places
            CUSTOMER ||--o{ INVOICE : "liable for"
            DELIVERY-ADDRESS ||--o{ ORDER : receives
            INVOICE ||--|{ ORDER : covers
            ORDER ||--|{ ORDER-ITEM : includes
            PRODUCT-CATEGORY ||--|{ PRODUCT : contains
            PRODUCT ||--o{ ORDER-ITEM : "ordered in"
    ​~~~
erDiagram CUSTOMER }|..|{ DELIVERY-ADDRESS : has CUSTOMER ||--o{ ORDER : places CUSTOMER ||--o{ INVOICE : "liable for" DELIVERY-ADDRESS ||--o{ ORDER : receives INVOICE ||--|{ ORDER : covers ORDER ||--|{ ORDER-ITEM : includes PRODUCT-CATEGORY ||--|{ PRODUCT : contains PRODUCT ||--o{ ORDER-ITEM : "ordered in"
    ~~~mermaid
    stateDiagram-v2
        [*] --> Still
        Still --> [*]
        Still --> Moving
        Moving --> Still
        Moving --> Crash
        Crash --> [*]
    ​~~~
stateDiagram-v2 [*] --> Still Still --> [*] Still --> Moving Moving --> Still Moving --> Crash Crash --> [*]
    ~~~mermaid
    gitGraph
    commit
    commit
    branch two
    commit
    checkout main
    commit
    branch three
    checkout three
    commit
    commit
    checkout main
    commit
    commit
    branch one
    checkout one
    commit
    checkout two
    commit
    checkout main
    merge two
    checkout one
    merge two
    merge three
    commit
    commit
    checkout main
    merge one
    ​~~~
gitGraph commit commit branch two commit checkout main commit branch three checkout three commit commit checkout main commit commit branch one checkout one commit checkout two commit checkout main merge two checkout one merge two merge three commit commit checkout main merge one
    ~~~mermaid
    sequenceDiagram
            title: FancySequenceDiagramaccDescription Test a description
            participant Alice
            participant Bob
            participant John as John<br />Second Line
            rect rgb(20, 20, 100)
            rect rgb(0, 5, 200)
            Alice ->> Bob: Hello Bob, how are you?
            Bob-->>John: How about you John?
            end
            Bob--x Alice: I am good thanks!
            Bob-x John: I am good thanks!
            Note right of John: John thinks a long<br />long time, so long<br />that the text does<br />not fit on a row.
            Bob-->Alice: Checking with John...
            Note over John:wrap: John looks like he's still thinking, so Bob prods him a bit.
            Bob-x John: Hey John - we're still waiting to know<br />how you're doing
            Note over John:nowrap: John's trying hard not to break his train of thought.
            Bob-x John:wrap: John! Are you still debating about how you're doing? How long does it take??
            Note over John: After a few more moments, John<br />finally snaps out of it.
            end
            alt either this
            Alice->>+John: Yes
            John-->>-Alice: OK
            else or this
            Alice->>John: No
            else or this will happen
            Alice->John: Maybe
            end
            par this happens in parallel
            Alice -->> Bob: Parallel message 1
            and
            Alice -->> John: Parallel message 2
            end
    ​~~~
sequenceDiagram title: FancySequenceDiagramaccDescription Test a description participant Alice participant Bob participant John as John
Second Line rect rgb(20, 20, 100) rect rgb(0, 5, 200) Alice ->> Bob: Hello Bob, how are you? Bob-->>John: How about you John? end Bob--x Alice: I am good thanks! Bob-x John: I am good thanks! Note right of John: John thinks a long
long time, so long
that the text does
not fit on a row. Bob-->Alice: Checking with John... Note over John:wrap: John looks like he's still thinking, so Bob prods him a bit. Bob-x John: Hey John - we're still waiting to know
how you're doing Note over John:nowrap: John's trying hard not to break his train of thought. Bob-x John:wrap: John! Are you still debating about how you're doing? How long does it take?? Note over John: After a few more moments, John
finally snaps out of it. end alt either this Alice->>+John: Yes John-->>-Alice: OK else or this Alice->>John: No else or this will happen Alice->John: Maybe end par this happens in parallel Alice -->> Bob: Parallel message 1 and Alice -->> John: Parallel message 2 end

Oder in einfacher

    ~~~mermaid
        sequenceDiagram
            Alice->>+John: Hello John, how are you?
            Alice->>+John: John, can you hear me?
            John-->>-Alice: Hi Alice, I can hear you!
            John-->>-Alice: I feel great!
    ​~~~
sequenceDiagram Alice->>+John: Hello John, how are you? Alice->>+John: John, can you hear me? John-->>-Alice: Hi Alice, I can hear you! John-->>-Alice: I feel great!
    ~~~mermaid
    pie
    "Dogs" : 42.96
    "Cats" : 50.05
    "Rats" : 10.01
    ​~~~
pie "Dogs" : 42.96 "Cats" : 50.05 "Rats" : 10.01

Eine Verabschiedung von 2 netten Kollegen, mit Grillen in Waren

Erstellt: 14.04.2022 Bearbeitet: 02.10.2025
Lecker Fischbrötchen am Hafen, wo die Bettler auch nicht lang auf sich warten lassen haben und uns ein ständischen gaben.

Das war ein Super Wochenende und eine schöne Verabschiedung von Menschen, die ich sehr schätze und die von Kollegen zu Freunden wurden.

Netzwerk Spielereien

Erstellt: 05.04.2022 Bearbeitet: 05.12.2025

UDP-Verbindung mit netcat und tcpdump prüfen

Auf dem Zielhost kann man z. B. mit tcpdump schauen, ob Pakete ankommen.

tcpdump -n port 10011 -vv

Und von einem anderen Host kann man diesen Port z. B. mit netcat anpingen.

nc -vz -u 192.168.100.100 10011
graph RL A[nc] -->|UDP ping| B(tcpdump port 10011)

Netcat als Sender und Empfänger über UDP benutzen

Mit -l kann man netcat auch lauschen lassen (Empfänger).

nc -luk 192.168.100.100 20000

Und mit -uv eine Verbindung von einem anderen Client herstellen und etwas zum Host senden (Sender).

nc -uv 192.168.100.100 20000
hello host!<ENTER>

Das sollte auf dem Empfänger ein hello host! ausgeben.

graph LR A[Sender] -->|UDP package| B(Empfänger)

SPF-Record erstellen und prüfen

Erstellt: 28.03.2022 Bearbeitet: 05.12.2025

SPF (Sender Policy Framework) ist ein recht einfaches Verfahren, um Missbrauch der eigenen E-Mails ein wenig zu verhindern. Mit dem SPF-Domain-Record gibt man an, aus welchen Netzen E-Mails der eigenen Domain versendet werden dürfen.

SPF-Record abfragen

Der einfachste Weg ist wohl, mit host oder dig eine einfache DNS-Abfrage zu machen. Das geht z. B. mit

host -t TXT gmx.de | grep -i spf
dig heise.de TXT | grep -i spf
dig gmx.de TXT | grep -i spf
dig gmx.net TXT | grep -i spf
nslookup -q=TXT gmx.net | grep -i spf

Bedeutung der Felder

Feld Bedeutung
v Version des Records, z. B. v=spf1
ip4 IPv4-Adresse oder Adressbereich, z. B. ip4:1.2.3.0/24
ip6 IPv6-Adresse oder Adressbereich, z. B. ip6:2a02:2e0:3fe:1001::/64
a Ein A- oder AAAA-Record der befragten (oder explizit angegebenen) Domäne, der die IP-Adresse des Senders enthält
mx Ein MX-Record der befragten (oder explizit angegebenen) Domäne, der die IP-Adresse des Senders enthält
-all Alle anderen hier nicht aufgeführten Sender sind nicht autorisiert und sollen abgewiesen werden.
~all Softfail, nicht autorisierte Sender; der Empfänger soll diesen Fehlschlag aber großzügig behandeln.
?all Neutral, die Direktive definiert Sender, über deren Legitimität nichts ausgesagt werden soll; der Sender muss so behandelt werden, als wäre kein Qualifikator angegeben.
include Eine zusätzliche SPF-Anfrage zur im Include-Statement angegebenen Domain, die die IP-Adresse des Senders enthält, z. B. include:_spfdiv.heise.de
redirect Der SPF-Record einer anderen Domain soll eingeholt und ausgewertet werden, z. B. redirect=gmx.net

Beispiel

Aus den Testabfragen sollte sich der restliche Aufbau von selbst erklären.

Im Grunde ist es immer „Version, Regelwerk der eigenen Infrastruktur, Rest mit all“.

Beispiel: v=spf1 mx:mx.domain.com a:domain.com ip4:1.2.3.0/24 ~all

 1  2  3  4  5  6  7  
Chronologische Sortierung