Je možné HTTPS bez DNS?

petersveter

Je možné HTTPS bez DNS?
« kdy: 24. 02. 2024, 13:04:34 »
Povedzme ze mam domenu https://foobar.com a k nej SSL certifikat. Povedzme ze chcem na kratky cas spravit VPS ktore musi byt dostupne pre uzivatelov. Moze to byt 15 minut, hodina, kto vie. Skratka efemeralne VPS.

Registracia do DNS znamena nutnost implementacie nejakeho API a automatizacie pren plus je tam neznama doba propagacie. Ano, casto je to par sekund az minut ale niekedy aj cely den takze sa na to neda spolahnut - nikdy.

Preto rozmyslam, ci je mozne nasmerovat uzivatela na IP serveru ale zaroven mat to spojenie aj normalne zapezpecene s https? A idealne s certifikatom pre tu foobar domenu.

Na strane serveru je to asi irelevantne, ten proste naserviruje certifikat. Ale prehliadac asi vrateny certikat nebude chciet naparovat s IP adresou kedze origin a podobne headery nebudu sediet. Jasne ze certifikat moze mat IP adresu v sebe, tak ako ma dns nazov alebo to je stale rovnaky problem, akurat v tomto pripade by namiesto DNS trebalo riesit pregenerovanie certifikatu.

Je to teda nejak mozne ist len cez IP, ci ani nie?
« Poslední změna: 24. 02. 2024, 13:18:59 od Petr Krčmář »


BoaR

Re:Je možné HTTPS bez DNS?
« Odpověď #1 kdy: 24. 02. 2024, 14:41:15 »
imho je ssl certifikat pro webovou stranku nezavisly na IP adrese.
takkze ano, muzes HTTPS bez DNS.

RDa

  • *****
  • 2 727
    • Zobrazit profil
    • E-mail
Re:Je možné HTTPS bez DNS?
« Odpověď #2 kdy: 24. 02. 2024, 14:57:03 »
imho je ssl certifikat pro webovou stranku nezavisly na IP adrese.
takkze ano, muzes HTTPS bez DNS.

S vlastni nebo self-signed ano. Ale u LE je provadena kontrola skrze verejne DNS pri zadosti o cert, ne?

CPU

  • *****
  • 877
    • Zobrazit profil
    • E-mail
Re:Je možné HTTPS bez DNS?
« Odpověď #3 kdy: 24. 02. 2024, 15:13:05 »
Než člověk napíše odpověď, tak ho to odhlásí a odpověď je ztracená... ::)

Mňo, dal jsem si s tím dost práce, popsal řešení a přidal odkazy...asi lepší je dávat jen štěky a hejty, ty jsou krátké a dají se napsat rychle znovu. Třeba jako "Tohle je nějaká ptákovina ne?"
« Poslední změna: 24. 02. 2024, 15:15:01 od CPU »

Re:Je možné HTTPS bez DNS?
« Odpověď #4 kdy: 24. 02. 2024, 15:47:16 »
Teoreticky můžete mít certifikát vystavený na IP adresu. Prakticky budete mít problém sehnat takový certifikát od důvěryhodné certifikační autority. Protože u VPS nedokážete, že její IP adresa je vaše (když vaše není, bude provozovatele VPS).

Certifikát vydaný na doménu by vám byl k ničemu, kdyby uživatel šel na web přes IP adresu. Ale hlavně – když už máte zaregistrované doménové jméno, abyste na něj mohl dostat certifikát, může přece tu doménu použít i uživatel.

Registracia do DNS znamena nutnost implementacie nejakeho API

To samé i vystavení certifikátu.

plus je tam neznama doba propagacie. Ano, casto je to par sekund az minut ale niekedy aj cely den takze sa na to neda spolahnut - nikdy.
Nikoli. DNS se nikam nepropaguje. DNS je hierarchický systém a ptá se vždy serveru, který obsluhuje danou koncovou doménu. Klienti mohou přeložené názvy kešovat, ale dobu kešování můžete ovlivnit.

