El diàleg d'importació agafa la vostra contrasenya, gira un moment i després diu que no pot llegir el paquet. Res d'aquell missatge no us diu si heu escrit malament la contrasenya o si el fitxer es va segellar amb un xifrat que el client ja no inclou. Són fallades diferents amb solucions diferents, i triar malament porta a una baixada de versió del client que només ajorna la decisió. Observar l'etapa on s'atura el client les separa en aproximadament un minut.

Què passa entre el diàleg i la llista de certificats

Un fitxer .p12 és un contenidor, no un certificat. A dins hi ha una o més bosses de certificats i una bossa de clau privada xifrada amb una clau derivada de la vostra contrasenya, a més d'una comprovació d'integritat anomenada MAC sobre tot el fitxer. Obrir-lo vol dir verificar aquesta MAC, desxifrar la bossa de la clau i aparellar el certificat amb la clau que en surt.

El problema de contrasenya arriba a l'etapa de la MAC. El problema de xifrat arriba més tard, quan s'ha de desembolicar la bossa de la clau i la compilació que ho fa no té cap implementació de l'algorisme indicat al fitxer.

El segon cas és habitual als sistemes actuals perquè OpenSSL 3 va traslladar un grup d'algorismes antics a un proveïdor legacy opcional. Els paquets exportats per OpenSSL 1.x normalment segellaven els certificats amb RC2 de 40 bits i la clau privada amb Triple DES de tres claus. Una compilació OpenSSL 3 per defecte encara verifica la MAC amb la contrasenya correcta i després falla a la bossa, així que la contrasenya mai no era incorrecta i tornar-la a escriure no canvia res.

Llegiu el contenidor sense escriure cap clau

Demaneu a la compilació d'OpenSSL de la vostra màquina que analitzi el fitxer i llegiu el punt on es rendeix. Una inspecció sense fitxer de sortida deixa la clau xifrada al disc, i aquesta és l'única raó per la qual aquest pas és segur en un amfitrió compartit.

openssl pkcs12 -in vpn-identity.p12 -info -noout

En un paquet legacy amb la contrasenya correcta, això imprimeix els atributs de la bossa i després s'atura amb digital envelope routines::unsupported. Amb una contrasenya incorrecta obteniu Mac verify error: invalid password? abans que es llegeixi cap bossa. Els dos missatges apunten en direccions oposades, i aquesta és exactament la informació que el client va amagar.

Si la fallada és la de l'algorisme no suportat, torneu a executar la mateixa ordre amb -legacy afegit i res més canviat. Aquest indicador carrega el proveïdor legacy només per a aquest procés. No fa que el client VPN analitzi paquets antics, no toca la política criptogràfica del sistema i és una mesura, no una reparació, perquè el fitxer encara s'ha de substituir.

Quin error correspon a quina etapa

Una taula curta manté separats els tres resultats, i la formulació importa més que on va aparèixer el diàleg.

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

Un text com not enough data o header too long no pertany a cap dels dos primers grups. És un problema de format: un fitxer DER reanomenat a .pem, una còpia malmesa per un editor que va reescriure els finals de línia, o una baixada incompleta. Compareu la suma de verificació amb la que va enviar l'emissor abans de començar a mirar xifrats.

Tracteu Mac verify error només com a evidència sobre la contrasenya. Vol dir que la MAC calculada a partir del que heu escrit no coincideix amb el valor desat, cosa que passa amb una errada d'escriptura, amb una contrasenya en memòria cau d'una importació anterior o amb un fitxer reexportat amb una contrasenya diferent. No diu res sobre si els algorismes de dins són antics.

Construïu un paquet que el client pugui obrir de veritat

Un cop l'analitzador legacy confirma que el fitxer és correcte, la solució duradora és una substitució amb algorismes que el client objectiu admeti: AES-256-CBC per a les bosses de clau i certificats, PBKDF2 amb SHA-256 per a la derivació i SHA-256 per a la MAC. El vostre administrador de PKI ho pot exportar del mateix material de clau, i el certificat de dins continua sent el que els vostres servidors ja confien.

Quan hàgiu de convertir localment, demaneu a l'eina pkcs12 que torni a segellar les bosses en lloc d'abocar-les primer. Manteniu les dues contrasenyes fora de l'historial de l'intèrpret llegint-les d'un fitxer.

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

Una conversió correcta no diu res sobre la caducitat, l'ús de la clau, la coincidència de la clau privada o si el servidor confia en la cadena emissora. Reempaquetar és un canvi de transport, no una renovació, i cadascun d'aquests punts encara necessita la seva pròpia comprovació.

Eviteu qualsevol recepta que escrigui una clau intermèdia sense protecció o una contrasenya de sortida buida només perquè després el client va acceptar el fitxer. Un paquet llegible amb la protecció eliminada és un resultat pitjor que la fallada d'importació amb què vau començar.

Confirmeu que el client ha importat el fitxer que heu creat

Una anàlisi neta en un terminal demostra que el contenidor és vàlid. No demostra que el client l'hagi triat, perquè un perfil sobrant pot continuar apuntant al fitxer antic, i alguns clients desen una identitat importada sota un nom que no heu triat.

Imprimiu la identitat que esteu a punt d'importar i compareu-la amb el que el client mostra a la seva vista de certificats.

openssl pkcs12 -in vpn-identity-aes.p12 -clcerts -nokeys -passin file:new.pass \
  | openssl x509 -noout -subject -dates -fingerprint -sha256

Primer traieu l'entrada de perfil obsoleta i després importeu. Si el client registra el subjecte o l'empremta que ha carregat, compareu-lo amb la línia de dalt; si només mostra un nom amistós, comproveu en canvi la data de caducitat, ja que és més difícil confondre-la amb un altre certificat del mateix emissor.

La referència de PKCS12 llista les opcions de proveïdor, contrasenya i sortida que s'utilitzen aquí. El punt és mantenir el proveïdor legacy fora de l'entorn del client: mesureu-hi, envieu sense ell i deixeu la clau privada protegida al disc.

Articles relacionats