Mae dau haeriad yn cylchredeg mewn trafodaethau tystysgrifau. Y cyntaf yw mai .p12 yw'r opsiwn cryf a .pem yr opsiwn llac; yr ail yw bod rhaid i ffeil testun fod yn ddiogel i'w hanfon oherwydd y gallwch ei darllen. Nid yw'r un ohonynt yn goroesi munud o archwilio.

Mae PKCS12, PEM a DER yn disgrifio sut mae gwrthrychau tystysgrif yn cael eu pecynnu a'u hamgodio. Nid ydynt yn penderfynu pwy yw'r cyfoed, a yw'r dyroddwr yn cael ei ymddiried ynddo, nac a oes angen cyfrinair ar y ffeil.

Cwestiwn cydnawsedd yw'r hyn y mae'r cleient yn ei dderbyn. Cwestiwn hunaniaeth yw'r hyn sydd yn y ffeil. Cadwch y ddau ar wahân a bydd y rhan fwyaf o wallau mewnforio yn peidio â bod yn ddirgel.

Tri chynhwysydd, un model gwrthrych

Dechreuwch gyda'r hyn sydd gennych mewn gwirionedd. Datganiad wedi'i lofnodi am allwedd gyhoeddus yw tystysgrif. Mae'r allwedd breifat yn ddeunydd ar wahân sy'n profi eich bod yn rheoli'r allwedd honno. Casgliad o ddyroddwyr sy'n cysylltu eich tystysgrif â gwraidd y mae'r cleient yn ymddiried ynddo yw cadwyn. Mae'r tri yn bodoli waeth beth fo'r pecynnu.

Mae ffeil PKCS12, fel arfer .p12 neu .pfx, yn gynhwysydd a ddiffinnir yn RFC 7292 a all gludo allwedd breifat, un neu fwy o dystysgrifau a'r gadwyn mewn un blwch wedi'i ddiogelu gan gyfrinair, gydag alias sy'n enwi'r hunaniaeth. Mae ffeil PEM yn ffrâm destun a ddiffinnir yn RFC 7468: corff base64 rhwng llinellau BEGIN ac END, a gall un ffeil ddal sawl bloc yn olynol. DER yw amgodio deuaidd yr un strwythurau ASN.1, a chorff PEM yw DER wedi'i lapio mewn base64, yn llythrennol.

Y frawddeg olaf honno sydd werth ei chofio. Mae trosi PEM i DER yn ailysgrifennu'r lapio, nid y cynnwys, ac mae trosi'n ôl yn dychwelyd y beitiau gwreiddiol.

ContainerCan holdDoes not decide
PKCS12 (.p12, .pfx)Key, leaf certificate, chain, alias, passwordWhich root the client trusts
PEM (.pem, .crt, .cer)Any number of base64 blocksWhether the private key is present
DER (.der, .cer)One binary structureThe object type, whatever the extension says

Nid yw amgodio'n amgryptio

Wyddor glud yw base64. Nid yw'n cuddio dim, a gall unrhyw un ddadgodio bloc PEM mewn shell. Mae ffeil DER yn ddeuaidd ac yr un mor gyhoeddus. Nid yw'r naill briodwedd yn amddiffyniad, ac nid yw'r naill yn awgrymu bod cyfrinair yn bodoli.

Mae gwir amddiffyniad yn y deunydd allwedd. Gall pecyn PKCS12 amgryptio ei gynnwys o dan allwedd sy'n deillio o gyfrinair. Gellir amgryptio allwedd breifat PEM gyda bloc pennawd hen ffasiwn neu ei chadw yn PKCS#8 EncryptedPrivateKeyInfo. Nid yw tystysgrif ar ei phen ei hun yn dal dim cyfrinachol, a dyna pam mae allforiad a gynhyrchodd dystysgrif yn unig yn gadael y cleient yn methu â dilysu, pa bynnag fformat y byddwch yn ei lapio ynddo.

Awgrym yw'r estyniad, nid contract. Mae ffeiliau sy'n gorffen â .cer a .crt yn ymddangos yn y ddau amgodio, ac mae offerynnau'n allforio tystysgrifau DER o dan enwau .pem yn ddigon aml i ddyfalu o'r olddodiad gostio prynhawn. Darllenwch y beitiau cyntaf yn lle hynny: mae ffeil PEM yn agor â llinell BEGIN, tra bod DER yn dechrau ag 0x30 oherwydd mai SEQUENCE yw'r strwythur allanol.

Pam mae'r mewnforio'n methu mewn gwirionedd

Mae negeseuon gwall y cleient yn gwasgu sawl problem wahanol i un frawddeg am dystysgrif annilys, felly gwahanwch hwy yn ôl achos. Yr un fwyaf cyffredin yw anghysondeb amgodio: mae cleient sy'n dosrannu PEM yn dychwelyd gwall dosrannu ar ffeil DER, a'r ateb yw trosi yn hytrach na thystysgrif newydd. Yr ail yw allwedd ar goll, lle mae'r dystysgrif yn iawn ac na ellir profi'r hunaniaeth. Y trydydd yw'r gadwyn, lle mae pecyn heb ei dystysgrif canolradd yn edrych yn gywir yn y deialog mewnforio ac yn methu yn ystod yr ysgwyd llaw.

