Varmenteen & yksityisen avaimen vastaavuus

Liitä palvelimen käyttämä varmenne ja yksityinen avain, joka on tarkoitus ottaa käyttöön sen kanssa, niin tämä sivu vastaa kysymykseen, johon käyttöön otettu sivusto kaatuu: kuuluivatko kaksi samasta avainparista? Vastaus ei ole arvaus pelkistä moduulin pituuksista tai sormenjäljistä — sivu allekirjoittaa kiinteän haasteen yksityisellä avaimella ja vahvistaa allekirjoituksen varmenteen sisällä olevalla julkisella avaimella. Jos vahvistus onnistuu, kaksi kuuluvat yhteen; jos se epäonnistuu, mikään määritysten muokkaaminen ei saa niitä toimimaan. Molemmat lukemat näytetään rinnakkain algoritmin, avaimen koon, subjektin avaintunnisteen ja julkisen avaimen sormenjäljen kanssa, eikä mikään liitetty poistu selaimesta.
1. Varmenne tai ketju
Liitä niin monta lohkoa kuin halutaan. Jokainen varmenne tarkistetaan jokaista avainta vastaan, joten ketju ja yksi avain kertovat tarkasti, mihin ketjun varmenteeseen avain kuuluu — yleinen yllätys palvelimella, joka tarjoaa paketista väärän varmenteen. Luetaan PEM, paljas base64- tai heksadesimaalirunko ja PKCS#7 .p7b-tiedosto; varmenteen tarkistaja tarkastaa varmenteen itsensä, kun avain on ratkaistu.
2. Yksityinen avain tai julkinen avain
PKCS#8 (BEGIN PRIVATE KEY), PKCS#1 (BEGIN RSA PRIVATE KEY), SEC1 (BEGIN EC PRIVATE KEY) ja paljas SPKI-julkinen avain (BEGIN PUBLIC KEY) tunnistetaan kaikki, samoin base64- tai heksadesimaaliksi liitetty avaintiedosto. Salattua PKCS#8-avainta (BEGIN ENCRYPTED PRIVATE KEY) selain ei voi lukea, ja se ilmoitetaan sellaisena komentoineen, jotka poistavat salasanalauseen.
ei vielä tarkistettu
Esimerkki on itseallekirjoitettu varmenne ja siihen kuuluva yksityinen avain, molemmat tehty tälle sivulle eivätkä suojaa mitään. Vaihda avain mihin tahansa toiseen avaimeen nähdäkseen toisen tuloksen, tai korvaa yksityinen avain julkisella lohkolla nähdäkseen julkisen avaimen vastaavuuden.
Yksityisen avaimen liittäminen mihin tahansa verkkosivuun kannattaa harkita ensin. Tämä sivu on yksi tavallinen JavaScript-tiedosto, joka ei lataa mitään mistään eikä tee pyyntöjä, joten avain luetaan, käytetään ja unohdetaan tämän välilehden sisällä. Tämä on silti lupaus koodista, jonka voi lukea, eikä takuu verkosta, jota voi nähdä: tuotantoavaimia käsiteltäessä kannattaa työskennellä offline-tilassa ja pitää turvallisimpana tarkistuksena sama openssl-komento omalla palvelimella. Tänne liitettyä avainta ei koskaan tallenneta, kirjoiteta tiedostoon eikä lähetetä minnekään — vientipainikkeetkaan mukaan lukien, jotka kirjoittavat avaimesta havaintoja eivätkä koskaan itse avainta.
Miksi allekirjoitus on vastaus. Kaksi tiedostoa voi näyttää samanlaisilta ja silti olla eri parit: useimmissa oppaissa RSA-avaimia verrataan moduulin perusteella, mutta se toimii vain RSA:lle, ja avaimessa voi olla oikea moduuli vaurioituneella eksponentilla tai väärällä täytteellä. Tämä sivu todistaa parin samalla tavalla kuin kättely tekee — allekirjoittaa kiinteän haasteen yksityisellä avaimella ja vahvistaa allekirjoituksen varmenteen julkisella avaimella — joten tulos pätee yhtä hyvin RSA:lle, ECDSA:lle ja Ed25519:lle. Kun liitetään vain julkinen puoli, julkisen avaimen tavut verrataan varmenteen tavuihin, mikä on identiteetin kannalta yhtä ratkaiseva, mutta ilman todistusta siitä, että joku hallitsee yksityistä puolta.

