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 閱讀(352) 評論(0) 收藏 舉報
浙公網安備 33010602011771號