SSL sa jednom javnom IP adresom i vise vhost-ova

Situacija je slijedeca:

imamo jedan web server na kojem se trenutno nalazi vise web stranica. Ni jedna nema SSL tako da su trenutno konfigurisane sa Name-based vhosts. Public IP adresu prevodi CISCO router u privatnu ip adresu na kojoj je instaliran apache2. Sve fercera ok.
Medjutim, vrlo brzo svaka ova stranica mora imati svoj vlasiti SSL certifikat s tim da nam na raspolaganju stoji i dalje samo jedna javna ip adresa.

Eh, sad, kako je najbolje rijesiti SSL certifikaciju? Certifikat ce biti kupljen, dakle necemo korisititi openssl (usput, pitanje, preporuka za neki SSL certifikat za e-commerce).

Neka moja ideja je bila da konfigurisem virtuelne ip adrese i da uradim IP-based vhosts. Otprilike ovako:

Uploaded with ImageShack.us

Problemi:

kako konfigurisati cisco router da preusmjerava saobracaj na osnovu domain-a?

Da li ovo rjesenje uopste moze funkcionisati?

Ima li neko neki bolji prijedlog (jedna javna ip adresa, vise vhostova, svaki host sa vlastitim SSL certifikatom)?

Danke…

to rijesenje ti ne moze funkcionisat bez vise javnih ip adresa. koristi te vhostove kako ih i sad koristis samo pravi u svakom na novo ssl konfiguraciju sa navedenim certifikatima za svaku domenu … ja mislim da je to moguce od apache 2.2 (nisam siguran , provjeri apache2 dokumentaciju tj. mod_ssl dokumentaciju)

Mozes i ne moras, kao sto rece maher, od verzije 2.2 podrzava SSL po vhost-ovima, dakle ne treba ti ip za svaku ssl instancu. (time ces resiti ciCko problem) .

http://en.gentoo-wiki.com/wiki/Apache2/SSL_and_Name_Based_Virtual_Hosts

pitanje… dal’ complete content tih domena treba pod ssl ili samo odredjeni elementi (login, payment and stuff) posto ce i za server biti malo vece opterecenje da sav traffic kripta (koliko se sjecam, u pitanju je magento) ?

Navedeno ti neće raditi kako očekuješ, jer i dalje moraš za svaku stranicu kupiti SSL certifikat. Sa SNI samo štediš IP adrese, ali ne i certifikate.

Jedino će raditi ako su svi sajtovi poddomene jedne domene (npr. example.net), pa onda kupiš jedan wildcard certifikat za *.example.net, i koristiš jednu IP adresu.

@adis,

I meni je to palo na pamet, ali vidio sam da je rekao da ce za svaku domenu biti kupljen cert. :slight_smile:

[quote=Amar]Problemi:

kako konfigurisati cisco router da preusmjerava saobracaj na osnovu domain-a?

Da li ovo rjesenje uopste moze funkcionisati?[/quote]
Treba ti neki reverse HTTP proxy koji razumije SSL: Apache, Nginx ili Pound.

@Bo: po ovom dijelu posta, mislim da su kontali proći sa jednim SSL certifikatom :smiley:

E ljudi, fala na odgovorima i trudu. Drago mi je da ce ovo fercerati. Naravno, SSL ce ici po domeni ali na samo jednoj stranici, dakle na paymentu. Kriptovati cijelu domenu je, bar u nasem slucaju bespotrebno a i preskupo. U svakom slucaju, javim kad sve bude konfigurisano.

Koliko sam shvatio iz ovog Gentoo wiki-ja, SNI je podrzan od IE 7.0 i dalje. Naravno, to nije zadovoljavajuce rjesenje. Postoji li neki workaround da se SNI omoguci i na IE 6.0?

EDIT: jos jednom moram izraziti moje odusevljenje sa Gentoo-Wiki.jem. Definitivno najbolje dokumentovan distro.

Zaostajati zbog … kao sto je IE6 … pa kad ga google vise ne podrzava :slight_smile:

Workaround za to bi mozda bilo preusmjeravanje na osnovu browser ident, dakle kreirati jedan “standardni” ssl na zasebnom IP, koji je wildcard, pa za svaku domenu koja se koristi uvesti sledecu logiku :

if IE6 > https://domainX.ie6compatSSL.tld
else > https://domainX.tld/shop/

Jeste malo “krkansko” resenje, i dodatni cert ($200 godisnje), ali resava sve ostale muke.

Ne znam kako tije podesen magento, ali za wildcard subdomain, mozes podesiti povlacenje sadrzaja sa razlicitih lokacija, zavisno od subdomain-a, tako da u oba slucaja gleda na isti dir.

