Сертификатын хэлэлцүүлэгт хоёр мэдэгдэл эргэлддэг. Эхнийх нь .p12 бол хүчтэй сонголт, .pem бол сул гэсэн; хоёр дахь нь текст файлыг илгээхэд аюулгүй байх ёстой, учир нь та үүнийг уншиж чадна гэсэн. Аль нь ч нэг минутын шалгалтыг даахгүй.

PKCS12, PEM, DER нь сертификатын объектууд хэрхэн багцлагдаж, кодлогддогыг тодорхойлдог. Тэд эсрэг тал хэн бэ, гаргагчид итгэж болох уу, файлд нууц үг хэрэгтэй юу гэдгийг шийддэггүй.

Клиент юу хүлээн авдаг нь нийцтэй байдлын асуудал. Файл юу агуулж байгаа нь таних тэмдгийн асуудал. Энэ хоёрыг тусгаарлавал ихэнх импортын алдаа нууцлаг байхаа болино.

Гурван контейнер, нэг объектын загвар

Үнэхээр таны гарт байгаа зүйлээс эхэл. Сертификат бол нийтийн түлхүүрийн тухай гарын үсэг зурсан мэдэгдэл. Хувийн түлхүүр нь тухайн түлхүүрийг та хянаж байгааг батлах тусдаа материал. Гинжин хэлхээ нь сертификатыг клиент итгэдэг үндэстэй холбодог гаргагчдын багц. Гурвуулаа багцлалтаас үл хамааран оршдог.

PKCS12 файл, ихэвчлэн .p12 эсвэл .pfx, RFC 7292-т тодорхойлсон контейнер бөгөөд хувийн түлхүүр, нэг буюу хэд хэдэн сертификат, гинжийг нууц үгээр хамгаалагдсан нэг блокт агуулж болно, таних тэмдгийг нэрлэх алдас бүхий. PEM файл нь RFC 7468-д тодорхойлсон текст хүрээ: BEGIN болон END мөрүүдийн хооронд base64 бие, нэг файлд хэд хэдэн блок дараалан байж болно. DER нь мөн ASN.1 бүтцүүдийн хоёртын кодчилол, PEM бие нь шууд утгаараа base64-ээр ороосон DER юм.

Сүүлийн өгүүлбэрийг санах нь зүйтэй. PEM-ийг DER болгон хөрвүүлэх нь хүрээг дахин бичдэг, агуулгыг биш, буцааж хөрвүүлэхэд анхны байтууд буцаж ирнэ.

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

Кодчилол нь шифрлэлт биш

base64 бол тээврийн цагаан толгой. Энэ нь юу ч нуудаггүй, хэн ч shell дотор PEM блокыг тайлж чадна. DER файл нь хоёртын бөгөөд мөн адил нийтэд нээлттэй. Аль ч шинж чанар нь хамгаалалт биш, аль нь ч нууц үг байгааг илтгэхгүй.

Жинхэнэ хамгаалалт түлхүүрийн материалд байдаг. PKCS12 багц нь агуулгыг нууц үгээс үүссэн түлхүүрээр шифрлэж болно. PEM хувийн түлхүүрийг хуучин толгойн блокоор шифрлэх эсвэл PKCS#8 EncryptedPrivateKeyInfo дотор хадгалах боломжтой. Сертификат ганцаараа ямар ч нууц хадгалдаггүй, тиймээс зөвхөн сертификат гаргасан экспорт нь клиентийг ямар ч форматтай ороосон ч баталгаажуулах боломжгүй болгодог.

Өргөтгөл нь сануулга, гэрээ биш. .cer болон .crt-ээр төгсдөг файлууд хоёр кодчилолд хоёуланд нь гардаг, төхөөрөмжүүд DER сертификатуудыг .pem нэрээр хангалттай олон удаа экспортолдог тул дагавараар таамаглах нь хагас өдөр үрэгдэнэ. Үүний оронд эхний байтуудыг уншина уу: PEM файл BEGIN мөрөөр нээгддэг, DER нь гадаад бүтэц SEQUENCE тул 0x30-аар эхэлдэг.

Импорт яагаад үнэхээр бүтэлгүйтдэг вэ

Клиентийн алдааны мессежүүд хэд хэдэн өөр асуудлыг хүчингүй сертификатын тухай нэг өгүүлбэрт шахаж, тиймээс шалтгаанаар нь тусгаарла. Хамгийн түгээмэл нь кодчилолын зөрүү: PEM задлан шинжилдэг клиент DER файл дээр задлан шинжилгээний алдаа буцаадаг, шийдэл нь шинэ сертификат биш, хөрвүүлэлт. Хоёр дахь нь дутуу түлхүүр, сертификат нь зөв боловч таних тэмдгийг батлах боломжгүй. Гурав дахь нь гинжин хэлхээ, завсрын сертификатгүй багц импортын цонхонд зөв харагдаж, гар барих үед бүтэлгүйтдэг.

