SSL kliens azonosítás érvényes valid certekkel?

Sziasztok!

Szeretnék egy olyan oldalon ssl "beléptetést" csinálni, ahova rendelkezem érvényes "megbízható" tanúsítvánnyal.
Saját magam által aláírtat már csináltam többször is, egész jó leírások vannak hozzá, perfektül működik. Kliens generálja a csr-t, visszakapja tőlem a generált crt-t. Nálam pedig saját CA dekkol. Pirosan virít az oldal, így be kell importálni a saját ca-t, de működik perfektül.

De mi a helyzet amikor rendes vásárolt tanúsítvány van a szerveren?
Ilyenkor mi a menete a generálásnak? Erre nem nagyon találtam leírást eddig.

(linux szerver, apache webszerverrel)

köszi

Hozzászólások

A kliens certificate nem kell hogy összefüggésben legyen a webszerver certjével, attól függetlenül is működik (vagyis meghagyhatod a saját CA root-ot a klienshez). Ha mindenképp szeretnéd összekötni őket, akkor a saját CA-t aláírod a webszerver tanusítványával, vagy azt használod a kliensek aláírásához, csak értelme nincs :)

// Happy debugging, suckers
#define true (rand() > 10)

Tehát apache alatt megmarad a 3 elem:
SSLCertificateFile
SSLCertificateKeyFile
SSLCACertificateFile

Az eredeti fájlokkal.

Utána simán generálok elölről mintha saját magam akarnék aláírogatni csak épp a saját ca crt-t nem teszem bele az apache-ba és ennyi?

Bocs ha kicsit értetlen vagyok :)

Köszi, hogy foglalkozol a nyűgömmel.

A webszervered certjét az első kettő konfig sor által megjelölt helyre kell tenni (ezt írta alá a publikus ca).
A kliens certeket a saját ca-dal kell aláírni, aminek a certjét pedig az utolsó konfig sor szerinti helyre kell tenni - ide meg nem teszed be a webszervered publikus ca-jának a certjét.

Webszerver->böngésző irány:
SSLCertificateFile
SSLCertificateKeyFile

böngésző->webszerver irány
SSLCACertificateFile

Az első esetben a böngésző fogja ellenőrizni hogy egy hiteles CA által aláírt tanúsítványt használsz, ellenkező esetben visít.
A második esetben pedig a webszervered ellenőrzi hogy a böngészőnek adott certificate az SSLCACertificateFile megadott CA által van-e kiállítva.

A két iránynak semmi köze egymáshoz

// Happy debugging, suckers
#define true (rand() > 10)

a szerveroldali konfiguracioban ugyan ugy kell konfigolni fuggetlenul attol hogy trusted CA altal alairt vagy self-signed certed van.

trusted CA-nal vagy azt lehet csinalni, hogy rabizod a vendorra a private kulcs generalast is es visszakapod azt is a certtel egyutt, vagy ha a sajat private kulcsod akarod hasznalni, akkor csinalsz azzal lokalban egy CSR-t( https://en.wikipedia.org/wiki/Certificate_signing_request ) amit odaadsz/feltoltesz az altalad valasztott vendornak, aki ebbol a private kulcsod nelkul tud alairt certet generalni, amit visszakapsz, es onnantod a private kulcsoddal hasznalhato a kiszolgalasra.

ami manapsag meg szinten gyakori, hogy a CA-k nem a bongeszokben trusted root certekkel irjak ala a certeket (mert akkor sokkal nagyobb problema lenne ha 1-1 ca root key valahogy nyilvanossagra kerul), hanem a bongeszoben szereplo root CA-val ala van irva tobb intermediate CA, es ezek kozul valamelyikkel lesz alairva a te certed.
ilyenkor a szerver configban gondoskodnod kell rola, hogy a sajat certed mellett minden szukseges intermediate cert is at legyen adva a kliensnek a sikeres certificate chain bejarashoz.

kezdesnek erdemes lehet megnezni a startssl-t (ingyen ad maganszemelynek egyszeru de minden standard bongeszoben tamogatott certet): http://hup.hu/node/98658 illetve a https://letsencrypt.org/ hasonlo celra egy modernebb megoldas de kicsit melosabb beloni.

Várjunk, az, hogy a szerveren ott legyen az ssl és biztonságos kapcsolatot nyújtson ez oké.
Ügyfél belép az oldalra, zöld https sáv, örülünk.

De azt szeretném, hogy csak olyan ügyfél léphessen be az oldalra aki rendelkezik tőlem kapott cert-el. Amúgy pontosan úgy ahogy a startssl alatt kell loginolni.

Tehát ssl handshake -et szeretnék úgy, hogy közben nem saját ca certet használok.

Nem fogsz tudni olyan rendes certet venni, amivel te további certeket írhatsz alá. (Persze jó pénzért bármit... Illetve ki lehet állítani olyat is, ha nagyon akarod, csak el fog bukni nagyon alapvető validációkon, magyarul használhatatlan lesz minden értelmes, nem bugos szoftverrel.) Muszáj a saját CA a klienseidnek.

--

Te kevered a két irányt.
A webszervered által bemutatott certnek semmi köze a kliensek által használt certekhez. A webszerveredet olyan ca kell aláírja, amit a kliensek elfogadnak, míg a klienseknek kiadott certeket meg a saját ca-dal kell aláírni. Persze használhatod erre a célra (is) valamelyik publikus ca-t, csak akkor egyfelől a kliensek certjét a ca-tól kell kérni (ez nem lesz ingyen), plusz innentől kezdve ebben az idegen ca-ban kell megbíznod - én nem tenném, sokkal biztonságosabb a saját ca erre a célra.

ok, szoval te a klienseidet akarod certtel azonositani (mokas modon egyebkent a startssl pont igy azonositja a sajat felhasznaloit, szoval ha toluk akarsz kerni valid certet akkor eloszor regisztralsz es a bongeszobe telepiteni kell a client certet amit kapsz toluk).
https://httpd.apache.org/docs/2.4/ssl/ssl_howto.html#accesscontrol
a certeket ebben az esetben te generalod/irod ala, a kliensbe meg fel kell venni/be kell importalni.

szerk: kozben latom mar hogy megoldodott Mcsiv segitsegevel.