[quote=Bo]Zaostajati zbog … kao sto je IE6 … pa kad ga google vise ne podrzava :slight_smile:

Workaround za to bi mozda bilo preusmjeravanje na osnovu browser ident, dakle kreirati jedan “standardni” ssl na zasebnom IP, koji je wildcard, pa za svaku domenu koja se koristi uvesti sledecu logiku :

if IE6 > https://domainX.ie6compatSSL.tld
else > https://domainX.tld/shop/

Jeste malo “krkansko” resenje, i dodatni cert ($200 godisnje), ali resava sve ostale muke.

Ne znam kako tije podesen magento, ali za wildcard subdomain, mozes podesiti povlacenje sadrzaja sa razlicitih lokacija, zavisno od subdomain-a, tako da u oba slucaja gleda na isti dir.[/quote]
Hvala na sugestijama. Jebiga, sto se IE6 tice, i ja bih ga rado ignorisao. Ali dok god ima levata koji ga jos koriste, moramo ga ukljuciti u finalno rjesenje. Prema statistikama iz septembra 2010, IE koristi oko 47% nesretnika, od toga, IE6 16% neupucenih. Na globalnom nivou, jeste mali procenat, ali sta se moze.

S obzirom na situaciju, drugaciji setup od navedenog je uber komplikacija :slight_smile:

Zna li neko fercera li SNI sa komercijalnim SSL certifikatima? Koliko sam ja uspio naci na internetu, SNI funkcionise super odlicno sa openSSL-om a nigdje nije spomenuto da li SNI fercera recimo sa VeriSign-om ili sa slicnim komercijalnim certifikatima.

openssl je samo tool, razlika je sto ti kada generises “self-signed” cert, onda browser vristi :slight_smile: , a u slucaju kada uzimas verisign, onda ti generises csr sa podacima (naravno, openssl halatkom) i onda to saljes njima da bi ti izgenerisali cert.

Tako sam nekako i kontao, rekoh da provjerim.

Usput, slomih se trazeci rjesenje koje bi ukljucilo jednu javnu IP adresu i vise vhost-ova te na svakom vhostu SSL. Moze biti kao posebni certifikat a moze i jedan multi-domain. Do sada sto sam nasao, a poklapa se i sa prijedlozima ovdje na forumu je SNI. Problem je sto SNI ne fercera pod Windows-om XP kao ni sa IE 6. To dvoje zajedno je nazalost jos uvijek znacajna cifra. Postoji li ikakav drugi nacin da konfigurisem SSL na vise domena preko jedne javne IP adrese a da fercera u Windows-u XP i po mogucnosti i u IE 6?

To nema veze sa OS-om, dakle samo su browser-i u pitanju.

[quote]Prerequisites to use SNI

* Use OpenSSL 0.9.8f or later
* Build OpenSSL with the TLS Extensions option enabled (option enable-tlsext; OpenSSL 0.9.8k and later has this enabled by default).
* Apache must have been built with that OpenSSL (./configure --with-ssl=/path/to/your/openssl). In that case, mod_ssl will automatically detect the availability of the TLS extensions and support SNI.
* Apache must use that OpenSSL at run-time, which might require setting LD_LIBRARY_PATH or equivalent to point to that OpenSSL, maybe in bin/envvars. (You'll get unresolved symbol errors at Apache startup if Apache was built with SNI but isn't finding the right openssl libraries at run-time.) 

How can you tell if your Apache build supports SNI? If you configure multiple name-based virtual hosts for an address where SSL is configured, and SNI isn’t built into your Apache, then upon Apache startup a message like “You should not use name-based virtual hosts in conjunction with SSL!!” will occur in the error log. If SNI is built in, then the error log will show “[warn] Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)”.

The client browser must also support SNI. Here are some browsers that do:

* Mozilla Firefox 2.0 or later
* Opera 8.0 or later (with TLS 1.1 enabled)
* Internet Explorer 7.0 or later (on Vista, not XP)
* Google Chrome
* Safari 3.2.1 on Mac OS X 10.5.6[/quote]

Kao sto sam vec rekao, ako je <IE7 onda klijenta upozoriti sto koristi mator browser, pa na shop1.wildcardSSLdomain.tld

Za sve ostale bi trebalo da radi bez problema.

Itekako ima veze sa OS-om:

[quote]Unsupported operating systems, browsers, and libraries
The following combinations do not support SNI:

Client side
Konqueror/KDE in any version
Internet Explorer (any version) on Windows XP
Google Chrome on Windows XP
Safari on Windows XP

wget
BlackBerry Browser[/quote]

