Vic*_*r C 2 c++ encryption openssl network-programming
我们正在迁移到 Openssl 3.0.2,目前在 3.0.2 服务器和 1.1.1g 客户端之间遇到连接问题。
根据收集的日志,我们似乎在加载旧提供程序时遇到问题。我们按照 OpenSSL 3.0 - 6.2 提供程序 Wiki 中概述的步骤以编程方式加载默认提供程序和旧提供程序,没有出现任何问题。
我们看到以下错误..
错误:0308010C:数字信封例程:inner_evp_generic_fetch:不支持:crypto\evp\evp_fetch.c:346:全局默认库上下文,算法(RC2-40-CBC:0),属性()PKCS12_parse()失败= 183。(使用从errhandlingapi.h中GetLastError,获取183错误码)
值得一提的是,我们仅在服务器是 Windows 2012 服务器时才会看到此问题。
默认和旧版提供程序在启动时都会毫无问题地加载。
正如 Liam 所指出的,OpenSSL 3.0 默认情况下不支持传统算法 RC2-40-CBC。
幸运的是,遗留库包含在我的发行版的 bin 文件夹中(https://slproweb.com/products/Win32OpenSSL.html;完整列表https://wiki.openssl.org/index.php/Binaries)。
所以我的解决步骤是
设置变量 OPENSSL_MODULES
SET OPENSSL_MODULES=C:\Program Files\OpenSSL-Win64\bin
Run Code Online (Sandbox Code Playgroud)
没有 -legacy 选项:
D:\sources\en.Resilience_Temy\config\certificates>openssl pkcs12 -in server.p12 -out saxserver.crt
Enter Import Password:
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
Error outputting keys and certificates
58630000:error:0308010C:digital envelope routines:inner_evp_generic_fetch:unsupported:crypto\evp\evp_fetch.c:349:Global default library context, Algorithm (RC2-40-CBC : 0), Properties ()
Run Code Online (Sandbox Code Playgroud)
使用 -legacy 选项:
D:\sources\en.Resilience_Temy\config\certificates>openssl pkcs12 -in server.p12 -out server.crt -legacy
Enter Import Password:
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
Run Code Online (Sandbox Code Playgroud)
并且文件生成成功。
| 归档时间: |
|
| 查看次数: |
7428 次 |
| 最近记录: |