登录
首页 >  Golang >  Go问答

使用 OpenSSL 的 EVP API 的配置文件

来源:stackoverflow

时间:2024-04-26 08:39:37 439浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《使用 OpenSSL 的 EVP API 的配置文件》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

问题内容

背景

通过命令行使用 openssl 时,我可以通过设置 openssl.cnf 来更改默认引擎(请参阅下面的示例代码)。我现在想在使用 evp api 时更改默认引擎,最好通过更改配置文件来更改。

更大的背景是我在 evp 周围使用 go 包装器,它既不支持全局设置引擎,也不支持设置用于签名/验证的引擎(我唯一关心的操作)。我正在研究涉及代码更改的选项(例如使用 cgo 全局设置引擎或分叉库),但如果我可以避免它们,那就太理想了。

问题

evp 似乎没有读取配置文件,而且我无法在网上找到/理解关于这是否可能的文档。配置文件是自动加载的(我只是做错了?)还是我需要执行诸如调用 openssl_init_load_config 之类的操作?

示例代码

openssl_conf = openssl_def

[openssl_def]
engines = engine_section

[engine_section]
pkcs11 = pkcs11_section

[pkcs11_section]
engine_id = pkcs11
dynamic_path = /usr/local/cellar/engine_pkcs11/0.1.8/lib/engines/engine_pkcs11.so
module_path = /usr/local/cellar/opensc/0.19.0/lib/pkcs11/opensc-pkcs11.so
pin = "123456"
init = 0
$ openssl engine
(rdrand) Intel RDRAND engine
(dynamic) Dynamic engine loading support
(pkcs11) pkcs11 engine

解决方案


假设您使用的是 openssl 1.1.0 或更高版本,然后尝试在程序开头插入以下内容(在执行任何其他 openssl 调用之前):

OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CONFIG, NULL);

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>