Шифрлэлтийн параметрүүд дөрөв дэхийг үүсгэдэг бөгөөд энэ нь яг буруу нууц үг шиг харагдана. Хуучин төхөөрөмжүүд PKCS12 файлуудыг RC2-40 болон 3DES-тэй экспортолдог байсан бөгөөд OpenSSL 3 нь legacy нийлүүлэгч ачаалагдаагүй бол тэдгээрийг татгалздаг. Төхөөрөмжөөс AES-256-CBC болон PBKDF2-той дахин экспортлох нь байнгын шийдэл. Нэг файлын төлөө клиентийн машинд хуучин шифрүүдийг байнга асаалттай үлдээх нь муу хэлцэл.

Тав дахь нь хоёрдмол байдал. Хоёр түлхүүр, хоёр сертификат бүхий контейнер, эсвэл гурван CERTIFICATE блок бүхий PEM файл клиентийг сонгохыг албадаж, түүний сонголт ихэвчлэн зүгээр л эхний зүйл байдаг. Туннель буруу таних тэмдэгтэй гарахад ихэвчлэн энэ нь шалтгаан болдог.

Хөрвүүлэхийн өмнө шалгана уу

Нууцыг хэвлэхгүйгээр бүтцийг уншина уу. openssl pkcs12 -in bundle.p12 -info -noout шифрлэлтийн алгоритм болон алдасуудыг мэдээлж, түлхүүр болон сертификатын гаралтыг дарж, openssl-pkcs12 гарын авлага тугнуудыг баримтжуулдаг. -noout-ыг хасаж -nodes нэмэх нь хадгалахаар төлөвлөж буй файлуудыг үүсгэхэд зориулагдсан, хурдан харахад биш, учир нь энэ нь хувийн түлхүүрийг ил бичдэг.

Сертификатын хувьд openssl x509 -in cert.pem -noout -subject -issuer -dates импортын цонх хариулахгүй зүйлд хариулж, -ext subjectAltName нэмэхэд сертификат үнэхээр хүчинтэй нэрсийг харуулна. Файл DER бол -inform DER нэмнэ үү; тэр нэг туг ихэнх unable-to-load алдааг шийддэг.

Түлхүүрийг сертификаттай тааруулах нь механик ажил бөгөөд аливаа импортын өмнө хийх нь зүйтэй:

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

Ижил дижестүүд хос нь хамт байгааг илтгэнэ. Өөр дижестүүд та буруу түлхүүртэй байгааг илтгэж, ямар ч формат хөрвүүлэлт үүнийг өөрчлөхгүй.

Формат хэзээ ч өөрчлөхгүй зүйл

Итгэлийн шийдвэрүүд контейнерын дээр гардаг. Клиент гинжийг өөрийн санд байгаа үндэс хүртэл явж, хүчинтэй байдлын цонхыг шалгаж, клиент баталгаажуулалтын өргөтгөсөн түлхүүрийн хэрэглээг шалгаж, серверийн талд дуудсан нэр сертификат дотор байгаа эсэхийг шалгана. Эдгээр алхмуудын аль нь ч файлын өргөтгөлийг уншдаггүй.

Тиймээс алдаа арилтал файлын нэрийг өөрчлөх нь цаг үрэх ийм найдвартай арга юм. Импорт амжилттай болж, таних тэмдэг нь буруу хэвээр, алдаа нь гар барих үед дахин гарч ирдэг, тэнд мессеж бага тусалдаг. Хоёр жилийн өмнө экспортолсон багц цэвэр импортлогдож, гэсэн хэдий ч татгалздаг нь мөн адил шалтгаантай: хугацаа дуусах огноо файлын нэрэнд биш, сертификатын дотор аялсан.

Дахин хийхээс зайлсхийх дараалал

Клиентийн баримт бичгээс ямар кодчилол хүлээн авдаг, клиент таних тэмдэгт ямар контейнер хүлээж байгааг асууж, дараа нь танд юу өгснийг хар. Клиент нэг импортлох таних тэмдэг хүсч, танд тусдаа PEM файлууд байвал багцыг өөрийн хянадаг нууц үгээр нэг удаа бүтээж, эх сурвалжийг хадгал. Хэрэв PEM хүсвэл түлхүүр болон гинжийг гаргаж аваад, дараа нь завсрын файлуудыг танай баг аль хэдийн ашигладаг итгэмжлэлийн харьцааны процессоор устга.

Импортын дараа диалог биш, таних тэмдгийг шалга: субъект, гаргагч, хугацаа болон клиент танилцуулах нэр. Жагсаалт дахь эелдэг нэр бол шошго, баталгаажсан таних тэмдэг биш. Хэрэв дараа нь туннель бүтэлгүйтвэл та багцлалтын оронд баталгаажуулалт эсвэл чиглүүлэлтийг дибаг хийж байна, энэ нь хамаагүй богино яриа.

Холбоотой нийтлэлүүд