Saját hitelesítésszolgáltató létrehozása intranethez

Saját hitelesítésszolgáltatót kell létrehoznom egy intranet számára, és sajnos úgy tűnik, hogy erre nincs jó válasz a Biztonságban. SE.

Számos erőforrás van online kapcsolatban ezzel kapcsolatban, de mindegyik különböző és egyesek elavult alapértelmezéseket (MD5 / SHA1 stb.) Használnak, amelyek nem tűnnek olyan megbízhatónak. A openssl.cnf változatok százai is léteznek, egy 10 soros fájltól a hatalmasig, amely alapértelmezés szerint az én disztribúciómhoz érkezett.

Szeretném kanonikus válasz egy egyszerű hitelesítésszolgáltató létrehozásáról a szerver tanúsítványok és kliens tanúsítványok kiadására.

Úgy tűnik, hogy egyesek még mindig nem értik, hogy nem valami nagyvállalat, ahol A CA kompromisszum milliárdos veszteségeket okoz, és ezeket nem lehet könnyedén enyhíteni, hadd magyarázzam el egy kicsit jobban, miért van szükségem a CA-ra:

  • több kiszolgáló kapcsolódik nem biztonságos linkeken keresztül (az Internet ) biztonságosan kell kommunikálnom.

  • Szükségem van egy módra arra, hogy azonosítsam magam az említett szerverekkel az adminisztrációs feladatok elvégzése érdekében, anélkül, hogy 10 másodpercenként oda-vissza mennék a jelszókezelőmhöz.

  • az enyémektől eltérő más hitelesítésszolgáltatóknak képesnek kell lennie a kiszolgálók bármelyikének megszemélyesítésére, bármennyire is valószínűtlen ( de lehetséges ), vagyis .

Ott. Saját PKI és egy gépre telepített tanúsítvány úgy tűnik, hogy tökéletesen megfelel az igényeknek. Az általam használt szoftverek egyike PKI-t is igényel, így csak az önaláírt tanúsítványok használata nem választható.

A PKI veszélyeztetéséhez valakinek kompromittálnia kell a munkagépemet, és ha ez “megtörtént, akkor a támadó már elég sok kárt okozhat, anélkül, hogy megérintené a PKI-t (mivel egyébként SSH-n keresztül bejelentkeznék a szerverre erről a gépről). Ez egy olyan kockázat, amelyet nem vállalok, és ez a PKI nem jelent több kockázatot, mint ami már létezik.

Megjegyzések

  • echo "Abandon all hope, ye who enter here."
  • @KristoferA Ez ‘ s egy intranetnél, ez ‘ s ésszerűbb saját CA-t létrehozni egy vállalati hálózathoz.
  • Egyébként mi van ‘ a Superuser vagy a ServerFault átállításával? Nem ‘ t használja az OpenSSL-t tökéletesen a témában?
  • ” … egy saját aláírású tanúsítvány a legtöbb rendszer által nem ismert hatóság által aláírt tanúsítvány. ” Nem. Az önaláírt tanúsítvány az, amelyben a nyilvános kulcsot, a házirend-attribútumokat és az identitás-attribútumokat a magánkulcs írta alá. megfelel az aláírás által kötött nyilvános kulcsnak. Bár semmi köze ahhoz, hogy a cert ismert forrásból származik-e, definíció szerint igaz, hogy az összes gyökértanúsítvány önjelölt. A különbség az, hogy a gyökércert lehetővé teszi az aláírást, de nem a titkosítást, ami haszontalanná teszi alkalmazás vagy szerver személyes tanúsítványaként.
  • Mi az Andr é azt állítja, hogy az érintett szoftver kifejezetten nem engedélyezi az önaláírt tanúsítványokat személyes tanúsítványként, és mind az ügyfél, mind a szerver tanúsítványoknak közös CA-val kell rendelkezniük. Bár ezek szokatlan követelmények, tökéletesen érvényesek. Azonban a kérés inkább az olyan házirendre vonatkozik, mint a “, a gyökércert elérési útjának hossza nem lehet nagyobb, mint x ” és ” a személyes tanúsítványnak tartalmaznia kell a isCA=No jelzőt és egy nulla elérési utat. ” Sajnos, Azok a házirendek, amelyeken a rendszerbe vetett bizalom nagy része alapul, például a visszavonás, a névtér higiéniája és a gyökérbiztonság, nem ‘ t vannak címezve a openssl.cnf.