Pokud ten DNS záznam dříve neexistoval, nikdo neměl důvod se na něj ptát a nikde nebude nakešovaný. Takže bude dostupný okamžitě, jakmile ho v DNS zóně vytvoříte. (Může být nějaký provozovatel DNS serverů, který nevloží DNS záznam do zóny hned, jak zavoláte API, ale bude tam mít nějakou prodlevu. Tak prostě takového poskytovatele nepoužívejte.) Problém by byl, pokud by se někdo ptal na DNS záznam před tím, než vznikne – pak se nakešuje negativní odpověď a pár desítek sekund může někdo dostávat tu negativní odpověď. Podobné by to bylo, kdyby ten záznam už existoval a vy byste ho přesměroval na jinou IP adresu. Každopádně se běžně počítá, že by DNS cache měly respektovat dobu kešování pět minut a delší.

Běžně se dělá to, že přes API založíte doménový název, nasměrujete ho na web a necháte pro něj přes LE vystavit certifikát, a do pár sekund od vytvoření ten certifikát máte.

Takže pokud nebude důvod, aby tu doménu někdo překládal předem, nemusíte nic řešit – doménový název nebude nikde v cache a jakmile nastavíte správnou IP adresu a někdo bude mít důvod to přeložit, dostane se na správné VPS. Pokud ten DNS název bude běžně v oběhu a bude se používat, musíte počítat s tím, že přesměrování na jinou IP adresu bude u různých uživatelů trvat až 5 minut. Pokud bude někdo za nějakou špatně nakonfigurovanou cache, může to být i více, ale to neovlivníte.

Otázka je, co řešíte za problém. Pokud potřebujete adresu změnit během vteřiny, můžete použít HTTPS přesměrování. Uživatelé budou vědět, že mají zadávat https://example.com, a vy je přesměrujete na https://abc.example.com, což bude jaden VPS. Pokud je budete chtít dostat na nový VPS, změníte přesměrování na https://xyz.example.com a jakmile uživatel příště zadá https://example.com, přesměruje ho to na https://xyz.example.com. Při tom se využije toho, že je to nové doménové jméno, které ještě neměl nikdo důvod překládat, takže nebude nikde nakešované a přeloží se na tu správnou IP adresu nové VPS.


petersveter

Re:Je možné HTTPS bez DNS?
« Odpověď #5 kdy: 24. 02. 2024, 16:20:06 »
Nikoli. DNS se nikam nepropaguje. DNS je hierarchický systém a ptá se vždy serveru, který obsluhuje danou koncovou doménu. Klienti mohou přeložené názvy kešovat, ale dobu kešování můžete ovlivnit.

Pokud ten DNS záznam dříve neexistoval, nikdo neměl důvod se na něj ptát a nikde nebude nakešovaný. Takže bude dostupný okamžitě, jakmile ho v DNS zóně vytvoříte.

Ah, tak fajn. To potom riesi vsetky komplikacie. Ja som si myslel ze DNS zaznamy sa musia propagovat az niekam kde ich klient moze ziskat(cize DNS server ktory ma on najblizsie a z ktoreho si preklada IP). Preto sa casto vsade pise ze "zmena moze trvaz az 24h", ale teda ratam ze to sa tyka propagacie zmien a expiracie cache, nie novych adries, a to aj dost dava zmysel. Potom nie je co riesit a jedine teda overit ci poskytovatel DNS ma oneskorenie zverejnenia zaznamov a ak ano tak ci je prijatelne a to je asi vsetko.

_Jenda

  • *****
  • 1 605
    • Zobrazit profil
    • https://jenda.hrach.eu/
    • E-mail
Re:Je možné HTTPS bez DNS?
« Odpověď #6 kdy: 24. 02. 2024, 16:38:48 »
Ah, tak fajn. To potom riesi vsetky komplikacie. Ja som si myslel ze DNS zaznamy sa musia propagovat az niekam kde ich klient moze ziskat(cize DNS server ktory ma on najblizsie a z ktoreho si preklada IP). Preto sa casto vsade pise ze "zmena moze trvaz az 24h", ale teda ratam ze to sa tyka propagacie zmien a expiracie cache
Většinou máte DNS serverů několik (říká se tomu třeba primární a sekundární) a dělá se to třeba tak, že když to přes API změníte, změna se provede na primárním, a ten hned přes AXFR/IXFR (nebo nějaký custom protokol kdo má větší vlastní setup) pošle notifikaci sekundárnímu. Ale mám podezření, že někteří poskytovatelé (Forpsi) ty změny buď z primárního na sekundární nebo dokonce i z API na primární dělají nějak periodicky nebo zpožděně. To ale není vlastnost/problém DNS, ale špatného poskytovatele. Bohužel nevím kteří jsou dobří a kteří špatní, měl jsem buď Forpsi (špatný) a pak jenom vlastní DNS server (kde si to nastavíš, ale otázka je jestli se ti to chce provozovat).