Mitä vastaavuus ei kerro. Ei sitä, että avain on se, jonka palvelin todellisuudessa lataa, että varmenteeseen luotetaan, että avaintiedosto on ehjä levyllä tai että joku muu ei ole kopioinut avainta. Se ei myöskään kerro, onko varmenne se, minkä asiakas saa, sillä sivuston edessä oleva kuormantasaaja tai CDN voi tarjota toisen. Jos halutaan tarkistaa, mitä elävä palvelin todella esittää, aja openssl s_client -connect example.com:443 -servername example.com -showcerts ja liitä tuloste varmennekenttään.

Mistä tiedostot tulevat. Varmenne on se, mihin palvelin on määritetty, tai selaimesta viety varmenne tai .p7b-paketista otettu varmenne. Yksityinen avain on tiedosto, jonka web-palvelin lukee käynnistyksessä, tyypillisesti jotain kuten privkey.pem tai server.key. Jos avain on salattu, pura ensin kopio komennolla openssl pkcs8 -topk8 -nocrypt -in key.pem -out key-plain.pem, liitä se ja poista kopio.
Mitään ei ole vielä tarkistettu. Liitä varmenne ja avain yllä ja paina Tarkista, täsmäävätkö ne. Tulos näkyy tässä todisteineen, ja raportin voi kopioida tai tallentaa.
Sama tarkistus openssl-komennolla omalla koneella
# julkinen avain varmenteen sisällä openssl x509 -in cert.pem -noout -pubkey | openssl pkey -pubin -outform DER | openssl sha256 # julkinen avain yksityisen avaimen sisällä openssl pkey -in key.pem -pubout | openssl pkey -pubin -outform DER | openssl sha256 # tiivisteet ovat yhtä suuret vain, jos pari kuuluu yhteen # vanhempi, pelkkä RSA-tapa: vertaa moduuleja openssl x509 -in cert.pem -noout -modulus | openssl md5 openssl rsa -in key.pem -noout -modulus | openssl md5
Tiivistevertailu toimii kaikille avaintyypeille ja vastaa sitä, minkä tämä sivu ilmoittaa julkisen avaimen sormenjälkenä, kun taas moduulivertailu on olemassa vain RSA:lle. Kumpikaan ei todista, että joku hallitsee yksityistä puolta — sen tekee yllä oleva allekirjoitustarkistus, minkä vuoksi sivu käyttää sitä.
Mitä raportti sisältää. Tulos, parin lukemat, joista se muodostettiin (algoritmi, avaimen koko, käyrä, subjektin avaintunniste ja julkisen avaimen sormenjälki sekä varmenteelle että avaimelle) ja tarkka suoritettu testi. Raportti ei koskaan sisällä itse yksityistä avainta: avainta käytetään allekirjoituksen tuottamiseen, eikä sitä kirjoiteta tekstiin, JSON-muotoon tai leikepöydälle. Kopioitu tai tallennettu raportti on turvallinen liitettäväksi tikettiin; liitettyä avainta ei ole, ja leikepöytää kannattaa pitää ainoana muuna paikkana, johon se on koskaan joutunut.

Yksityisyys: varmenne ja avain luetaan välilehdessä, mitään ei ladata ylös, eikä sivu tee lainkaan pyyntöjä — sivulla ei ole koettelua eikä hakuja. Vastaavan parin luomiseen käytä itseallekirjoitettujen varmenteiden generaattoria; jos halutaan pyytää varmennetta jo olemassa olevalle avaimelle, käytä CSR-generaattoria; varmenteen sisällön lukemiseen käytä varmenteen purkajaa.