pim puf… Nisi jedini koji u chrome spominje u kontekstu : "nece da radi na tom … " :smiley: (treci zapravo) …

Posto sam taj dio ocigledno previdio… a nije bio naveden na apache wiki, koji sam uzeo kao referencu… pokusacu da predlozim workaround :slight_smile:

Koliko znam, a ne znam puno, cisco (osim ako ne govorimo o 12xxx seriji )tesko da moze raditi neki swtiching na osnovu host header-a da radi routing. (imaju posebne, layer 7 aware uredjaje za content switching)
Najlakse u ovom slucaju je da se za svaki zasebni ip na lokalnoj masini, dodijeli odgovaraujci public na ciCku, ako to nije izvodljivo… onda na base masini napraviti balancer (nisam 100% siguran, ali cini mi se da ovo moze cak i iptables da odradi … ) koji ce na osnovu header request (url) usmjeriti na pripadajuci ip based vhost .

Za ovo zadnje nemam konkretan primjer, ali mogu malo zasuc’ rukave ako je to jedino resenje :slight_smile:

Postoji neko rjesenje, bar prijedlog: http://www.binary-term.de/weblog/index.php/2009/05/13/mehrere-apache-ssl-vhosts-an-einer-ip-adresse/comments/, ali nisam siguran da ce ovo fercerati.

Na kraju ce biti da moramo uzeti vise javnih ip adresa.

Samo mi je pravo cudno da se ne moze recimo certificirati web-server kao cjelina, bez obzira koliko web-site-ova hostira. Recimo, imam server sa odredjenom javnom ip adresom. Kupim certifikat za taj server i na njega stavim ako hocu 100 web-site-ova. Ako je server certificiran, valjda su i stranice na njemu.

Posto odje mozemo samo da nagadjamo (ovo mi izgleda kao multiple wildcard setup, ako postoji nesto tako :smiley: ) najbolje bi bilo da kontaktiras nekog od auth. izdavaca vezano za ovo (verisign, namecheap etc.) i ukratko objasnis situaciju i sta zelis da izbjegnes.

[quote=Amar]Postoji neko rjesenje, bar prijedlog: http://www.binary-term.de/weblog/index.php/2009/05/13/mehrere-apache-ssl-vhosts-an-einer-ip-adresse/comments/, ali nisam siguran da ce ovo fercerati.

Na kraju ce biti da moramo uzeti vise javnih ip adresa.

Samo mi je pravo cudno da se ne moze recimo certificirati web-server kao cjelina, bez obzira koliko web-site-ova hostira. Recimo, imam server sa odredjenom javnom ip adresom. Kupim certifikat za taj server i na njega stavim ako hocu 100 web-site-ova. Ako je server certificiran, valjda su i stranice na njemu.[/quote]
cijeli fazon certifikata je da ga dobijas tj. kupujes po domeni. znaci ako kupis certifikat za www.mysite.com i ocekujes da ce radit za subdomain.mysite.com onda se varas. mozes kupiti certifikat koji ce vazit za *.mysite.com samo sto ti je skuplji. cetrifikat ne kupujes po “masini” …

[quote=maher_][quote=Amar]Postoji neko rjesenje, bar prijedlog: http://www.binary-term.de/weblog/index.php/2009/05/13/mehrere-apache-ssl-vhosts-an-einer-ip-adresse/comments/, ali nisam siguran da ce ovo fercerati.

Na kraju ce biti da moramo uzeti vise javnih ip adresa.

Samo mi je pravo cudno da se ne moze recimo certificirati web-server kao cjelina, bez obzira koliko web-site-ova hostira. Recimo, imam server sa odredjenom javnom ip adresom. Kupim certifikat za taj server i na njega stavim ako hocu 100 web-site-ova. Ako je server certificiran, valjda su i stranice na njemu.[/quote]
cijeli fazon certifikata je da ga dobijas tj. kupujes po domeni. znaci ako kupis certifikat za www.mysite.com i ocekujes da ce radit za subdomain.mysite.com onda se varas. mozes kupiti certifikat koji ce vazit za *.mysite.com samo sto ti je skuplji. cetrifikat ne kupujes po “masini” …[/quote]
Moze se kupiti i multi-domain certifikat. Recimo, kupis multi-domain certifikat za cca. 1200€ za godinu dana. U paket je ukljuceno 5 razlicitih domena. Svaka naredna kosta cca. 180€ godisnje. Maksimalno mozes po certifikatu imati 25 domena. Taj dio nije problematican.

Problem je vezanje certifikata za vhost-ove preko jedne javne IP adrese, a bez SNI-a.