Re:Je možné HTTPS bez DNS?
« Odpověď #7 kdy: 24. 02. 2024, 16:57:42 »
Preto sa casto vsade pise ze "zmena moze trvaz az 24h"
Pokud nastavíte dobu platnosti záznamu 5 dnů, může klidně trvat těch 5 dnů, než se změna projeví v nějaké cache. Ale pokud byste chtěl takhle rychle měnit to, kam DNS záznam směřuje, nebude mu nastavovat TTL 24 hodin nebo více, ale nastavíte mu těch 5 minut.

Registrátoři si často vyhrazují nějaký čas, než publikují změny, ale to bývá třeba 15 minut a reálně je to rychlejší. Ale záleží to na konkrétním registrátorovi, třeba Cloudflare publikuje změny okamžitě.

Dále může trvat změna jmenných serverů v nadřazené doméně – to zase záleží na tom, jak často publikuje záznamy registrátor. Ale to se vašeho případu netýká.

Takže pokud se někde uvádí, že změna může trvat až 24 hodin, je to spíš pro to, aby jim na hotline nevolal každý Pepa, že před pěti vteřinami změnil adresu a nic se nezměnilo – aby tam nemuseli vysvětlovat, že v tomhle případě to bude 5 minut, v tomhle 15 a v tomhle 6 hodin, když by to ten Pepa stejně nepochopil, o co jde.

Každopádně já to tak běžně dělám, že založím DNS záznam na Cloudflare, pak na to nasměruju Caddy server a určitě do dvaceti vteřin se na ten web dostanu normálně z prohlížeče a mám tam certifikát od LE. Reálně to bude jen pár vteřin, než se vystaví LE certifikát, ale nikdy jsem to neměřil, tak tu nechci psát něco nepřesného.

Většinou máte DNS serverů několik (říká se tomu třeba primární a sekundární) a dělá se to třeba tak, že když to přes API změníte, změna se provede na primárním, a ten hned přes AXFR/IXFR (nebo nějaký custom protokol kdo má větší vlastní setup) pošle notifikaci sekundárnímu. Ale mám podezření, že někteří poskytovatelé (Forpsi) ty změny buď z primárního na sekundární nebo dokonce i z API na primární dělají nějak periodicky nebo zpožděně. To ale není vlastnost/problém DNS, ale špatného poskytovatele. Bohužel nevím kteří jsou dobří a kteří špatní, měl jsem buď Forpsi (špatný) a pak jenom vlastní DNS server (kde si to nastavíš, ale otázka je jestli se ti to chce provozovat).
Vodítko bude, zda je to tradiční poskytovatel, který má ty primární a sekundární servery, replikuje mezi nimi zóny a změnu dělá tak, že publikuje novou zónu – u nich to bude pár minut trvat. To bude Forpsi, Wedos nebo třeba SubReg.

Nebo zda je to cloudový poskytovatel, který neřeší primární a sekundární servery a nepublikuje zóny, ale prostě řeší vystavení DNS záznamů na svých serverech. U takových se ta změna provede prakticky ihned. Je to tak třeba u Cloudflare, předpokládám, že podobně to bude u Amazonu, Googlu a Microsoft Azure. Je to i proto, že ti cloudoví poskytovatelé tu „cloudovost“ řeší i přes DNS, takže potřebují, aby uměli změny do DNS vypropagovat rychle.

vcunat

  • ***
  • 132
    • Zobrazit profil
    • E-mail
Re:Je možné HTTPS bez DNS?
« Odpověď #8 kdy: 24. 02. 2024, 19:14:16 »
Jen přihodím funkční příklad: https://1.1.1.1/

petersveter

Re:Je možné HTTPS bez DNS?
« Odpověď #9 kdy: 24. 02. 2024, 19:28:58 »
Jen přihodím funkční příklad: https://1.1.1.1/

Ano ale ten ma samozrejme ip v certifikate. O tom tu rec nie je.

