Sertifikat- og privatnøkkelsammenligner — signaturbevis, ikke en gjetning
Sertifikat- & privatnøkkelsammenligner
Lim inn sertifikatet en server bruker og den private nøkkelen som skal settes ut sammen med det, så svarer denne siden på spørsmålet et utrullet nettsted feiler på: kom de to fra samme nøkkelpar? Svaret er ikke en gjetning basert på modulusens lengde eller fingeravtrykk alene — siden signerer en fast utfordring med den private nøkkelen og verifiserer signaturen med den offentlige nøkkelen i sertifikatet. Består verifiseringen, hører de to sammen; feiler den, hjelper det ikke å redigere konfigurasjonen. Begge avlesningene vises side om side med algoritme, nøkkelstørrelse, identifikator for emnets nøkkel og fingeravtrykk av den offentlige nøkkelen, og ingenting av det som limes inn forlater nettleseren.
1. Sertifikat eller kjede
Lim inn så mange blokker som man vil. Hvert sertifikat sjekkes mot hver nøkkel, så en kjede pluss én nøkkel forteller nøyaktig hvilket sertifikat i kjeden nøkkelen hører til — en vanlig overraskelse på en server som serverer feil sertifikat fra en pakke. PEM, ren base64 eller heksadesimal kropp og en PKCS#7 .p7b-fil leses alle; sertifikatkontrollen reviderer selve sertifikatet når nøkkelen er avgjort.
2. Privat nøkkel, eller den offentlige nøkkelen
PKCS#8 (BEGIN PRIVATE KEY), PKCS#1 (BEGIN RSA PRIVATE KEY), SEC1 (BEGIN EC PRIVATE KEY) og en ren SPKI-offentlig nøkkel (BEGIN PUBLIC KEY) forstås alle, i likhet med en nøkkelfil limt inn som base64 eller heksadesimal. En kryptert PKCS#8-nøkkel (BEGIN ENCRYPTED PRIVATE KEY) kan ikke leses av en nettleser og rapporteres som det, med kommandoen som fjerner passordfrasen.
ingenting kontrollert ennå
Eksemplet er et selvsignert sertifikat og den private nøkkelen som hører til det, begge laget for denne siden og som ikke beskytter noe. Bytt nøkkelen med en annen nøkkel for å se den andre dommen, eller legg inn den offentlige nøkkelblokken i stedet for den private for å se at den offentlige nøkkelen stemmer.
En privat nøkkel limt inn i en hvilken som helst nettside fortjener en ekstra tanke først. Denne siden er én fil med ren JavaScript, den laster ingenting fra noe sted og sender ingen forespørsel, så nøkkelen leses, brukes og glemmes inne i denne fanen. Det er likevel et løfte gitt av kode som kan leses, ikke en garanti fra et nettverk som kan ses: håndterer man en produksjonsnøkkel, arbeid frakoblet, og vurder at den tryggeste kontrollen er den samme openssl-kommandoen på egen server. En nøkkel limt inn her lagres aldri, legges aldri i en fil og sendes aldri noe sted — heller ikke via eksportknappene, som skriver funn om nøkkelen og aldri selve nøkkelen.
Hvorfor signering er svaret. To filer kan se like ut og likevel være en feil match: RSA-nøkler sammenlignes med modulus i de fleste veiledninger, men det virker bare for RSA, og en nøkkel kan ha riktig modulus med en skadet eksponent eller feil utfylling. Denne siden beviser paret slik et håndtrykk gjør det — signerer en fast utfordring med den private nøkkelen og verifiserer med den offentlige nøkkelen i sertifikatet — så dommen gjelder for RSA, ECDSA og Ed25519 likt. Når bare den offentlige halvdelen limes inn, sammenlignes de offentlige nøkkelbytene selv med dem i sertifikatet, noe som er like avgjørende for identitet, men uten bevis for at noen har den private halvdelen.
Hva et treff ikke forteller. At nøkkelen er den serveren faktisk laster, at sertifikatet er betrodd, at nøkkelfilen er intakt på disken, eller at nøkkelen ikke er kopiert av noen andre. Det kan heller ikke si om sertifikatet er det en klient vil motta, siden en lastbalanserer eller et CDN foran nettstedet kan servere et annet. For å sjekke hva en levende server faktisk presenterer, kjør openssl s_client -connect example.com:443 -servername example.com -showcerts og lim inn den utdataen i sertifikatboksen.
Hvor filene kommer fra. Sertifikatet er det serveren er konfigurert med, eller det som er eksportert fra en nettleser eller tatt ut av en .p7b-pakke. Den private nøkkelen er filen webserveren leser ved oppstart, typisk noe som privkey.pem eller server.key. Hvis nøkkelen er kryptert, dekrypter en kopi først med openssl pkcs8 -topk8 -nocrypt -in key.pem -out key-plain.pem, lim inn den, og slett deretter kopien.
Samsvarsrapport
Ingenting er kontrollert ennå. Lim inn et sertifikat og en nøkkel over, og trykk Kontroller om de samsvarer. Dommen vises her med beviset bak, og rapporten kan kopieres eller lagres.
Den samme kontrollen med openssl, på egen maskin
# offentlig nøkkel inni sertifikatet openssl x509 -in cert.pem -noout -pubkey | openssl pkey -pubin -outform DER | openssl sha256 # offentlig nøkkel inni den private nøkkelen openssl pkey -in key.pem -pubout | openssl pkey -pubin -outform DER | openssl sha256 # de to digestene er bare like når paret hører sammen # den eldre RSA-only-metoden: sammenlign moduli openssl x509 -in cert.pem -noout -modulus | openssl md5 openssl rsa -in key.pem -noout -modulus | openssl md5
Digestsammenligningen virker for alle nøkkeltyper og stemmer med det denne siden rapporterer som fingeravtrykk av den offentlige nøkkelen, mens modulussammenligningen bare finnes for RSA. Ingen av dem beviser at noen har den private halvdelen — signeringssjekken over gjør det, og det er derfor denne siden bruker den.
Hva rapporten inneholder. Dommen, paret av avlesninger den kommer fra (algoritme, nøkkelstørrelse, kurve, identifikator for emnets nøkkel og fingeravtrykk av den offentlige nøkkelen for sertifikatet og for nøkkelen), og den nøyaktige testen som ble kjørt. Rapporten inneholder aldri selve den private nøkkelen: nøkkelen brukes til å lage en signatur og skrives ikke inn i teksten, JSON-filen eller utklippstavlen. Det som kopieres eller lagres, er trygt å legge ved en sak; nøkkelen som ble limt inn er ikke det, og utklippstavlen bør anses som det eneste andre stedet den noen gang har vært.
Personvern: sertifikatet og nøkkelen leses i fanen, ingenting lastes opp, og siden sender ingen forespørsel i det hele tatt — det finnes ingen prøving og ingen oppslag på denne siden. For å lage et samsvarende par, bruk generatoren for selvsignerte sertifikater; for å be om et sertifikat for en nøkkel man allerede har, bruk CSR-generatoren; for å lese hva et sertifikat inneholder, bruk sertifikatdekoderen.
🔒 SSL- og TLS-verktøy
Verktøy for sertifikater og nøkler som kjører helt i nettleseren.