首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenSSL 3.0.2: SSL_CTX_use_certificate_chain_file返回错误:03000072:数字信封例程::解码错误

OpenSSL 3.0.2: SSL_CTX_use_certificate_chain_file返回错误:03000072:数字信封例程::解码错误
EN

Stack Overflow用户
提问于 2022-04-14 22:05:15
回答 1查看 312关注 0票数 0

当从OpenSSL 1.1.0升级到3.0.2时,使用文件时会记录错误。

例如,下面的伪代码显示了一系列成功的调用,其中1.1.0h成功,但3.0.2失败。

OpenSSL 1.1.0h

代码语言:javascript
复制
method=TLS_method()
ctx=SSL_CTX_new(method)
SSL_CTX_use_certificate_chain_file(ctx,"domain.crt")
---> Returns 1

OpenSSL 3.0.2

代码语言:javascript
复制
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中却能正常工作吗?

EN

回答 1

Stack Overflow用户

发布于 2022-04-15 14:38:07

从马特在OpenSSL那里得到了与OpenSSL公司的合作。

您还需要加载基本提供程序。它被设计成与FIPS提供者一起使用,并且不包括任何密码算法(只有编码器和解码器)。有关这方面的讨论,请参阅fips模块指南: module.html FIPS模块本身不包括任何解码器--这解释了您所看到的“解码错误”。

正如他所指出的,我没有在openssl.cnf中加载“基本”提供程序,所以我添加了这个调用

代码语言:javascript
复制
OSSL_PROVIDER_load(NULL,"base")

并修改openssl.cnf以包括基本提供程序部分。

允许解码器处理cert文件。

代码语言:javascript
复制
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()进行任何调用,因为这会处理它。

代码语言:javascript
复制
OSSL_LIB_CTX_load_config(fips_libctx,"C:\Program Files\MyServer\openssl.cnf")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71878074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档