当从OpenSSL 1.1.0升级到3.0.2时,使用文件时会记录错误。
例如,下面的伪代码显示了一系列成功的调用,其中1.1.0h成功,但3.0.2失败。
OpenSSL 1.1.0h
method=TLS_method()
ctx=SSL_CTX_new(method)
SSL_CTX_use_certificate_chain_file(ctx,"domain.crt")
---> Returns 1OpenSSL 3.0.2
fips_libctx=OSSL_LIB_CTX_new()
OSSL_LIB_CTX_load_config(fips_libctx,"C:\Program Files\MyServer\openssl.cnf")
OSSL_PROVIDER_load(NULL,"fips")
method=TLS_method()
ctx=SSL_CTX_new_ex(fips_libctx,NULL,method)
SSL_CTX_use_certificate_chain_file(ctx,"domain.crt")
---> error:03000072:digital envelope routines::decode error
---> error:0A00018F:SSL routines::ee key too small问题
知道为什么SSL_CTX_use_certificate_chain_file会在3.0.2中失败,但在1.1.0中却能正常工作吗?
发布于 2022-04-15 14:38:07
从马特在OpenSSL那里得到了与OpenSSL公司的合作。
您还需要加载基本提供程序。它被设计成与FIPS提供者一起使用,并且不包括任何密码算法(只有编码器和解码器)。有关这方面的讨论,请参阅fips模块指南: module.html FIPS模块本身不包括任何解码器--这解释了您所看到的“解码错误”。
正如他所指出的,我没有在openssl.cnf中加载“基本”提供程序,所以我添加了这个调用
OSSL_PROVIDER_load(NULL,"base")并修改openssl.cnf以包括基本提供程序部分。
允许解码器处理cert文件。
config_diagnostics = 1
openssl_conf = openssl_init
[openssl_init]
providers = provider_sect
[provider_sect]
fips = fips_sect
base = base_sect
[base_sect]
activate = 1
[fips_sect]
activate = 1
install-version = 1
conditional-errors = 1
security-checks = 1
module-mac = 3A:EC:2E:53:3F:92:44:F9:50:13:70:6E:FD:38:37:08:8B:F2:68:56:CC:B4:ED:5F:A1:52:1B:93:15:37:0B:8C此外,由于为fips和base设置了"activate = 1“值,我可能不需要对OSSL_PROVIDER_load()进行任何调用,因为这会处理它。
OSSL_LIB_CTX_load_config(fips_libctx,"C:\Program Files\MyServer\openssl.cnf")https://stackoverflow.com/questions/71878074
复制相似问题