Стары P12 не працуе ў OpenSSL 3: няправільны пароль ці састарэлы шыфр?
Адрозніце памылкова ўведзеную парольную фразу ад састарэлага пакета RC2, які OpenSSL 3 адмаўляецца распакоўваць, а затым перазапячатайце файл, не здымаючы абарону ключа.
Дыялог імпарту прымае ваш пароль, круціцца імгненне і затым паведамляе, што не можа прачытаць пакет. Нішто ў гэтым паведамленні не кажа, ці вы памыліліся ў парольнай фразе, ці файл быў запячатаны шыфрам, які кліент больш не пастаўляе. Гэта розныя збоі з рознымі выпраўленнямі, і няправільны выбар вядзе да адкату кліента, што толькі адтэрміноўвае рашэнне. Назіранне за этапам, на якім кліент спыняецца, раздзяляе іх прыблізна за хвіліну.
Што адбываецца паміж дыялогам і спісам сертыфікатаў
Файл .p12 — гэта кантэйнер, а не сертыфікат. Унутры — адна ці некалькі сумак сертыфікатаў і сумка прыватнага ключа, зашыфраваная ключом, вытворным ад вашага пароля, а таксама праверка цэласнасці пад назвай MAC для ўсяго файла. Адкрыць яго значыць праверыць гэты MAC, расшыфраваць сумку ключа і супаставіць сертыфікат з ключом, які з яе выходзіць.
Праблема з паролем узнікае на этапе MAC. Праблема з шыфрам узнікае пазней, калі сумку ключа трэба распакаваць, а зборка, якая гэта робіць, не мае рэалізацыі алгарытму, названага ў файле.
Другі выпадак часты на сучасных сістэмах, бо OpenSSL 3 перамясціў групу старых алгарытмаў у неабавязковы legacy-правайдэр. Пакеты, экспартаваныя OpenSSL 1.x, звычайна запячатвалі сертыфікаты 40-бітным RC2, а прыватны ключ — трохключавым Triple DES. Зборка OpenSSL 3 па змаўчанні ўсё яшчэ правярае MAC з вашым правільным паролем, а затым збойвае на сумцы, таму пароль ніколі не быў няправільным і паўторны ўвод нічога не змяняе.
Прачытайце кантэйнер, не запісваючы ключ на диск
Папрасіце зборку OpenSSL на вашай машыне разабраць файл і прачытаць месца, дзе яна здаецца. Праверка без выходнага файла пакідае ключ зашыфраваным на дыску, і гэта адзіная прычына, чаму гэты крок бяспечна выконваць на агульным хосце.
openssl pkcs12 -in vpn-identity.p12 -info -nooutНа састарэлым пакеце з правільным паролем гэта друкуе атрыбуты сумкі, а затым спыняецца на digital envelope routines::unsupported. З няправільным паролем вы атрымаеце Mac verify error: invalid password? яшчэ да чытання любой сумкі. Два паведамленні паказваюць у процілеглыя бакі, і гэта менавіта тая інфармацыя, якую кліент схаваў.
Калі збой звязаны з неподтрымліваным алгарытмам, запусціце тую ж каманду з даданнем -legacy і без іншых змен. Гэты сцяг загружае legacy-правайдэр толькі для гэтага працэсу. Ён не прымушае VPN-кліент разбіраць старыя пакеты, не закранае сістэмную крыптапалітыку і з'яўляецца вымярэннем, а не рамонтам, бо файл усё роўна трэба замяніць.
Якая памылка азначае які этап
Кароткая табліца раздзяляе тры вынікі, і фармулёўка важнейшая за тое, дзе з'явіўся дыялог.
| Text you see | Stage | What it tells you |
|---|---|---|
Mac verify error: invalid password? | Integrity check | Passphrase or cached credential, not the cipher |
digital envelope routines::unsupported | Bag decrypt | Algorithm missing from the default provider |
not enough data / header too long | Container format | Wrong encoding, edited file, or truncated download |
Тэкст накшталт not enough data ці header too long не належыць ні да адной з першых дзвюх груп. Гэта праблема фармату: файл DER, перайменаваны ў .pem, копія, сапсаваная рэдактарам, які перазапісаў канцы радкоў, або няпоўнае спампоўванне. Параўнайце кантрольную суму з той, якую даслаў выдавец, перш чым глядзець на шыфры.
Стаўцеся да Mac verify error як да сведчання толькі пра пароль. Гэта значыць, што MAC, вылічаны з уведзенага, не супадае з захаваным значэннем; так бывае пры друкаванай памылцы, пры паролі, закешаваным з папярэдняга імпарту, або пры файле, пераэкспартаваным з іншай парольнай фразай. Пра старасць алгарытмаў унутры ён не кажа нічога.
Пабудуйце пакет, які кліент сапраўды зможа адкрыць
Калі legacy-парсер пацвердзіў, што файл у парадку, трывалае рашэнне — замена, алгарытмы якой падтрымлівае мэтавы кліент: AES-256-CBC для сумак ключа і сертыфікатаў, PBKDF2 з SHA-256 для вытворнасці і SHA-256 для MAC. Ваш адміністратар PKI можа экспартаваць гэта з таго ж ключавога матэрыялу, а сертыфікат унутры застанецца тым, якому вашы серверы ўжо давяраюць.
Калі трэба канвертаваць лакальна, папрасіце інструмент pkcs12 перазапячатаць сумкі, а не спачатку выгружаць іх. Трымайце абедзве парольныя фразы па-за гісторыяй абалонкі, чытаючы іх з файла.
openssl pkcs12 -in vpn-identity.p12 -out vpn-identity-aes.p12 \
-keypbe AES-256-CBC -certpbe AES-256-CBC -macalg sha256 \
-passin file:old.pass -passout file:new.passПаспяховая канверсія нічога не кажа пра тэрмін дзеяння, прызначэнне ключа, супадзенне прыватнага ключа або пра тое, ці давярае сервер ланцужку выпуску. Пераўпакоўка — гэта змена транспарту, а не падаўжэнне, і кожнае з гэтага ўсё яшчэ патрабуе ўласнай праверкі.
Прапускайце любы рэцэпт, які запісвае незабаронены прамежкавы ключ або пусты выхадны пароль толькі таму, што кліент затым прыняў файл. Чытэльны пакет са знятай абаронай — горшы вынік, чым збой імпарту, з якога вы пачалі.
Пераканайцеся, што кліент імпартаваў пабудаваны вамі файл
Чысты разбор у тэрмінале даказвае, што кантэйнер сапраўдны. Ён не даказвае, што кліент выбраў яго, бо пакінуты профіль можа працягваць паказваць на стары файл, а некаторыя кліенты кэшуюць імпартаваную ідэнтычнасць пад імем, якое вы не выбіралі.
Надрукуйце ідэнтычнасць, якую збіраецеся імпартаваць, і параўнайце яе з тым, што кліент паказвае ў праглядзе сертыфікатаў.
openssl pkcs12 -in vpn-identity-aes.p12 -clcerts -nokeys -passin file:new.pass \
| openssl x509 -noout -subject -dates -fingerprint -sha256Спачатку выдаліце састарэлы запіс профілю, потым імпартуйце. Калі кліент запісвае ў журнал загружаны суб'ект або адбітак, супастаўце яго з радком вышэй; калі ён паказвае толькі зручную назву, праверце замест гэтага дату заканчэння, бо яе цяжэй зблытаць з іншым сертыфікатам таго ж выдаўца.
Даведнік PKCS12 пералічвае параметры правайдэра, парольнай фразы і выхаду, выкарыстаныя тут. Сэнс у тым, каб трымаць legacy-правайдэр па-за асяроддзем кліента: вымярайце з ім, пастаўляйце без яго і пакідайце прыватны ключ абароненым на дыску.