Válasz

Ha az infrastruktúrája apró , a CA futtatásának nagy részei (pl. CRL-ek és hasonlók) valószínűleg figyelmen kívül hagyhatók. Ehelyett csak a tanúsítványok aláírása miatt kell aggódnia.

Olyan eszközök sokasága van, amelyek kezelik ezt a folyamatot az Ön számára. Sok évvel ezelőtt még írtam is. De azt, amelyet ajánlok, ha valami igazán egyszerűt szeretnél, az easy-rsa az OpenVPN projektből származik. Ez nagyon vékony burkoló az OpenSSL parancssori eszköz körül. Ha SOK tanúsítványt fogsz kezelni, és valójában visszavonással és egyéb dolgokkal foglalkozol, akkor sokkal összetettebb és funkciókkal teli segédprogramra lesz szükséged. Már több, mint elegendő javaslat található, ezért inkább csak kitartok az alapjairól, amit meg akarsz valósítani.

De itt van az alapvető eljárás. Megmagyarázom az OpenSSL-lel , de bármelyik rendszer megteszi.

Először hozza létre a “root” CA-t – ez egy önaláírt tanúsítvány lesz. Ennek többféle módja van; ez az egyik. a miénk egy 10 éves cert 2048 bites kulccsal.Csúsztassa a számokat a megfelelő módon. Említette, hogy aggódik a hash algoritmus miatt, ezért hozzáadtam a -sha256 -t, hogy biztosítsam, hogy valami elfogadhatóval van aláírva. Titkosítottam a kulcsot az AES-256 használatával, de ez opcionális Meg kell adnia a tanúsítvány nevét és az ilyeneket; ezek a részletek nem különösebben fontosak a root CA számára.

# First create the key (use 4096-bits if that"s what floats your boat) openssl genrsa -aes256 -out root.key 2048 # Then use that key to generate a self-signed cert openssl req -new -x509 -key root.key -out root.cer -days 3652 -sha256 

Ha az első lépésben titkosította a kulcsot, meg kell adnia a jelszót a használja a másodikban. Ellenőrizze a létrehozott tanúsítványt, és győződjön meg arról, hogy az “Alapvető korlátozások” alatt látható-e a “CA: IGAZ”. Ez valójában az egyetlen fontos bit, amely miatt aggódnia kell:

openssl x509 -text < root.cer 

Remek. OK, most írjuk alá a tanúsítványt. Szükségünk lesz egy másik kulcsra, és ezúttal egy kérésre. Újra megkérdezzük a nevéről és címéről. Milyen mezőket tölt be és mit ad meg, az Ön és az Ön alkalmazásának feladata, de a legfontosabb mező a “Közönséges név”. Itt adhatja meg gazdagépnevét vagy bejelentkezési nevét, vagy bármit, amit ez a tanúsítvány igazolni fog.

# Create new key openssl genrsa -aes256 -out client1.key 2048 # Use that key to generate a request openssl req -new -key client1.key -out client1.req # Sign that request to generate a new cert openssl x509 -req -in client1.req -out client1.cer -CA root.cer -CAkey root.key -sha256 -CAcreateserial 

Ne feledje, hogy ez létrehoz egy root.srl nevű fájlt tartsuk egyenesen a sorozatszámunkat. A -CAcreateserial zászló megmondja az openssl-nek, hogy hozza létre ezt a fájlt, így Ön adja meg az első aláírt kéréshez, majd soha többé. És még egyszer láthatja, hol az -sha256 argumentum hozzáadásához.

