Извезете ги сертификатите од P12 без приватниот клуч
PKCS12 пакетот ги држи клучевите и сертификатите заедно. Прво прочитајте ја структурата, потоа изберете сертификати со -nokeys наместо да ја отстраните заштитата.
Тикетот за поддршка прашува кој сертификат се наоѓа во VPN пакетот, а првиот импулс е да се извезе сиот материјал и да се приложи. Датотеката P12 ги пакува сертификатите и материјалот на приватниот клуч во еден контејнер, па извезувањето на сиот материјал е токму она што не треба да го пратите. Командата што одговара на прашањето е проблем на избор, а не на претворање. За тоа која половина од контејнерот ќе ја добиете одлучуваат четири знаменца, а две од нив звучат побезбедно отколку што се.
Започнете со читање на контејнерот наместо со негово празнење.
Што всушност содржи датотеката PKCS12
Контејнерот PKCS12 содржи еден или повеќе сертификати, можно приватниот клуч и message authentication code над содржината. Сертификатите може да го вклучуваат завршниот сертификат на вашиот идентитет на клиент и посредните сертификати што го врзуваат за CA. Клучот, кога е присутен, е она што датотеката ја прави тајна, а не документ.
Таа разлика е причината зошто -nokeys постои и зошто тоа е знаменцето што му треба на оваа задача.
Прочитајте го пакетот без да го испишете клучот
Образецот за преглед ја испишува структурата и деталите за алгоритмите и не запишува ништо: openssl pkcs12 -in client.p12 -info -noout. Бара лозинка за увоз, што е вистинското место за таа вредност, и ви кажува дали датотеката воопшто содржи клуч. Користете -passin env:PKCS12_PASS кога лозинката не може да се внесе, бидејќи лозинка во команда на shell е лозинка во списокот на процеси. Овој чекор не извезува ништо, и тоа е целата поента.
Во излезот прочитајте три работи: колку сертификати, дали е присутен клуч и кои алгоритми го штитат.
Користете -nokeys и не мешајте го со -nocerts
-nokeys ги исклучува приватните клучеви и ги остава сертификатите. -clcerts го стеснува тоа на сертификати на клиент, -cacerts го стеснува на сертификати CA, а тие две се филтри, а не алтернативи. -nocerts се чита како безбеден запис на истата идеја и значи спротивно: без сертификати, што остава само клучеви. Неговото мешање во извоз на сертификати е начинот на кој приватен клуч завршува на дискот.
Дворедниот образец што создава датотека со сертификати и датотека CA и ништо друго е:
openssl pkcs12 -in client.p12 -nokeys -clcerts -out client-certificates.pem
openssl pkcs12 -in client.p12 -nokeys -cacerts -out ca-certificates.pemСтарите пакети бараат -legacy на OpenSSL 3 за да го прочитаат своето постаро шифрирање, а тоа знаменце менува што прифаќа парсерот, а не што испишува. Ако парсирањето не успее со грешка за неподдржан алгоритам, додавањето -legacy е правилниот прв потез, а прескокнувањето на проверката MAC не е.
Проверете го излезот, а не излезниот код
Нултиот излезен статус кажува дека командата се извршила, а не дека датотеката го содржи тоа што го очекувате. Избројте ги сертификатите во излезот и прочитајте subject и датумите: openssl x509 -in client-certificates.pem -noout -subject -dates -fingerprint. Споредете го отпечатокот со оној што го очекува тимот за поддршка, бидејќи пакет со два сертификати на клиент создава датотека со два блока, а повеќето алатки читаат само првиот. Целта, довербата и совпаѓањето на клучот се повторно одделни тестови.
Сертификат што може да се парсира е сертификат што може да се парсира. Не е сертификат што VPN-от го прифаќа.
Одлучете дали воопшто ви требаат датотеки
Ако клиентот што го прима увезува PKCS12 директно, испраќањето на оригиналниот пакет преку одобрен канал со лозинката чувана одделно е поедноставно и ја запазува заштитата. Извлекувањето е за преглед, за клиент на кој му треба PEM или за случај на поддршка што побарал одреден артефакт. Секое извлекување отстранува еден слој и треба да има причина.
Јавните сертификати не го содржат приватниот клуч, но содржат имиња и податоци за организацијата. Споделете ги полињата што ги побара тикетот наместо датотеката, освен ако не е побарана токму датотеката.