{"id":15574,"date":"2026-09-05T14:58:37","date_gmt":"2026-09-05T12:58:37","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/werkzeuge\/domain-rdap-certificate-transparency-subdomain-lookup\/"},"modified":"2026-09-05T14:58:37","modified_gmt":"2026-09-05T12:58:37","slug":"domain-rdap-certificate-transparency-subdomain-lookup","status":"publish","type":"page","link":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/domain-rdap-certificate-transparency-subdomain-lookup\/","title":{"rendered":"Domain-RDAP- und Certificate-Transparency-Abfrage: Registrar, Ablauf, vergessene Subdomains"},"content":{"rendered":"<div class=\"gtm-analyser-container\" style=\"background: var(--bg-panel, #1e1e24); padding: 25px; border-radius: 8px; border: 1px solid var(--border, #2a2a35);\">\n<p style=\"color: var(--text-secondary, #a0a0b0); margin-bottom: 20px;\">Zwei \u00f6ffentliche Register beschreiben eine Domain, ohne ihre Server anzufassen. RDAP, der Nachfolger von WHOIS, ist das, was die Registry wei\u00df: Registrar, Registrierungs- und Ablaufdatum, Statuscodes wie eine Transfersperre, Nameserver, DNSSEC-Delegation. Certificate Transparency ist das, was jede Zertifizierungsstelle seit 2018 protokollieren muss: jeder Hostname, der je ein Zertifikat bekommen hat. Zusammen gelesen beantworten sie Fragen, die ein Seitenbetreiber selten stellt, bis es sp\u00e4t ist: Wann l\u00e4uft die Domain ab, ist sie gegen Transfer gesperrt, und welche Subdomains existieren noch irgendwo, weil einmal ein Zertifikat f\u00fcr sie ausgestellt wurde.<\/p>\n<div style=\"margin-bottom: 14px;\">\n        <label for=\"rc-domain\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Domain (ohne www)<\/label><br \/>\n        <input id=\"rc-domain\" type=\"text\" value=\"wikipedia.org\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; box-sizing: border-box; font-family: monospace;\">\n    <\/div>\n<p style=\"color: var(--text-secondary, #a0a0b0); font-size: 0.82rem; margin-bottom: 16px;\">Von diesem Server aus: eine RDAP-Abfrage \u00fcber rdap.org, die zur zust\u00e4ndigen Registry weiterleitet, bei Registries ohne RDAP eine whois-Abfrage, und eine Abfrage bei crt.sh f\u00fcr die Zertifikatslogs. Nichts auf der Domain selbst wird kontaktiert. Die Abfrage ist durch reCAPTCHA v3 gesch\u00fctzt; die aufrufende IP-Adresse und die Domain werden eine Stunde lang gespeichert, um die Rate zu begrenzen.<\/p>\n<p>    <button id=\"rc-btn\" class=\"button\" style=\"background: var(--accent, #7ee787); color: var(--on-accent, #0b1114); border: none; padding: 12px 24px; border-radius: 6px; font-weight: 700; cursor: pointer;\">Domain abfragen<\/button><\/p>\n<div id=\"rc-ausgabe\" style=\"margin-top: 22px;\"><\/div>\n<p style=\"color: var(--text-secondary, #a0a0b0); font-size: 0.8rem; margin: 24px 0 0;\">Grenzen, die dazugeh\u00f6ren: RDAP-Daten h\u00e4ngen von der Registry ab, und manche (etwa .de) ver\u00f6ffentlichen kein RDAP, dann wird whois-Text gelesen, mit weniger Feldern; Antworten von crt.sh werden bei 3 MB abgeschnitten, was bei sehr gro\u00dfen Domains alte Zertifikate ausl\u00e4sst; ein Name in den Logs belegt, dass ein Zertifikat ausgestellt wurde, nicht, dass der Host noch antwortet; und Inhaberdaten werden nicht gezeigt, weil Registries sie nicht mehr ver\u00f6ffentlichen.<\/p>\n<\/div>\n<p><script>\n(function () {\n    'use strict';<\/p>\n<p>    const T = {\"einleitung\":\"Zwei \u00f6ffentliche Register beschreiben eine Domain, ohne ihre Server anzufassen. RDAP, der Nachfolger von WHOIS, ist das, was die Registry wei\u00df: Registrar, Registrierungs- und Ablaufdatum, Statuscodes wie eine Transfersperre, Nameserver, DNSSEC-Delegation. Certificate Transparency ist das, was jede Zertifizierungsstelle seit 2018 protokollieren muss: jeder Hostname, der je ein Zertifikat bekommen hat. Zusammen gelesen beantworten sie Fragen, die ein Seitenbetreiber selten stellt, bis es sp\u00e4t ist: Wann l\u00e4uft die Domain ab, ist sie gegen Transfer gesperrt, und welche Subdomains existieren noch irgendwo, weil einmal ein Zertifikat f\u00fcr sie ausgestellt wurde.\",\"label_domain\":\"Domain (ohne www)\",\"datenschutz\":\"Von diesem Server aus: eine RDAP-Abfrage \u00fcber rdap.org, die zur zust\u00e4ndigen Registry weiterleitet, bei Registries ohne RDAP eine whois-Abfrage, und eine Abfrage bei crt.sh f\u00fcr die Zertifikatslogs. Nichts auf der Domain selbst wird kontaktiert. Die Abfrage ist durch reCAPTCHA v3 gesch\u00fctzt; die aufrufende IP-Adresse und die Domain werden eine Stunde lang gespeichert, um die Rate zu begrenzen.\",\"knopf\":\"Domain abfragen\",\"laeuft\":\"Registry und Zertifikatslogs werden gefragt...\",\"grenze\":\"Grenzen, die dazugeh\u00f6ren: RDAP-Daten h\u00e4ngen von der Registry ab, und manche (etwa .de) ver\u00f6ffentlichen kein RDAP, dann wird whois-Text gelesen, mit weniger Feldern; Antworten von crt.sh werden bei 3 MB abgeschnitten, was bei sehr gro\u00dfen Domains alte Zertifikate ausl\u00e4sst; ein Name in den Logs belegt, dass ein Zertifikat ausgestellt wurde, nicht, dass der Host noch antwortet; und Inhaberdaten werden nicht gezeigt, weil Registries sie nicht mehr ver\u00f6ffentlichen.\",\"h_registrierung\":\"Registrierung\",\"quelle_whois\":\"aus whois, kein RDAP bei dieser Registry\",\"zeile_domain\":\"Domain\",\"zeile_registrar\":\"Registrar\",\"zeile_registriert\":\"Registriert\",\"zeile_ablauf\":\"L\u00e4uft ab\",\"zeile_geaendert\":\"Zuletzt ge\u00e4ndert\",\"zeile_status\":\"Status\",\"zeile_nameserver\":\"Nameserver\",\"zeile_dnssec\":\"DNSSEC-Delegation\",\"zeile_dauer\":\"Dauer\",\"zeile_limit\":\"Abfragen in dieser Stunde noch\",\"wert_unbekannt\":\"unbekannt\",\"wert_keine_daten\":\"keine Registrierungsdaten lesbar\",\"ja\":\"ja\",\"nein\":\"nein\",\"h_ct\":\"Certificate Transparency\",\"zeile_zertifikate\":\"Protokollierte Zertifikate\",\"zeile_namen\":\"Verschiedene Hostnamen\",\"zeile_aussteller\":\"Aussteller\",\"ct_kurz\":\"{zertifikate}, davon {aktiv} noch g\u00fcltig, {neu} in den letzten 30 Tagen ausgestellt\",\"spalte_name\":\"Hostname\",\"spalte_erste\":\"Zuerst gesehen\",\"spalte_letzte\":\"Zuletzt g\u00fcltig bis\",\"spalte_n\":\"Zert.\",\"spalte_zustand\":\"Zustand\",\"name_aktiv\":\"g\u00fcltiges Zertifikat\",\"name_abgelaufen\":\"kein g\u00fcltiges Zertifikat\",\"name_wildcard\":\"Platzhalter\",\"h_befunde\":\"Befunde\",\"stufe_hoch\":\"Hoch\",\"stufe_mittel\":\"Mittel\",\"stufe_niedrig\":\"Niedrig\",\"stufe_info\":\"Hinweis\",\"stufe_gut\":\"In Ordnung\",\"keine_befunde\":\"Nichts zu berichten.\",\"urteil_gut\":\"Registrierung und Zertifikatsgeschichte zeigen nichts, das Handeln verlangt.\",\"urteil_warnung\":\"Etwas braucht in den n\u00e4chsten Wochen Aufmerksamkeit.\",\"urteil_kritisch\":\"Die Domain l\u00e4uft demn\u00e4chst ab, ist abgelaufen oder gesperrt.\",\"fehler_kein_token\":\"Die Pr\u00fcfung konnte nicht starten, weil reCAPTCHA nicht geladen wurde.\",\"fehler_captcha\":\"reCAPTCHA hat die Anfrage als automatisiert eingestuft. Ein Neuladen der Seite hilft in der Regel.\",\"fehler_zu_viele\":\"Die Grenze von {limit} Abfragen je Stunde f\u00fcr diese Adresse ist erreicht.\",\"fehler_adresse\":\"Diese Domain l\u00e4sst sich nicht verwenden.\",\"fehler_zaehler\":\"Der Z\u00e4hler ist nicht erreichbar, deshalb wurde nichts gepr\u00fcft.\",\"fehler_pruefdienst\":\"Der reCAPTCHA-Dienst war nicht erreichbar.\",\"fehler_aufbau\":\"Der Dienst ist nicht richtig eingerichtet. Der Fehler liegt auf dieser Seite.\",\"fehler_eingabe\":\"Die Anfrage war nicht lesbar.\",\"fehler_methode\":\"Falsche Anfragemethode.\",\"fehler_netz\":\"Der Dienst war nicht erreichbar.\",\"fehler_antwort\":\"Die Antwort war nicht lesbar.\",\"fehler_unbekannt\":\"Etwas ging schief, wof\u00fcr es keine eigene Meldung gibt.\",\"grund_leer\":\"Es wurde nichts eingegeben.\",\"grund_zu_lang\":\"Die Eingabe ist zu lang.\",\"grund_kein_punkt\":\"Die Domain braucht mindestens einen Punkt.\",\"grund_hostform\":\"Es wird ein Domainname gebraucht, keine IP-Adresse.\",\"befund_rdap_fehlt\":\"Keine Registrierungsdaten ({status} {fehler}) || Weder RDAP noch whois haben f\u00fcr diese Domain etwas Lesbares geliefert. Entweder ist sie nicht registriert, oder die Registry antwortet in einem Format, das diese Pr\u00fcfung nicht liest.\",\"befund_whois_rueckfall\":\"Registry ohne RDAP: stattdessen whois-Text gelesen || Manche Registries, .de darunter, ver\u00f6ffentlichen keinen RDAP-Dienst. Der whois-Text tr\u00e4gt weniger Felder und kein Standardformat, Daten und Status k\u00f6nnen fehlen.\",\"befund_registrierung\":\"Registrar {registrar} (IANA {iana}), registriert {registriert}, zuletzt ge\u00e4ndert {geaendert} || Was die Registry \u00fcber die Domain festh\u00e4lt.\",\"befund_alter\":\"Alter der Domain: {jahre} Jahre || \u00c4ltere Domains haben Gewicht bei Spamfiltern, Suchmaschinen und Zertifizierungsstellen gleicherma\u00dfen.\",\"befund_abgelaufen\":\"Die Domain ist am {datum} abgelaufen, vor {tage} Tag(en) || Nach Ablauf halten die meisten Registries den Namen in einer Gnadenfrist, dann in der Wiederherstellungsphase, dann geben sie ihn frei. Mail und Web funktionieren in dieser Zeit nicht. Verl\u00e4ngern ist jetzt das Einzige, was z\u00e4hlt.\",\"befund_laeuft_ab\":\"Die Domain l\u00e4uft in {tage} Tag(en) ab, am {datum} || Weniger als ein Monat. Ist die automatische Verl\u00e4ngerung nicht eingerichtet oder die Zahlungsart abgelaufen, verf\u00e4llt die Domain mit. Ein Blick zum Registrar ist heute f\u00e4llig.\",\"befund_laeuft_bald_ab\":\"Die Domain l\u00e4uft in {tage} Tagen ab, am {datum} || Innerhalb von drei Monaten. Zeit, sich zu vergewissern, dass die Verl\u00e4ngerung automatisch l\u00e4uft und die Kontaktadresse beim Registrar noch funktioniert.\",\"befund_ablauf_ok\":\"Die Domain ist bis {datum} registriert ({tage} Tage) || Der Ablauf ist derzeit kein Thema.\",\"befund_ablauf_unbekannt\":\"Kein Ablaufdatum verf\u00fcgbar || Diese Registry ver\u00f6ffentlicht es nicht, was bei L\u00e4nderdomains \u00fcblich ist.\",\"befund_status_hold\":\"Domain gesperrt oder vor der L\u00f6schung: {liste} || Ein Hold-Status nimmt die Domain aus dem DNS; pendingDelete hei\u00dft, sie wird gleich freigegeben. So oder so sind Seite und Mail weg oder gleich weg. Der Registrar kann sagen, warum.\",\"befund_transfer_gesperrt\":\"Transfersperre gesetzt ({liste}) || Ein Wechsel zu einem anderen Registrar verlangt erst das Aufheben der Sperre. Das ist der \u00fcbliche Schutz gegen Domain-Diebstahl und sollte anbleiben.\",\"befund_transfer_offen\":\"Keine Transfersperre (Status: {liste}) || Ohne clientTransferProhibited braucht ein Transferantrag nur den Auth-Code. Die meisten Registrare bieten die Sperre kostenlos an; bei jeder Domain, die z\u00e4hlt, sollte sie an sein.\",\"befund_status_liste\":\"Statuscodes: {liste} || Die EPP-Statuscodes, die die Registry meldet.\",\"befund_nameserver\":\"{n} Nameserver: {liste} || Die Server, an die die Registry die Domain delegiert.\",\"befund_nameserver_einer\":\"Nur ein Nameserver || Ein einzelner Nameserver ist ein einzelner Ausfallpunkt f\u00fcr die ganze Domain. Registries verlangen zwei; die meisten DNS-Anbieter geben mindestens zwei.\",\"befund_nameserver_ein_anbieter\":\"Alle Nameserver unter {anbieter} || In Ordnung bei einem verwalteten DNS-Anbieter mit Anycast; ein Risiko, wenn es ein einzelner kleiner Host ist, weil die Domain dann ganz an diesem Anbieter h\u00e4ngt.\",\"befund_nameserver_fehlen\":\"Keine Nameserver eingetragen || Die Registry hat keine Delegation. Die Domain l\u00f6st nicht auf, bis Nameserver gesetzt sind.\",\"befund_dnssec_ja\":\"DNSSEC-Delegation signiert || Die Registry h\u00e4lt einen DS-Eintrag f\u00fcr die Domain, Resolver k\u00f6nnen ihre Antworten validieren. Voraussetzung f\u00fcr DANE.\",\"befund_dnssec_nein\":\"Keine DNSSEC-Delegation || Antworten f\u00fcr diese Domain lassen sich nicht validieren. Optional; die meisten Domains kommen ohne aus, und ein kaputtes DNSSEC nimmt die Domain vom Netz, also sorgf\u00e4ltig oder gar nicht.\",\"befund_ct_fehlt\":\"Zertifikatslogs nicht verf\u00fcgbar ({status} {fehler}) || crt.sh hat nicht rechtzeitig geantwortet oder einen Fehler geliefert. Es ist ein Freiwilligendienst und bei gro\u00dfen Domains oft langsam; ein sp\u00e4terer Versuch klappt meist.\",\"befund_ct\":\"{zertifikate} Zertifikate f\u00fcr {namen} Hostnamen protokolliert, {aktiv} noch g\u00fcltig, {neu} in den letzten 30 Tagen ausgestellt || Jedes \u00f6ffentlich vertrauensw\u00fcrdige Zertifikat wird protokolliert; das ist die vollst\u00e4ndige Geschichte, die die Logs zur Domain halten.\",\"befund_ct_gekappt\":\"Antwort der Zertifikatslogs bei 3 MB abgeschnitten || Sehr gro\u00dfe Domains haben mehr Geschichte, als hineinpasst; die \u00e4ltesten Eintr\u00e4ge fehlen.\",\"befund_ct_wildcard\":\"{n} Platzhalter-Zertifikatsname(n): {liste} || Ein Platzhalter deckt jeden Hostnamen eine Ebene darunter. Bequem, aber ein geleakter Schl\u00fcssel deckt sie alle auf einmal.\",\"befund_ct_subdomains\":\"{n} Subdomain(s) in den Logs, {aktiv} mit g\u00fcltigem Zertifikat: {liste} || Hostnamen jenseits der Domain und www. Jeder ist ein Host, der existiert oder existierte und erreichbar genug war, um ein Zertifikat zu bekommen.\",\"befund_ct_vergessen\":\"{n} Subdomain(s) seit mehr als 90 Tagen ohne g\u00fcltiges Zertifikat: {liste} || Namen, die einmal ein Zertifikat hatten und nicht erneuert haben. Oft vergessene Hosts: ein Staging-Server, ein altes CMS, eine Testinstanz. Existiert der DNS-Name noch, ist der Host weiter auffindbar, und ein ungepflegter Host ist der Ort, an dem Einbr\u00fcche beginnen.\",\"befund_ct_aussteller\":\"Aussteller: {liste} || Welche Zertifizierungsstellen f\u00fcr diese Domain ausgestellt haben. Ein CAA-Eintrag kann diese Liste einschr\u00e4nken.\",\"befund_ct_neu\":\"{n} Zertifikat(e) in den letzten 30 Tagen ausgestellt || Junge Ausstellungen. Unerwartete Eintr\u00e4ge hier verdienen einen Blick: Jemand hat ein Zertifikat f\u00fcr einen Namen unter dieser Domain bekommen.\",\"befund_ct_viele_aussteller\":\"{n} verschiedene Aussteller || Mehrere Stellen haben f\u00fcr diese Domain ausgestellt. Normal bei gro\u00dfen Organisationen; bei einer kleinen Seite deutet es darauf hin, dass Dienste an verschiedenen Orten ohne gemeinsame Regel eingerichtet wurden.\"};<\/p>\n<p>    var ENDPUNKT = '\/lw-rdapct.php';\n    var SITEKEY = '6LcrPkEtAAAAAPo1QCOf-IIM2fCL0UfdJz4y2iSY';\n    var STUFEN = ['hoch', 'mittel', 'niedrig', 'info', 'gut'];<\/p>\n<p>    function liste(w) { return Array.isArray(w) ? w : []; }\n    function zahl(w) { return (typeof w === 'number' && isFinite(w)) ? w : null; }\n    function text(schluessel, daten) {\n        var t = T[schluessel];\n        if (typeof t !== 'string') { return null; }\n        return t.replace(\/\\{([a-z_0-9]+)\\}\/g, function (m, k) {\n            return (daten && daten[k] !== undefined && daten[k] !== null) ? String(daten[k]) : m;\n        });\n    }<\/p>\n<p>    function bewerten(antwort) {\n        var a = antwort || {};\n        if (a.fehler) { return { fehler: String(a.fehler), grund: a.grund || null, limit: zahl(a.limit) }; }\n        var befunde = liste(a.befunde).map(function (f) {\n            return { key: String(f.key || ''), stufe: STUFEN.indexOf(f.stufe) === -1 ? 'info' : f.stufe, daten: (f.daten && typeof f.daten === 'object') ? f.daten : {} };\n        });\n        var gruppen = {};\n        STUFEN.forEach(function (s) { gruppen[s] = befunde.filter(function (f) { return f.stufe === s; }); });\n        var r = (a.rdap && typeof a.rdap === 'object') ? a.rdap : null;\n        var c = (a.ct && typeof a.ct === 'object') ? a.ct : null;\n        var aussteller = [];\n        if (c && c.aussteller && typeof c.aussteller === 'object') { Object.keys(c.aussteller).forEach(function (k) { aussteller.push({ name: k, n: zahl(c.aussteller[k]) || 0 }); }); }\n        return {\n            fehler: null, domain: a.domain ? String(a.domain) : '',\n            urteil: (a.urteil === 'gut' || a.urteil === 'warnung' || a.urteil === 'kritisch') ? a.urteil : 'kritisch',\n            rdap: r ? { quelle: r.quelle === 'whois' ? 'whois' : 'rdap', registrar: r.registrar ? String(r.registrar) : null, registrarIana: r.registrar_iana ? String(r.registrar_iana) : null, registriert: r.registriert ? String(r.registriert) : null, ablauf: r.ablauf ? String(r.ablauf) : null, geaendert: r.geaendert ? String(r.geaendert) : null, status: liste(r.status).map(String), nameserver: liste(r.nameserver).map(String), dnssec: (r.dnssec === true || r.dnssec === false) ? r.dnssec : null } : null,\n            ct: c ? { zertifikate: zahl(c.zertifikate) || 0, namen: zahl(c.namen) || 0, aktiv: zahl(c.aktiv) || 0, neu30: zahl(c.neu_30) || 0, aussteller: aussteller, liste: liste(c.liste).map(function (n) { n = n || {}; return { name: String(n.name || ''), erste: n.erste ? String(n.erste) : null, letzte: n.letzte ? String(n.letzte) : null, n: zahl(n.n) || 0, aktiv: !!n.aktiv, wildcard: !!n.wildcard }; }) } : null,\n            befunde: befunde, gruppen: gruppen, dauer: zahl(a.dauer_ms), limitRest: zahl(a.limit_rest)\n        };\n    }<\/p>\n<p>    function skriptLaden() {\n        return new Promise(function (auf) {\n            if (window.grecaptcha) { auf(true); return; }\n            var s = document.createElement('script');\n            s.src = 'https:\/\/www.google.com\/recaptcha\/api.js?render=' + SITEKEY;\n            s.onload = function () { auf(true); }; s.onerror = function () { auf(false); };\n            document.head.appendChild(s);\n            setTimeout(function () { auf(!!window.grecaptcha); }, 8000);\n        });\n    }\n    function tokenHolen() {\n        return skriptLaden().then(function (da) {\n            if (!da || !window.grecaptcha || !window.grecaptcha.ready) { return null; }\n            return new Promise(function (auf) {\n                var fertig = false;\n                function einmal(w) { if (!fertig) { fertig = true; auf(w); } }\n                setTimeout(function () { einmal(null); }, 12000);\n                try {\n                    window.grecaptcha.ready(function () {\n                        if (fertig) { return; }\n                        if (!window.grecaptcha.execute) { einmal(null); return; }\n                        window.grecaptcha.execute(SITEKEY, { action: 'rdapct' }).then(function (t) { einmal(t || null); }, function () { einmal(null); });\n                    });\n                } catch (e) { einmal(null); }\n            });\n        }, function () { return null; });\n    }\n    function abfragen(domain) {\n        return tokenHolen().then(function (token) {\n            return fetch(ENDPUNKT, { method: 'POST', headers: { 'Content-Type': 'application\/json' }, body: JSON.stringify({ domain: domain, token: token || '' }) })\n                .then(function (r) { return r.json().then(function (j) { return j; }, function () { return { fehler: 'antwort' }; }); }, function () { return { fehler: 'netz' }; });\n        });\n    }<\/p>\n<p>    window.LW_TEST = window.LW_TEST || {};\n    window.LW_TEST.RC = { bewerten: bewerten, darstellen: null, text: text, ENDPUNKT: ENDPUNKT, STUFEN: STUFEN, T: T };<\/p>\n<p>    var btn = document.getElementById('rc-btn');\n    var out = document.getElementById('rc-ausgabe');\n    if (!btn || !out) { return; }<\/p>\n<p>    function el(tag, stil, txt) { var e = document.createElement(tag); if (stil) { e.setAttribute('style', stil); } if (txt !== undefined && txt !== null) { e.textContent = txt; } return e; }\n    function wert(id) { var e = document.getElementById(id); return e ? e.value : ''; }\n    var UEBERSCHRIFT = 'font-family: \"Nunito Sans\", sans-serif; font-weight: 700; color: var(--text-primary, #e8e8ee); font-size: 0.95rem; margin: 22px 0 8px;';\n    var ZELLE = 'padding: 5px 12px 5px 0; color: var(--text-secondary, #a0a0b0); font-size: 0.87rem;';\n    var ZELLE_WERT = 'padding: 5px 12px 5px 0; color: var(--text-primary, #e8e8ee); font-size: 0.87rem; font-family: monospace; word-break: break-all;';\n    var KASTEN = 'background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); border-radius: 8px; padding: 14px 16px; margin: 0 0 10px;';\n    var GUT = ' color: #7ee787;', WARN = ' color: #ffa94d;', ROT = ' color: #ff7b72;', GRAU = ' color: #8a8a99;';\n    var FARBEN = { hoch: '#ff7b72', mittel: '#ffa94d', niedrig: '#e3b341', info: '#8a8a99', gut: '#7ee787' };\n    var URTEIL = { gut: GUT, warnung: WARN, kritisch: ROT };\n    function gitter(sp) { return el('div', 'display: grid; grid-template-columns: ' + sp + '; gap: 0 18px; align-items: baseline;'); }\n    function paar(g, n, w, stil) { g.appendChild(el('div', ZELLE, n)); g.appendChild(el('div', ZELLE_WERT + (stil || ''), w)); }<\/p>\n<p>    function darstellen(b, ziel) {\n        ziel.innerHTML = '';\n        if (b.fehler) {\n            var txt = T['fehler_' + b.fehler] || T.fehler_unbekannt;\n            if (b.grund && T['grund_' + b.grund]) { txt = txt + ' ' + T['grund_' + b.grund]; }\n            if (b.limit !== null) { txt = txt.replace('{limit}', String(b.limit)); }\n            ziel.appendChild(el('p', ZELLE + WARN + ' margin: 0;', txt));\n            return;\n        }\n        ziel.appendChild(el('div', 'font-size: 1.05rem; font-weight: 700; margin: 0 0 12px;' + URTEIL[b.urteil], T['urteil_' + b.urteil]));<\/p>\n<p>        ziel.appendChild(el('div', UEBERSCHRIFT, T.h_registrierung + (b.rdap && b.rdap.quelle === 'whois' ? ' (' + T.quelle_whois + ')' : '')));\n        var g = gitter('auto auto');\n        paar(g, T.zeile_domain, b.domain);\n        if (b.rdap) {\n            paar(g, T.zeile_registrar, (b.rdap.registrar || '-') + (b.rdap.registrarIana ? ' (IANA ' + b.rdap.registrarIana + ')' : ''));\n            paar(g, T.zeile_registriert, b.rdap.registriert || '-', GRAU);\n            paar(g, T.zeile_ablauf, b.rdap.ablauf || T.wert_unbekannt, b.rdap.ablauf ? '' : GRAU);\n            paar(g, T.zeile_geaendert, b.rdap.geaendert || '-', GRAU);\n            paar(g, T.zeile_status, b.rdap.status.length ? b.rdap.status.join(', ') : '-', GRAU);\n            paar(g, T.zeile_nameserver, b.rdap.nameserver.length ? b.rdap.nameserver.join(', ') : '-', GRAU);\n            paar(g, T.zeile_dnssec, b.rdap.dnssec === null ? T.wert_unbekannt : (b.rdap.dnssec ? T.ja : T.nein), b.rdap.dnssec ? GUT : GRAU);\n        } else { paar(g, T.zeile_registrar, T.wert_keine_daten, WARN); }\n        if (b.dauer !== null) { paar(g, T.zeile_dauer, b.dauer + ' ms', GRAU); }\n        if (b.limitRest !== null) { paar(g, T.zeile_limit, String(b.limitRest), GRAU); }\n        ziel.appendChild(g);<\/p>\n<p>        if (b.ct) {\n            ziel.appendChild(el('div', UEBERSCHRIFT, T.h_ct));\n            var gc = gitter('auto auto');\n            paar(gc, T.zeile_zertifikate, text('ct_kurz', { zertifikate: b.ct.zertifikate, aktiv: b.ct.aktiv, neu: b.ct.neu30 }));\n            paar(gc, T.zeile_namen, String(b.ct.namen));\n            if (b.ct.aussteller.length) { paar(gc, T.zeile_aussteller, b.ct.aussteller.map(function (x) { return x.name + ' (' + x.n + ')'; }).join(', '), GRAU); }\n            ziel.appendChild(gc);\n            if (b.ct.liste.length) {\n                var huelle = el('div', 'overflow-x: auto; max-height: 420px; overflow-y: auto;');\n                var gp = gitter('auto auto auto auto auto');\n                [T.spalte_name, T.spalte_erste, T.spalte_letzte, T.spalte_n, T.spalte_zustand].forEach(function (s) { gp.appendChild(el('div', ZELLE + ' font-weight: 700; color: var(--text-primary, #e8e8ee); white-space: nowrap;', s)); });\n                b.ct.liste.forEach(function (n) {\n                    gp.appendChild(el('div', ZELLE_WERT, n.name));\n                    gp.appendChild(el('div', ZELLE_WERT + GRAU, n.erste || '-'));\n                    gp.appendChild(el('div', ZELLE_WERT + GRAU, n.letzte || '-'));\n                    gp.appendChild(el('div', ZELLE_WERT + GRAU, String(n.n)));\n                    gp.appendChild(el('div', ZELLE_WERT + (n.aktiv ? GUT : WARN) + ' white-space: nowrap;', (n.aktiv ? T.name_aktiv : T.name_abgelaufen) + (n.wildcard ? ' \u00b7 ' + T.name_wildcard : '')));\n                });\n                huelle.appendChild(gp);\n                ziel.appendChild(huelle);\n            }\n        }<\/p>\n<p>        ziel.appendChild(el('div', UEBERSCHRIFT, T.h_befunde));\n        var irgendwas = false;\n        STUFEN.forEach(function (s) {\n            var gr = b.gruppen[s];\n            if (!gr.length) { return; }\n            irgendwas = true;\n            ziel.appendChild(el('div', 'font-weight: 700; font-size: 0.82rem; text-transform: uppercase; letter-spacing: 0.5px; margin: 14px 0 6px; color: ' + FARBEN[s] + ';', T['stufe_' + s] + ' (' + gr.length + ')'));\n            gr.forEach(function (f) {\n                var k = el('div', KASTEN + ' border-left: 3px solid ' + FARBEN[s] + ';');\n                var t = text('befund_' + f.key, f.daten) || f.key;\n                var teile = t.split(' || ');\n                k.appendChild(el('div', 'color: var(--text-primary, #e8e8ee); font-size: 0.9rem; font-weight: 700;', teile[0]));\n                if (teile[1]) { k.appendChild(el('div', ZELLE + ' padding: 6px 0 0; line-height: 1.55;', teile[1])); }\n                ziel.appendChild(k);\n            });\n        });\n        if (!irgendwas) { ziel.appendChild(el('p', ZELLE + ' margin: 0;', T.keine_befunde)); }\n    }\n    window.LW_TEST.RC.darstellen = darstellen;<\/p>\n<p>    var laeuft = false;\n    btn.addEventListener('click', function () {\n        if (laeuft) { return; }\n        laeuft = true; btn.disabled = true;\n        out.innerHTML = '';\n        out.appendChild(el('p', ZELLE + GRAU + ' margin: 0;', T.laeuft));\n        abfragen(wert('rc-domain')).then(function (a) { darstellen(bewerten(a), out); laeuft = false; btn.disabled = false; },\n            function () { darstellen(bewerten({ fehler: 'netz' }), out); laeuft = false; btn.disabled = false; });\n    });\n})();\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Fragt die Registry per RDAP, bei wem eine Domain registriert ist, wann sie angelegt wurde und wann sie abl\u00e4uft, welche Statussperren gelten, welche Nameserver sie bedienen und ob DNSSEC delegiert ist, und liest dann die Certificate-Transparency-Logs nach jedem Hostnamen, f\u00fcr den je ein Zertifikat ausgestellt wurde, vergessene Subdomains eingeschlossen.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":9283,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-tool-base.php","meta":{"footnotes":""},"tags":[92214,92301,92071],"class_list":["post-15574","page","type-page","status-publish","hentry","tag-devops-de","tag-networking-de","tag-web-security-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Domain-RDAP- und Certificate-Transparency-Abfrage: Registrar, Ablauf, vergessene Subdomains - Lukas Wojcik - Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/domain-rdap-certificate-transparency-subdomain-lookup\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Domain-RDAP- und Certificate-Transparency-Abfrage: Registrar, Ablauf, vergessene Subdomains - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Fragt die Registry per RDAP, bei wem eine Domain registriert ist, wann sie angelegt wurde und wann sie abl\u00e4uft, welche Statussperren gelten, welche Nameserver sie bedienen und ob DNSSEC delegiert ist, und liest dann die Certificate-Transparency-Logs nach jedem Hostnamen, f\u00fcr den je ein Zertifikat ausgestellt wurde, vergessene Subdomains eingeschlossen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/domain-rdap-certificate-transparency-subdomain-lookup\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/domain-rdap-certificate-transparency-subdomain-lookup\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/domain-rdap-certificate-transparency-subdomain-lookup\\\/\",\"name\":\"Domain-RDAP- und Certificate-Transparency-Abfrage: Registrar, Ablauf, vergessene Subdomains - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-09-05T12:58:37+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/domain-rdap-certificate-transparency-subdomain-lookup\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/domain-rdap-certificate-transparency-subdomain-lookup\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/domain-rdap-certificate-transparency-subdomain-lookup\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Toolbox\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/toolbox-2\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Domain-RDAP- und Certificate-Transparency-Abfrage: Registrar, Ablauf, vergessene Subdomains\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"luky\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"luky\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Domain-RDAP- und Certificate-Transparency-Abfrage: Registrar, Ablauf, vergessene Subdomains - Lukas Wojcik - Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/domain-rdap-certificate-transparency-subdomain-lookup\/","og_locale":"en_US","og_type":"article","og_title":"Domain-RDAP- und Certificate-Transparency-Abfrage: Registrar, Ablauf, vergessene Subdomains - Lukas Wojcik - Blog","og_description":"Fragt die Registry per RDAP, bei wem eine Domain registriert ist, wann sie angelegt wurde und wann sie abl\u00e4uft, welche Statussperren gelten, welche Nameserver sie bedienen und ob DNSSEC delegiert ist, und liest dann die Certificate-Transparency-Logs nach jedem Hostnamen, f\u00fcr den je ein Zertifikat ausgestellt wurde, vergessene Subdomains eingeschlossen.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/domain-rdap-certificate-transparency-subdomain-lookup\/","og_site_name":"Lukas Wojcik - Blog","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/domain-rdap-certificate-transparency-subdomain-lookup\/","url":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/domain-rdap-certificate-transparency-subdomain-lookup\/","name":"Domain-RDAP- und Certificate-Transparency-Abfrage: Registrar, Ablauf, vergessene Subdomains - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"datePublished":"2026-09-05T12:58:37+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/domain-rdap-certificate-transparency-subdomain-lookup\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/domain-rdap-certificate-transparency-subdomain-lookup\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/domain-rdap-certificate-transparency-subdomain-lookup\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Toolbox","item":"https:\/\/www.lukaswojcik.com\/blog\/toolbox-2\/"},{"@type":"ListItem","position":3,"name":"Domain-RDAP- und Certificate-Transparency-Abfrage: Registrar, Ablauf, vergessene Subdomains"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"luky","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"luky"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/15574","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=15574"}],"version-history":[{"count":0,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/15574\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/9283"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=15574"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=15574"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}