Экспарт сертыфікатаў з 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, або для выпадку падтрымкі, які папрасіў пэўны артэфакт. Кожнае выманне выдаляе адзін пласт і павінна мець прычыну.
Публічныя сертыфікаты не змяшчаюць прыватнага ключа, але змяшчаюць імёны і звесткі пра арганізацыю. Адкрыйце тыя палі, якія запытваў тыкет, замест файла, калі не быў запытаны менавіта файл.