New chat
Today
Ошибка OpenSSL: устаревший алгоритм шифрования
Yesterday
Удаление случайной части строки в PHP
30 Days
Получение значения id_corpcom при нажатии
Добавление виджетов сайтов на Android
Сбор значений класса countch с jQuery
2025-04
Декодирование текста письма Windows-1251 в PHP
Изменение URL в браузере без перезагрузки
2025-03
1 подключить bootstrap создать ф
2025-02
notes audio move block
php imap
code pj code notes
img docup cdn
fj
mailer
пазлов svg
gif
использовать php bootstrap datat
загрузить html блок с одного адр
dynamic sidebar html css bootstr
используя php bootstrap datatabl
fullcalendar datatable
php прибывать к формату 2025-02-
код js
2025-01
кто я
Get App
My Profile
Ошибка OpenSSL: устаревший алгоритм шифрования
В чем может быть проблема раньше работало теперь нет появляется ошибка OpenSSL-Win64\bin\openssl pkcs12 -in C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org\Certificates\bQVfUpO2akGM-2dwPVvpEA-main-8b12a97626c3082351d15fc9546455016d39a3e0-temp.pfx -password pass:pass -clcerts -nokeys -out drlive-decrypted.crt Error outputting keys and certificates DC030000:error:0308010C:digital envelope routines:inner_evp_generic_fetch:unsupported:crypto\evp\evp_fetch.c:375:Global default library context, Algorithm (RC2-40-CBC : 0), Properties () Запускаю start.bat set path=C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org\Certificates\ set file=bQVfUpO2akGM-2dwPVvpEA-main-8b12a97626c3082351d15fc9546455016d39a3e0-temp.pfx set pass=pass set soft=D:\talk\app\ssl\ D:\OpenSSL-Win64\bin\openssl pkcs12 -in %path%%file% -passin pass:%pass% -passout pass:%pass% -clcerts -out drlive.key rem D:\OpenSSL-Win64\bin\openssl rsa -in drlive.key -out drlive-decrypted.key D:\OpenSSL-Win64\bin\openssl rsa -in drlive.key -passin pass:%pass% -out drlive-decrypted.key D:\OpenSSL-Win64\bin\openssl pkcs12 -in %path%%file% -password pass:%pass% -clcerts -nokeys -out drlive-decrypted.crt

Ошибка, которую вы получаете, связана с тем, что OpenSSL 3.0 и выше по умолчанию блокирует использование устаревших алгоритмов шифрования, таких как RC2-40-CBC, который использовался в вашем PFX-файле.

Вот несколько способов решить эту проблему:

  1. Использовать флаг -legacy (рекомендуется):

    bat
    Copy
    Download
    D:\OpenSSL-Win64\bin\openssl pkcs12 -legacy -in %path%%file% -password pass:%pass% -clcerts -nokeys -out drlive-decrypted.crt
  2. Или установить переменную окружения (альтернативный вариант):

    bat
    Copy
    Download
    set OPENSSL_CONF=D:\OpenSSL-Win64\bin\openssl.cnf
  3. Или понизить версию OpenSSL до 1.1.1, если это возможно.

Основная проблема в том, что ваш PFX-файл был создан с использованием устаревшего алгоритма RC2-40-CBC, который теперь по умолчанию отключен в OpenSSL 3.0+ из-за соображений безопасности.

Также обратите внимание, что в вашем скрипте есть команда, которая пытается экспортировать ключ дважды (сначала без пароля, потом с паролем). Убедитесь, что это действительно необходимо.

Попробовал вариант 1 Использовать флаг -legacy Ошибка D:\OpenSSL-Win64\bin\openssl pkcs12 -legacy -in C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org\Certificates\bQVfUpO2akGM-2dwPVvpEA-main-8b12a97626c3082351d15fc9546455016d39a3e0-temp.pfx -passin pass:pass -passout pass:pass -clcerts -out drlive.key pkcs12: unable to load provider legacy Hint: use -provider-path option or OPENSSL_MODULES environment variable. 900B0000:error:12800067:DSO support routines:win32_load:could not load the shared library:crypto\dso\dso_win32.c:108:filename(C:\Program Files\OpenSSL\lib\ossl-modules\legacy.dll) 900B0000:error:12800067:DSO support routines:DSO_load:could not load the shared library:crypto\dso\dso_lib.c:147: 900B0000:error:07880025:common libcrypto routines:provider_init:reason(37):crypto\provider_core.c:1019:name=legacy

Ошибка указывает на то, что OpenSSL не может загрузить модуль legacy, который требуется для работы с устаревшими алгоритмами (такими как RC2-40-CBC).

Причины и решения:

1. Проверьте, установлен ли модуль legacy.dll

OpenSSL 3.x включает поддержку устаревших алгоритмов через модуль legacy, но он должен быть доступен в папке lib\ossl-modules\ (или аналогичной).

  • Проверьте путь C:\Program Files\OpenSSL\lib\ossl-modules\legacy.dll
    Если файла нет, значит OpenSSL установлен без поддержки legacy-алгоритмов.

2. Укажите правильный путь к модулям (-provider-path)

Если legacy.dll есть, но OpenSSL его не находит, укажите путь вручную:

bat
Copy
Download
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

3. Установите переменную окружения OPENSSL_MODULES

bat
Copy
Download
set 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

4. Если legacy.dll отсутствует

  • Скачайте OpenSSL заново (полная версия, не Light) и убедитесь, что legacy.dll есть в lib\ossl-modules\.

  • Или используйте OpenSSL 1.1.1 (он не требует -legacy и поддерживает RC2 по умолчанию).

5. Альтернативный вариант — пересоздать PFX без RC2

Если у вас есть доступ к исходному сертификату, попробуйте переэкспортировать его с более современным шифрованием (например, AES-256):

bat
Copy
Download
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.

New chat
DeepThink (R1)
Search
AI-generated, for reference only