Ошибка, которую вы получаете, связана с тем, что OpenSSL 3.0 и выше по умолчанию блокирует использование устаревших алгоритмов шифрования, таких как RC2-40-CBC, который использовался в вашем PFX-файле.
Вот несколько способов решить эту проблему:
Использовать флаг -legacy (рекомендуется):
D:\OpenSSL-Win64\bin\openssl pkcs12 -legacy -in %path%%file% -password pass:%pass% -clcerts -nokeys -out drlive-decrypted.crt
Или установить переменную окружения (альтернативный вариант):
set OPENSSL_CONF=D:\OpenSSL-Win64\bin\openssl.cnf
Или понизить версию OpenSSL до 1.1.1, если это возможно.
Основная проблема в том, что ваш PFX-файл был создан с использованием устаревшего алгоритма RC2-40-CBC, который теперь по умолчанию отключен в OpenSSL 3.0+ из-за соображений безопасности.
Также обратите внимание, что в вашем скрипте есть команда, которая пытается экспортировать ключ дважды (сначала без пароля, потом с паролем). Убедитесь, что это действительно необходимо.
Ошибка указывает на то, что OpenSSL не может загрузить модуль legacy, который требуется для работы с устаревшими алгоритмами (такими как RC2-40-CBC).
legacy.dllOpenSSL 3.x включает поддержку устаревших алгоритмов через модуль legacy, но он должен быть доступен в папке lib\ossl-modules\ (или аналогичной).
Проверьте путь C:\Program Files\OpenSSL\lib\ossl-modules\legacy.dll
Если файла нет, значит OpenSSL установлен без поддержки legacy-алгоритмов.
-provider-path)Если legacy.dll есть, но OpenSSL его не находит, укажите путь вручную:
D:\OpenSSL-Win64\bin\openssl pkcs12 -provider-path "D:\OpenSSL-Win64\lib\ossl-modules" -legacy -in %path%%file% -passin pass:%pass% -passout pass:%pass% -clcerts -out drlive.key
OPENSSL_MODULESset OPENSSL_MODULES=D:\OpenSSL-Win64\lib\ossl-modules D:\OpenSSL-Win64\bin\openssl pkcs12 -legacy -in %path%%file% -passin pass:%pass% -passout pass:%pass% -clcerts -out drlive.key
legacy.dll отсутствуетСкачайте OpenSSL заново (полная версия, не Light) и убедитесь, что legacy.dll есть в lib\ossl-modules\.
Или используйте OpenSSL 1.1.1 (он не требует -legacy и поддерживает RC2 по умолчанию).
Если у вас есть доступ к исходному сертификату, попробуйте переэкспортировать его с более современным шифрованием (например, AES-256):
openssl pkcs12 -export -in cert.crt -inkey key.key -out new_cert.pfx -certpbe AES-256-CBC -keypbe AES-256-CBC -macalg sha256
Основная проблема — OpenSSL 3.x не может загрузить модуль legacy.dll. Либо укажите правильный путь, либо переустановите OpenSSL с поддержкой legacy-алгоритмов, либо используйте OpenSSL 1.1.1.