Запыт у падтрымку пытае, які сертыфікат знаходзіцца ў 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, або для выпадку падтрымкі, які папрасіў пэўны артэфакт. Кожнае выманне выдаляе адзін пласт і павінна мець прычыну.

Публічныя сертыфікаты не змяшчаюць прыватнага ключа, але змяшчаюць імёны і звесткі пра арганізацыю. Адкрыйце тыя палі, якія запытваў тыкет, замест файла, калі не быў запытаны менавіта файл.

Падобныя артыкулы