Kód: [Vybrat]
Názov DNS: cloudflare-dns.com
Názov DNS: *.cloudflare-dns.com
Názov DNS: one.one.one.one
IP adresa: 1.0.0.1
IP adresa: 1.1.1.1 <--
IP adresa: 162.159.36.1
IP adresa: 162.159.46.1
IP adresa: 2606:4700:4700::1001
IP adresa: 2606:4700:4700::1111
IP adresa: 2606:4700:4700::64
IP adresa: 2606:4700:4700::6400

Zopper

  • *****
  • 783
    • Zobrazit profil
Re:Je možné HTTPS bez DNS?
« Odpověď #10 kdy: 25. 02. 2024, 08:33:24 »
Ale to musí být. Z hlediska validace HTTPS požadavku musí sedět požadovaná adresa s tím, co je v certifikátu. Jestli jde o nějaké DNS jméno, nebo nějakou IP adresu, to je prohlížeči jedno, dokud je tam shoda.

Pokud chcete HTTPS certifikát, co bude fungovat bez ohledu na to, přes jakou adresu tam uživatel leze (a tyhle adresy nebudou zakódované v tom certifikátu), tak se tam dá dát wildcard. Ale pak to nemůže být certifikát od veřejných certifikačních autorit. Ty vám nic takového nedovolí. Budete si muset udělat vlastní certifikační autoritu, nebo self-signed certifikát, a klienti si ho musí ručně přidat. A osobně bych se díval dost ošklivě na někoho, kdo mi takový certifikát dává a chce, abych mu de facto umožnil na sebe dělat MITM útok.

Re:Je možné HTTPS bez DNS?
« Odpověď #11 kdy: 25. 02. 2024, 09:02:58 »
Pokud chcete HTTPS certifikát, co bude fungovat bez ohledu na to, přes jakou adresu tam uživatel leze (a tyhle adresy nebudou zakódované v tom certifikátu), tak se tam dá dát wildcard. Ale pak to nemůže být certifikát od veřejných certifikačních autorit. Ty vám nic takového nedovolí.
Aby prohlížeč akceptoval hvězdičkový certifikát, musí být hvězdička úplně vlevo, jen jedna a zastupuje právě jednu úroveň v DNS stromu. A takový certifikát vám veřejné certifikační autority klidně vystaví, pokud prokážete, že jste vlastníkem dané domény. Webové prohlížeče nebudou akceptovat ani hvězdičkový certifikát vydaný přímo pod public suffix doménou, tj. třeba *.com.

Zopper

  • *****
  • 783
    • Zobrazit profil
Re:Je možné HTTPS bez DNS?
« Odpověď #12 kdy: 25. 02. 2024, 11:51:58 »
Ok, díky za opravu. Měl jsem za to, že hvězdička se aplikuje i na poddomény, takže certifikát pro "*" by šel aplikovat na všechno, včetně IP adres. A takový certifikát by žádná autorita nepodepsala. Že "*.com" odmítnou prohlížeče dává smysl, a "*" by odmítly asi stejně.

Re:Je možné HTTPS bez DNS?
« Odpověď #13 kdy: 26. 02. 2024, 11:04:53 »
Obdobny problem jsem resil pomoci widcard certifikatu *.foobar.com, ktery pokryje i vps1.foobar.com a dalsi dynamicky vznikle.
tento dns zaznam odkazoval na nginx, ktery slouzil jako SSL terminator a ktery v rezimu reverse proxy rozhazoval podle nazvu traffic na prislusne VPS.

Re:Je možné HTTPS bez DNS?
« Odpověď #14 kdy: 26. 02. 2024, 11:33:29 »
Teoreticky můžete mít certifikát vystavený na IP adresu. Prakticky budete mít problém sehnat takový certifikát od důvěryhodné certifikační autority. Protože u VPS nedokážete, že její IP adresa je vaše (když vaše není, bude provozovatele VPS).
Jako člověk, který tímhle prošel, můžu říct, že je to nakonec celkem snadné, pokud ta IP adresa nemá být IPv6 :)
Třeba validace u SSL.com probíhá jednoduše vystavením validačního souboru na HTTP serveru hostovaném na dané IP adrese. Jenom to bohužel leze do peněz. Snad Let's Encrypt brzy implementuje RFC 8738 (které lidé z LE napsali) a začne podporovat i validaci IP adres - žádná technická ani administrativní překážka v tom zřejmě není.