rust 解决ssl 报错的问题
在使用rust 调用apple push notify servie (apns )的时候, 需要加载apple 提供的.p12的一个证书。这个证书的格式有点老,新的openssl 不再支持,会报错,需要打开“legacy”的能力才能支持
报错信息类似
digital envelope routines:inner_evp_generic_fetch:unsupported:../crypto/evp/evp_fetch.c:349:Global default library context, Algorithm (RC2-40-CBC : 0), Properties ()
解决办法
安装openssl
# macOS (Homebrew) $ brew install openssl@3 # macOS (MacPorts) $ sudo port install openssl # macOS (pkgsrc) $ sudo pkgin install openssl # Arch Linux $ sudo pacman -S pkg-config openssl # Debian and Ubuntu $ sudo apt-get install pkg-config libssl-dev # Fedora $ sudo dnf install pkg-config perl-FindBin openssl-devel # Alpine Linux $ apk add pkgconfig openssl-dev # openSUSE $ sudo zypper in libopenssl-devel
如果是windows , 则使用 https://slproweb.com/products/Win32OpenSSL.html
安装后需要修改配置文件
$ openssl version -d
OPENSSLDIR: “/usr/lib/ssl”
找到安装的位置,然后编辑配置文件openssl.cnf
# List of providers to load # 一定要在对应的位置修改和添加 [openssl_init] providers = provider_sect # 一定要在对应的位置修改和添加 [provider_sect] default = default_sect legacy = legacy_sect # 一定要在对应的位置修改和添加 [default_sect] activate = 1 [legacy_sect] activate = 1
然后查看一下
$ openssl list -providers Providers: default name: OpenSSL Default Provider version: 3.0.7 status: active legacy name: OpenSSL Legacy Provider version: 3.0.7 status: active
如果 出现了legacy,说明正确了。
参考
https://docs.rs/openssl/latest/openssl/index.html
https://www.practicalnetworking.net/practical-tls/openssl-3-and-legacy-providers/
posted on 2024-04-12 15:01 cococooder 阅读(237) 评论(0) 编辑 收藏 举报