Mae paramedrau amgryptio'n achosi pedwerydd, ac mae'n edrych yn union fel cyfrinair anghywir. Roedd offerynnau hŷn yn allforio ffeiliau PKCS12 gyda RC2-40 a 3DES, y mae OpenSSL 3 yn eu gwrthod oni bai bod y darparwr legacy wedi'i lwytho. Ailallforio o'r offeryn gydag AES-256-CBC a PBKDF2 yw'r ateb parhaol. Mae gadael seiffrau hen ffasiwn wedi'u galluogi'n barhaol ar beiriant cleient i ddarparu ar gyfer un ffeil yn fargen wael.

Y pumed yw amwysedd. Mae cynhwysydd sy'n dal dwy allwedd a dwy dystysgrif, neu ffeil PEM â thri bloc CERTIFICATE, yn gorfodi'r cleient i ddewis, ac mae ei ddewis yn aml yn syml yr eitem gyntaf. Pan fydd twnnel yn codi gyda'r hunaniaeth anghywir, dyna fel arfer y rheswm.

Archwiliwch cyn trosi

Darllenwch y strwythur heb argraffu cyfrinachau. Mae openssl pkcs12 -in bundle.p12 -info -noout yn adrodd yr algorithmau amgryptio a'r aliasau tra'n atal allbwn allwedd a thystysgrif, ac mae lawlyfr openssl-pkcs12 yn dogfennu'r baneri. Mae gollwng -noout ac ychwanegu -nodes ar gyfer cynhyrchu ffeiliau yr ydych yn bwriadu eu cadw, nid ar gyfer cipolwg, oherwydd mae'n ysgrifennu'r allwedd breifat yn glir.

Ar gyfer tystysgrif, mae openssl x509 -in cert.pem -noout -subject -issuer -dates yn ateb yr hyn na fydd deialog mewnforio yn ei ateb, ac mae ychwanegu -ext subjectAltName yn dangos yr enwau y mae'r dystysgrif mewn gwirionedd yn ddilys ar eu cyfer. Os yw'r ffeil yn DER, ychwanegwch -inform DER; mae'r un faner honno'n datrys y rhan fwyaf o wallau unable-to-load.

Mae paru allwedd â thystysgrif yn fecanyddol, ac yn werth ei wneud cyn unrhyw fewnforio:

openssl x509 -in cert.pem -noout -pubkey | openssl sha256
openssl pkey -in key.pem -pubout | openssl sha256

Mae trawstorion union yr un fath yn golygu bod y pâr yn perthyn i'w gilydd. Mae trawstorion gwahanol yn golygu bod gennych yr allwedd anghywir, ac ni fydd unrhyw drosi fformat yn newid hynny.

Yr hyn nad yw'r fformat byth yn ei newid

Mae penderfyniadau ymddiriedaeth yn digwydd uwchben y cynhwysydd. Mae'r cleient yn cerdded y gadwyn i wraidd yn ei storfa, yn gwirio'r ffenestr ddilysrwydd, yn gwirio defnydd estynedig yr allwedd ar gyfer dilysu cleient, ac ar ochr y gweinydd yn gwirio bod yr enw a ddeialwyd ganddo yn ymddangos yn y dystysgrif. Nid oes yr un o'r camau hynny'n darllen estyniad ffeil.

Dyna pam mae ailenwi ffeil nes i wall ddiflannu yn ffordd mor ddibynadwy o wastraffu amser. Mae'r mewnforio'n llwyddo, mae'r hunaniaeth yn dal yn anghywir, ac mae'r methiant yn ailymddangos yn ystod yr ysgwyd llaw lle mae'r neges yn llai defnyddiol. Dyna hefyd pam mae pecyn a allforiwyd ddwy flynedd yn ôl yn mewnforio'n lân ac yn dal i gael ei wrthod: roedd y dyddiad dod i ben wedi teithio y tu mewn i'r dystysgrif, nid yn enw'r ffeil.

Trefn sy'n osgoi ailwaith

Gofynnwch i ddogfennaeth y cleient pa amgodio y mae'n ei dderbyn a pha gynhwysydd y mae'n ei ddisgwyl ar gyfer hunaniaeth cleient, ac yna edrychwch ar yr hyn a roddwyd i chi. Os yw'r cleient eisiau un hunaniaeth y gellir ei mewnforio a bod gennych ffeiliau PEM rhydd, adeiladwch y pecyn unwaith gyda chyfrinair a reolwch a chadwch y ffynonellau. Os yw am PEM, tynnwch yr allwedd a'r gadwyn, ac yna dileu'r ffeiliau canolradd trwy'r broses trin tystlythyrau y mae eich tîm eisoes yn ei defnyddio.

Ar ôl mewnforio, dilyswch yr hunaniaeth yn hytrach na'r deialog: pwnc, dyroddwr, dyddiad dod i ben, a'r enw y bydd y cleient yn ei gyflwyno. Mae enw cyfeillgar mewn rhestr yn label, nid yn hunaniaeth ddilys. Os bydd y twnnel yn methu wedyn, rydych yn dadfygio dilysu neu lwybr yn hytrach na phecynnu, sef sgwrs lawer byrrach.

Erthyglau cysylltiedig