Ez a megközelítés – mindent manuálisan csinálva – véleményem szerint nem a legjobb ötlet. Ha méretes műveletet futtat , akkor valószínűleg egy olyan eszközre lesz szüksége, amely nyomon tudja követni az összes tanúsítványt az Ön számára.

Ehelyett az volt a lényeg, hogy megmutassam, hogy a kívánt kimenet – a tanúsítványok a kívánt módon írták alá őket – nem az Ön által használt eszközöktől függ, hanem az ezeknek az eszközöknek adott lehetőségektől. A legtöbb eszköz sokféle konfigurációt képes kiadni, mind erős, mind gyenge konfigurációkat, és Önön múlik, hogy megadja-e a kívánt számokat m megfelelő. Az elavult alapértelmezett értékek a kurzus par értékei.

Megjegyzések

  • Fontos megjegyezni, hogy amikor aláírja az ügyféltanúsítványt, ez csak a nyilvános rész. A hitelesítésszolgáltatónak nem szabad továbbítania vagy generálnia magánkulcsot.
  • Bővítheti válaszát a köztes CA tanúsítvány létrehozásával kapcsolatban? Köszönet.
  • @Andr é A köztes tanúsítványok csak normál tanúsítványok, amelyek basicConstraints = CA:TRUE beállítása kiterjesztett attribútumokban van megadva. Semmi varázslat, csak egy újabb tanúsítvány.
  • @tylerl Haver, te rock.
  • Ez a válasz fantasztikus és nagyon hasznos volt, de hozzá kell adnom egy 2017-es frissítést. A Chrome és mások mostantól megkövetelik az x509v3 subjectAlternativeName kiterjesztést; különben érvénytelennek tekintik a tanúsítványt, még akkor is, ha a CA gyökértanúsítványa megfelelően van telepítve a rendszerre. Egy ideig küzdöttem a megfelelő megoldással. Ez az oldal számomra felbecsülhetetlen volt, és megoldotta számomra a rejtvény utolsó darabját: cmrg.fifthhorseman.net/wiki/SubjectAltName . Az IMO, a SAN hozzáadása aláíráskor, szemben a kéréssel, egyszerûbb és inkább hasonlít ahhoz, amit a nyilvános CA-k ténylegesen végeznek.

Válasz

Ha valóban hitelesítésszolgáltató szeretne lenni, vegye figyelembe az ezzel kapcsolatos biztonsági következményeket.

  1. Az intranet gyökér CA létrehozásához használt magánkulcsnak szó szerint kell lennie. széfbe kell zárni. És az említett széfhez való hozzáférést fizikailag ellenőrizni kell.
  2. Egy saját aláírású root CA használatával arra kényszeríti a felhasználókat, hogy ne csak bízzanak abban, hogy a kulcsok biztonságos őrzésével kellő gondosságot hajtanak végre, hanem egy kezdetben nem megbízható gyökér beszúrására is. a tanúsítványláncukba.
  3. Ez megtöri az OSCP tűzési funkcióit is a tanúsítványlánc külső ellenőrzése tekintetében, ami elsősorban az identitáskezelési szolgáltatások létezésének oka.

Jó néhányan vitatják a saját CA kezelésének okait, mint például; egy vállalati intranetre vonatkozik, ahol az asztali verzióink egy része tartalmazza a ca gyökeret, vagy kevés felhasználó számára szól.

Bár nem feltétlenül helytelen ezt megtenni, és bizonyos előnyöket engedhet meg magának tagadja meg azt az ellenőrzési láncot, amelyre a tanúsítvány alapú identitáskezelést építették.

Ha úgy dönt, hogy saját root root-ot vezet be, akkor mindenképpen kövesse ugyanazokat a biztonsági gyakorlatokat, mint bármely más root ca-t. utoljára azt szeretné, ha valaki kompromittálná a root root-jához használt magánkulcsot, és elkezdené aláírni az adathalász kampányok tanúsítványait az ügyfelek ellen.

Rengeteg bevált gyakorlati útmutató érhető el ehhez, NIST ( Nemzeti Szabványügyi és Technológiai Intézet) egy együttműködő csoport, amely a számítógépes biztonsági témák különféle szabványaiban segít.

