Дыялог імпарту прымае ваш пароль, круціцца імгненне і затым паведамляе, што не можа прачытаць пакет. Нішто ў гэтым паведамленні не кажа, ці вы памыліліся ў парольнай фразе, ці файл быў запячатаны шыфрам, які кліент больш не пастаўляе. Гэта розныя збоі з рознымі выпраўленнямі, і няправільны выбар вядзе да адкату кліента, што толькі адтэрміноўвае рашэнне. Назіранне за этапам, на якім кліент спыняецца, раздзяляе іх прыблізна за хвіліну.

Што адбываецца паміж дыялогам і спісам сертыфікатаў

Файл .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 seeStageWhat it tells you
Mac verify error: invalid password?Integrity checkPassphrase or cached credential, not the cipher
digital envelope routines::unsupportedBag decryptAlgorithm missing from the default provider
not enough data / header too longContainer formatWrong 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-правайдэр па-за асяроддзем кліента: вымярайце з ім, пастаўляйце без яго і пакідайце прыватны ключ абароненым на дыску.

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