Параметры -certpbe -keybpe -descert
применяются только при использовании от openssl pkcs12 -export
до создания файла PKCS12 (из файлов PEM для ключа и сертификата (ов)). Они игнорируются, не реализуются, отбрасываются, неэффективны и бесполезны при чтении существующего файла, как вы делаете. В существующем файле p12 части его содержимого (называемые «пакетами») зашифрованы с использованием алгоритмов, выбранных после завершения шифрования, и файл, который вы уже зашифровали с использованием алгоритмов, которые использовались - в прошлом - по-видимому, включая RC2 -40 для cert bag, как это очень часто и де-факто стандарт (и по умолчанию для openssl, когда не в режиме FIPS). Ничто из того, что вы делаете сейчас, не может изменить это, поскольку это происходило в прошлом, и время идет только вперед, а не назад.
В зависимости от причин, по которым эта система используется в режиме FIPS, вы можете получить разрешение чтобы выполнить эту указанную c операцию в режиме не FIPS. Я предполагаю, что выходные файлы PEM должны использоваться в этой системе, и тот, кто принимает эти решения, вероятно, потребует, чтобы privatekey output был FIPS-совместимым, но это нормально, потому что OpenSSL по умолчанию для pkcs12pbe-using-SHA1 -plus-3DES утвержден (одобрены).
В качестве альтернативы вы должны либо иметь, кто или что бы то ни было создает этот файл использует утвержденные алгоритмы, или вы должны преобразовать его, чтобы сделать это в другой системе, которая не не применяет FIPS; в этой системе вы можете использовать:
openssl pkcs12 -in bad.p12 -passin whatever -nodes | openssl pkcs12 -export -descert -passout whatever -out good.p12
Это преобразует содержимое в PEM и направляет их напрямую в процесс, который преобразует обратно в новый, совместимый p12. Использование -nodes
избавляет от необходимости указывать или вводить избыточный пароль (как минимум дважды) для внутренних передаваемых данных, но вы можете его опустить, если вы (или ваш установщик правил) предпочитаете.