Ajánlott olvasmány:
Auditálás (PDF)
Katasztrófa utáni helyreállítás (PDF)
Nyilvános kulcsú rendszerek (PDF)
Sans intézet kisebb PKI-telepítések

Ok, úgy látom, hogy frissítette a kérdését, hogy konkrétabb legyen.

Két dokumentum az openssl.cnf fájl konfigurálásához a CA sajátosságaihoz:

https://www.openssl.org/docs/apps/ca.html

https://www.openssl.org/docs/apps/config.html

Tudomásul veszem, hogy ez nem biztos, hogy a kívánt válasz, hanem azért, mert mindenkinek más a környezete és a követelményei meg kell határoznia a CA megvalósításának hatókörét a jó példa konfigurációhoz.

Megjegyzések

  • Ott ‘ s ok nélkül a saját hitelesítésszolgáltató ‘ nem tudja elvégezni az OCSP-t. Még OpenSSL parancssor is képes rá, és hogy ‘ s a lehető legalacsonyabb sávról.
  • az openssl linkek száma már 404

Válasz

Ott erre nincs mód egyszerűen. vannak olyan eszközök, amelyek segítségével könnyedén elindulhat.

mint:

egyik sem teljes PKI-t eltekintve az EJBCA-tól, de ez nem csekély a beállítás során.

  • Az XCA egy kicsi kezelő eszköz, amely grafikus felületet biztosít a tanúsítványok előállításához, aláírásához és visszavonásához.
  • Az EJBCA vagy Enterprise Java Beans tanúsító hatóság egy JBOSS / Jetty Webapp, amely képes teljes körű PKI infrastruktúrát végrehajtani egy vállalkozás számára.
  • Az openssl az alapvető parancssori eszköz. megteheti a hitelesítésszolgáltató összes offline bitjét, de az ellenőrzést egyik sem (a dobozon kívül). saját OCSP-hitelesítőket készíthet vele, de magának kell elkészítenie az “online” kódot.

