Tanúsítvánnyal nem rendelkező vhostok elutasítása

A probléma: olyan webcím-re is kiszolgál webszerverünk a https protokollon, amire nincs is tanúsítvány. Az eredmény: elégedetlen ügyfél, hogy miért az ő https címe alatt jön be más oldala (még akkor is, ha beszól a böngésző, hogy hiba van - mivel a tanúsítvány nem stimmel a domainhez). A megoldás könnyűnek tűnik. Nos, nem az. Elsőre.

Ha egy kicsit utána próbálunk járni, ki is derül, hogy miért lehet hibába futni. Alapvetően a legtöbb - népszerű - webszerver, mint az Apache httpd, és az Nginx alapkonfigurációjában nincs olyan opció, ami megmondja azt, hogy csak a felsorolt hostnevekre, domainekre szolgáltassanak.Ez pedig azt eredményezi, hogy azonos IP-n lévő szervereknél egy-egy domain el tud tévedni. Ez http protokollnál nem olyan nagy ügy és könnyen kivédhető, de a https sokkal összetettebb.

Egész sok időt el lehet tölteni a megoldás felkutatásával, ezért én szeretnék egy gyors és kipróbált technikát megosztani.

Nálam egy Nginx proxy áll az apache-ok előtt, tehát ez a példa Nginx-nél működik, természetesen akkor is, ha a teljes kiszolgálási láncot ez viszi.

A következő beállítást kell berakni valahogyan mindenhová, ahol a 443-as portra állítottunk be kiszolgálást, a server_name ... után:

Ez a https://akarmi.com-ot átdobja http://-s verzióra, és nem engedi be más webcímre https alatt.

Fontos, hogy tényleg mindenhol ott legyen, ahol a 443-as portra állítunk be, mert különben átjut a kérés. Célszerű a fenti konfig-részt egy külön file-ba (pl.: no-ssl-redirect) tenni, majd simán inlcude-olni:

Ezzel meg is oldottuk. Nem az én találmányom, több megoldási kísérlet után találtam rá erre, ami működik is. Élesben letesztelve. 🙂

 
Tanúsítvánnyal nem rendelkező vhostok elutasítása
0 szavazat, 0.00 átlagos pontszám (0%-ra értékelve)

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöljük.