Jeg trenger å opprette min egen CA for et intranett, og dessverre ser det ut til at det ikke er noe godt svar om dette på sikkerhet. SE.
Det er mange ressurser på nettet om dette, men alle er forskjellige, og noen bruker utdaterte standardverdier (MD5 / SHA1, osv.) Som ikke virker så pålitelige. Det er også hundrevis av forskjellige varianter av openssl.cnf
, alt fra en 10-linjers fil til den enorme som kom som standard med distribusjonen min.
Jeg vil gjerne et kanonisk svar om å sette opp en enkel CA for utstedelse av servercert og klientsertifikat.
Det ser ut til at det virker som om noen fortsatt ikke forstår at jeg ikke er noe stort selskap der et CA-kompromiss forårsaker tap på milliarder og kan ikke reduseres enkelt, så la meg forklare litt bedre hvorfor jeg trenger CA:
-
flere servere koblet via usikre lenker (Internett ) må kommunisere sikkert.
-
Jeg trenger en måte å identifisere meg overfor disse serverne for å utføre administrative oppgaver, uten å gå frem og tilbake til passordbehandleren hvert 10. sekund.
-
nei andre CAer enn mine burde kunne imitere noen av serverne, uansett hvor usannsynlig ( men mulig ) altså .
Der. Min egen PKI og et sertifikat installert på hver maskin ser ut til å passe perfekt. En av programvaren jeg bruker krever også bruk av PKI, så bare bruk av selvsignerte sertifikater er ikke et alternativ.
For å kompromittere PKI, trenger noen å kompromittere arbeidsmaskinen min, og hvis det «ferdig, kan angriperen allerede gjøre ganske mye skade uten å berøre PKI (da jeg uansett ville logge på via SSH til serveren fra denne maskinen). Det er en risiko jeg godtar å ta, og denne PKI tilfører ikke mer risiko enn det som allerede er.
Kommentarer
Svar
Hvis infrastrukturen din er liten , mye av detaljene i å kjøre en CA (f.eks. CRL og lignende) kan sannsynligvis ignoreres. I stedet er alt du virkelig trenger å bekymre deg for å signere sertifikater.
Det er mange verktøy der ute som vil håndtere denne prosessen for deg. Jeg skrev til og med en for mange år siden. Men den jeg anbefaler hvis du vil at noe veldig enkelt er easy-rsa fra OpenVPN-prosjektet. Det er en veldig tynn innpakning rundt OpenSSL-kommandolinjeverktøyet. Hvis du skal administrere MYE sertifikater og faktisk har å gjøre med tilbakekalling og sånt, vil du ha et mye mer komplekst og funksjonelt komplett verktøy. Det er mer enn nok forslag som allerede er gitt, så i stedet vil jeg bare holde meg til det grunnleggende om hva du prøver å oppnå.
Men her er den grunnleggende prosedyren. Jeg forklarer det med OpenSSL , men ethvert system vil gjøre det.
Start med å opprette «root» CA – det vil være et selvsignert sertifikat. Det er flere måter å gjøre dette på. Dette er en. Vi vil lage vårt 10-års cert med 2048-bit nøkkel.Juster tallene etter behov. Du nevnte at du var bekymret for hashingalgoritme, så jeg la til -sha256
for å sikre at den er signert med noe akseptabelt. Jeg krypterer nøkkelen med AES-256, men det er valgfritt . Du blir bedt om å fylle ut sertifikatnavnet og slikt. disse detaljene er ikke spesielt viktige for en rot-CA.
# 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
Hvis du krypterte nøkkelen i første trinn, må du oppgi passordet til bruk den i det andre. Sjekk det genererte sertifikatet ditt for å forsikre deg om at du ser «CA: TRUE» under «Grunnleggende begrensninger». Det er egentlig den eneste viktige biten du trenger å bekymre deg for:
openssl x509 -text < root.cer
Kult. OK, la oss nå signere et sertifikat. Vi trenger en ny nøkkel og denne gangen en forespørsel. Du blir spurt om navnet ditt og adressen din igjen. Hvilke felt du fyller ut og hva du leverer, er opp til deg og søknaden din, men feltet som betyr mest er «Common Name». Det er der du oppgir vertsnavnet eller påloggingsnavnet ditt eller hva dette sertifikatet skal attestere.
# 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
Merk at dette oppretter en fil som heter root.srl til hold serienumrene våre rett. -CAcreateserial
-flagget forteller openssl om å opprette denne filen, så du leverer den for den første forespørselen du signerer og aldri mer. Og nok en gang kan du se hvor å legge til argumentet -sha256
.
Denne tilnærmingen – å gjøre alt manuelt – er etter min mening ikke den beste ideen. Hvis du kjører en betydelig operasjon , vil du sannsynligvis ha et verktøy som kan holde oversikt over alle sertifikatene dine for deg.
I stedet var poenget mitt her å vise deg at utdataene du ønsker – sertifikatene signerte slik du vil dem – er ikke avhengig av verktøyene du bruker, men heller alternativene du gir til disse verktøyene. De fleste verktøy kan levere et bredt utvalg av konfigurasjoner, både sterke og svake, og det er opp til deg å oppgi tallene du dee m passende. Utdaterte standardverdier er like for kurset.
Kommentarer
- Det er ‘ det er viktig å merke seg at når du signerer et klientsertifikat, det er bare offentlig del. Ingen privat nøkkel skal overføres eller genereres av CA.
- Kan du utvide svaret ditt når du oppretter et mellomliggende CA-sertifikat? Takk.
- @Andr é Mellomliggende certs er bare normale certs med
basicConstraints = CA:TRUE
satt i sine utvidede attributter. Ingenting magisk, bare nok et sertifikat. - @tylerl Dude, du rocker.
- Dette svaret er FANTASTISK og var veldig nyttig, men jeg har en oppdatering fra 2017 å legge til. Chrome og andre krever nå x509v3
subjectAlternativeName
utvidelsen; Ellers anser de sertifikatet som ugyldig, selv med et CA-rotsertifikat riktig installert på systemet. Jeg slet en stund med å finne den rette løsningen. Denne siden var uvurderlig for meg, og løste den siste brikken i puslespillet for meg: cmrg.fifthhorseman.net/wiki/SubjectAltName . IMO, å legge til SAN når du signerer, i motsetning til når du ber om det, er både enklere og mer som det offentlige CAer faktisk gjør.
Svar
Hvis du virkelig ønsker å være CA, må du ta hensyn til sikkerhetsimplikasjonene ved å gjøre det.
- Den private nøkkelen som brukes til å generere root CA for intranettet, bør bokstavelig talt være låst i et safe. Og tilgang til nevnte safe skal overvåkes fysisk.
- Ved å bruke en selvsignert root CA tvinger brukerne dine til ikke bare å stole på at du utfører påpasselig aktsomhet med sikker beskyttelse av nøkler, men også å sette inn en opprinnelig upålitelig rot kan inn i sertifikatkjeden.
- Dette bryter også OSCP-stiftingsfunksjonalitet med hensyn til ekstern verifisering av sertifikatkjeden, og det er årsaken til at identitetsadministrasjonstjenester eksisterer i utgangspunktet.
Ganske mange vil argumentere for begrunnelsen bak å administrere din egen CA, for eksempel; det er for et bedriftsintranett der deler av skrivebordet vårt inkluderer roten ca, eller det er for et lite antall brukere.
Selv om det ikke nødvendigvis er galt å gjøre det og kan ha noen fordeler, gjør det neger bekreftelseskjeden som sertifikatbasert identitetsadministrasjon ble bygget for.
Hvis du bestemmer deg for å implementere din egen root ca, må du bare sørge for at du følger samme sikkerhetspraksis som alle andre root ca bruker. det siste du vil ha, er at noen kompromitterer den private nøkkelen som brukes til root ca og begynner å signere sertifikater for phishing-kampanjer mot kundene dine.
Det er mange guider for beste praksis tilgjengelig for dette, NIST ( National Institute for Standards and Technology) er en samarbeidsgruppe som bistår i ulike standarder for datasikkerhetsemner.
Anbefalt lesing:
Auditing (PDF)
Disaster Recovery (PDF)
Public Key Systems (PDF)
Sans institute ang. mindre PKI-distribusjoner
Ok, jeg ser at du oppdaterte spørsmålet ditt for å være mer spesifikt.
To dokumenter for å konfigurere openssl.cnf-filen for CA-spesifikasjoner:
https://www.openssl.org/docs/apps/ca.html
https://www.openssl.org/docs/apps/config.html
Jeg er klar over at dette kanskje ikke er svaret du vil ha, men fordi alles miljø og krav er forskjellige, skal du må definere et omfang for CA-implementeringen din for et godt eksempelkonfigurasjon.
Kommentarer
- Der ‘ ingen grunn til at din egen CA kan ‘ ikke gjøre OCSP. Selv OpenSSL kommandolinje kan gjøre det, og at ‘ s om lavest mulig linje.
- openssl-lenker er nå 404
Svar
Der er ingen måte å gjøre dette rett og slett. det er noen verktøy som kan hjelpe deg med å komme i gang enkelt.
som:
ingen av dem er en full PKI bortsett fra muligens EJBCA, men det er ikke trivielt å sette opp.
- XCA er et lite frontend-verktøy for å få et grafisk grensesnitt for å generere, signere og tilbakekalle sertifikater.
- EJBCA eller Enterprise Java Beans Certificate Authority er en JBOSS / Jetty Webapp som kan gjøre hele PKI-infrastrukturen for en bedrift.
- openssl er det grunnleggende kommandolinjeverktøyet. det kan gjøre alle de frakoblede bitene i en CA, men ingen av bekreftelsen (utenom boksen). du kan lage dine egne OCSP Verifiers med det, men du må lage «online» koden for det selv.
Hvis alt du søker er riktig openssl-konfigurasjon. XCA kan hjelpe deg med å generere dem. (den har en openssl-konfigurasjonseksportfunksjon
Kommentarer
- EJBCA har nå et VM-bilde du kan bruke. Ellers » ikke trivielt å sette opp » kan betraktes som en underdrivelse. Det er i utgangspunktet et stort
ant
skript som prøver å konfigurere ( JBoss) applikasjonsserver som kan (og i mitt tilfelle vil ) brytes ned. - VM-bildet er eller evalueringsformål, så jeg vil ikke anbefale det for en produksjonsserver.
- Jeg kan se på XCA. EJBCA er definitivt ikke ‘ t et alternativ – et webgrensesnitt legger til en unødvendig angrepsflate og er vanskeligere å sette opp. Jeg foretrekker definitivt å bruke bare openssl skjønt.
- @Andr é når det gjelder EJBCA, kan den også brukes fra kommandolinjen, så du vant ‘ t må avsløre nettgrensesnittet. Men det ‘ er en bedriftsnivå og sannsynligvis overkill for ditt formål es (og jeg sier dette som noen som lever av å jobbe med det).
Svar
For noen god bakgrunn, vennligst se presentasjonen min Slik bygger du og driver ditt eget sertifikatadministrasjonssenter for middelmådighet . Kjernen i presentasjonen er at det mest påkrevde ikke er en liste over kommandoene som skal kjøres, men snarere en dyp forståelse av alle de forskjellige kontrollene som går til drift av en kommersiell CA, hvordan de samhandler sammen, den nøyaktige virkningen av å fjerne en av dem, den kumulative effekten av å fjerne flere av dem, og de avbøtende kontrollene som er nødvendige for å kompensere for redusert sikkerhet.
Dette er grunnen til at det ikke er noe «kanonisk svar om å sette opp en enkel CA.» du går hele ISO-ruten, og starter med en nøkkelsigneringsfest, luftgappede og hvelvede dupliserte rotserter, flere mellomliggende signatorer, tilbakekallingsservere osv., etc., ellers må du lage et kompromiss basert på den unike kostnad / nytte og risiko profilere virksomheten er villig til å akseptere. Enhver med tilstrekkelig dyktighet og erfaring til å gjøre denne vurderingen per definisjon trenger ikke jukselaget. De kan analysere riktig kommandosyntaks basert på en dyp forståelse av forretningsfunksjonen som skal oppnås og sikkerhetsprimitivene som brukes til å implementere dette kravet.
I presentasjonen er historier fra ekte engasjementer fra butikker som gikk ned denne veien og fikk det veldig galt. I noen tilfeller rapporterte vurderingen min at absolutt ingenting jeg kan gjøre med mellomvaresikkerheten din muligens kan overvinne de iboende svakhetene til den interne CA. Alle i USA bør innse at de sannsynligvis kjøper tjenester fra minst en av leverandørene som presentasjonen refererer til. Dette er banker, kredittforeninger, helseforsikringsselskaper, forhandlere og mer.
Siden for at anbefalingene skal være «riktige» krever svareren å gjøre store forutsetninger om dine akseptable risikoprofiler, og at du skal legge store forutsetninger om i hvilken grad dine og deres ideer om risiko er tilpasset og i synkronisering er selve forslaget risikabelt. I de fleste slike tilfeller har vurderingen av egnetheten til opplæringen gitt mer å gjøre med presentasjonen enn med det effektive sikkerhetsnivået som følge av prosedyrene. Hvis det er godt organisert og tydelig artikulert, betyr dette MYE mer enn om det er effektivt. Vi velger det kanoniske juksearket som ser best ut for oss.
Av disse grunnene tror jeg ikke en troverdig ekspert vil gi «riktig og oppdatert openssl.cnf
filer,» men kan i beste fall gi en evalueringsprosess for å vurdere kravene og akseptabel risiko mer fullstendig. Siden du satser virksomheten på resultatet, vil ingen troverdig ekspert gjøre dette utenfor beskyttelsen av En kontrakt. Eventuelle anbefalinger du får, må nesten per definisjon være fra en in pålitelig ekspert. Lykke til.
Kommentarer
- Selv for et intranett for interne ressurser? Du vil kanskje også indikere at presentasjonen er din egen.
- » Selv for en intranett for interne ressurser? » Spesielt for intranettet siden ‘ s der de fleste datainnbrudd forekommer. » Det kan også være lurt å indikere at presentasjonen er din egen. » Jeg trodde jeg hadde da jeg beskrev min erfaring med å gjøre vurderingene, men poeng tatt. Jeg ‘ har oppdatert den.
Svar
Følg disse instruksjoner for å konfigurere en Windows Based CA . Siden du utsteder klientsertifikater, må du være oppmerksom på at SHA2-hashes ikke støttes på XP.
Det enkle svaret er å:
- Installer AD
- Installer en bedrifts-CA på domenekontrolleren
- Rediger sertifikatmalen for å utstede sluttbruker-sertifikater (angi tillatelse for brukere til å registrere seg selv, eller gå til en webside)
- Distribuere den offentlige nøkkelen til rotsertifikatet til alle servere som validerer brukere
- Hvis brukerne er på AD, bruk GPO for å aktivere automatisk påmelding
echo "Abandon all hope, ye who enter here."
isCA=No
-flagget og en banelengde på null. » Dessverre, retningslinjer som det meste av tilliten til systemet er basert på, for eksempel tilbakekalling, navnehygiene og rotsikkerhet, er ikke ‘ t adressert iopenssl.cnf
.