Ha minden megfelelő a megfelelő, akkor az openssl config. Az XCA segít létrehozni őket. (rendelkezik egy openssl konfigurációs exportálási funkcióval

Megjegyzések

  • Az EJBCA most rendelkezik egy virtuális gép-képpel, amelyet használhat. Egyébként ” nem triviális a ” beállításához alulbecslésnek tekinthető. Alapjában véve egy hatalmas ant szkript próbálja konfigurálni a ( JBoss) alkalmazáskiszolgáló, amely képes (és az én esetemben meg fog ) meghibásodni.
  • a virtuális gép képének vagy kiértékelésének célja, ezért nem ajánlom termelési kiszolgálónak.
  • Lehet, hogy utánanézek az XCA-nak. Az EJBCA határozottan nem ‘ egy lehetőség – egy webes felület felesleges támadási felületet ad hozzá, és nehezebb beállítani. openssl.
  • @Andr é az EJBCA vonatkozásában a parancssorból is használható, így nyertél ‘ t nem kell feltennie a webes felületet. De ‘ ez egy vállalati szintű dolog, és valószínűleg túlteljesíti az Ön céljait es (és ezt úgy mondom, mint aki megél, amivel dolgoznak).

Válasz

Egyeseknek jó háttér, kérjük, olvassa el a Saját tanúsítványkezelő középszerűség központ létrehozása és működtetése című előadásomat . A bemutató lényege, hogy a leginkább szükséges dolog nem a futtatandó parancsok listája, hanem a kereskedelmi CA működtetésében részt vevő különféle vezérlők mély ismerete, azok kölcsönhatása, a hatások eltávolításának pontos hatása. az egyik, többük eltávolításának kumulatív hatása, valamint a csökkentett biztonság kompenzálásához szükséges enyhítő ellenőrzések.

Ezért nincs “kanonikus válasz az egyszerű CA létrehozására”. a teljes ISO útvonalon haladsz, kezdve egy kulcs aláíró féllel, légréses és boltozatos kettős gyökértanúsítvánnyal, több közbenső aláíróval, visszavonási szerverekkel stb., stb., vagy pedig kompromisszumot kell kidolgoznod az egyedi költség / haszon és kockázat alapján A vállalkozás kész elfogadni. Bárkinek, aki elegendő készséggel és tapasztalattal rendelkezik ahhoz, hogy ezt az értékelést definíció szerint elvégezze, nincs szüksége a csalólapra. A helyes parancsszintaxist elemezhetik az elvégzendő üzleti funkció és a követelmény végrehajtásához használt biztonsági primitívek mély megértése alapján.

Az előadásban olyan üzletek történetei olvashatók, amelyek ezen az úton haladtak és szörnyen tévedtek. Bizonyos esetekben az értékelésem arról számolt be, hogy semmit sem tudok tenni a köztes szoftverek biztonságával, valószínűleg felül lehetne oldani a belső CA eredendő gyengeségeit. Bárki az Egyesült Államokban tudja, hogy valószínűleg szolgáltatásokat vásárol legalább egy olyan szállítótól, akire a bemutató utal. Ezek bankok, hitelszövetkezetek, egészségbiztosítók, kiskereskedők és még sok más.

Mivel az ajánlások “helyes” megköveteléséhez a válaszadónak fontos feltételezéseket kell tennie az Ön elfogadható kockázati profiljaival kapcsolatban, és Önnek fontos feltételezéseket kell tennie arról, hogy az Ön és az ő kockázati elképzeléseinek milyen mértékben igazodnak és illeszkednek. szinkronban már maga a javaslat is kockázatos. A legtöbb ilyen esetben a bemutatott oktatóanyagok alkalmasságának értékelése inkább a prezentációhoz kapcsolódik, mint az eljárásaik követéséből adódó tényleges biztonsági szinthez. Ha jól szervezett és világosan tagolt, ez SOKKAL többet számít, mint hogy hatékony-e. Kiválasztjuk azt a kanonikus csalólapot, amely a nek tűnik a legjobban.

Ezen okok miatt nem hiszem, hogy egy hiteles szakértő megfelelő és naprakész openssl.cnf fájlokat”, de jobb esetben egy értékelési folyamatot nyújthat a követelmények és az elfogadható kockázat teljesebb értékeléséhez. Mivel az eredményre fogadja a vállalkozást, egyetlen hiteles szakértő sem tenne ilyet a szerződés. Az Ön által kapott ajánlásoknak szinte definíció szerint egy in hiteles szakértőtől kell származniuk. Sok szerencsét.

Megjegyzések

  • Még a belső erőforrások intranetjére is? Jelezheti azt is, hogy a prezentáció a sajátja.
  • ” Még egy intranet a belső erőforrásokhoz? ” Különösen az intranet számára, mivel ‘ s ahol a legtöbb adatszegés bekövetkezik. ” Érdemes jeleznie hogy az előadás a sajátja. ” Úgy gondoltam, hogy az értékelések során szerzett tapasztalataim ismertetésekor volt, de pontot vettem. ‘ frissítettem.

Válasz

Kövesse ezeket utasítások a Windows alapú CA konfigurálásához. Mivel klienstanúsítványokat ad ki, vegye figyelembe, hogy az SHA2 kivonatok nem támogatottak az XP-n.

Az egyszerű válasz:

  1. Az AD telepítése
  2. Vállalati hitelesítésszolgáltató telepítése a tartományvezérlőre
  3. Szerkessze a tanúsítványsablont a végfelhasználói tanúsítványok kiadásához (állítsa be a felhasználók engedélyét az önregisztrációra vagy egy weboldal megnyitására)
  4. Telepítse a gyökértanúsítvány nyilvános kulcsát az összes kiszolgálóra, amely ellenőrzi a felhasználókat.
  5. Ha a felhasználók AD-n vannak, akkor a GPO használatával engedélyezze az automatikus regisztrációt

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

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