我正试图在Spring项目的一个新的干净mac上运行我们的单元测试。一个测试需要生成ssl密钥。
我已经通过自制程序安装了openssl,但错误仍然存在。
请参阅以下错误:
Using configuration from /Users/myuser/workspace/project/webapp/target/test-data/clientvpn/acc1/openssl.conf
default is an unsupported message digest type
13499:error:02001002:system library:fopen:No such file or directory:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-59/src/crypto/bio/bss_file.c:126:fopen('./index.txt.attr','rb')
13499:error:2006D080:BIO routines:BIO_new_file:no such file:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-59/src/crypto/bio/bss_file.c:129:
13499:error:0E078072:configuration file routines:DEF_LOAD:no such file:/BuildRoot/Library/Caches/com.apple.xbs/Sources/OpenSSL098/OpenSSL098-59/src/crypto/conf/conf_def.c:197:
我在谷歌上进行了多次搜索,并与一位最近也搬到mac的同事进行了协商,从而解决了这个问题。
新openssl的符号链接不是在自制程序进行安装时创建的。如果运行brew link openssl
,您将收到以下消息Warning: openssl is keg-only and must be linked with --force
这就引出了解决方案。Homebrew需要被明确告知创建正确的链接。
brew link --force openssl
如果您现在检查which openssl
,您会注意到它指向brew安装的版本/usr/local/bin/openssl
这在Montery(12.2)上对我有效
brew install openssl
brew link openssl # outputs :
Warning: Refusing to link macOS provided/shadowed software: openssl@3
If you need to have openssl@3 first in your PATH, run:
echo 'export PATH="/usr/local/opt/openssl@3/bin:$PATH"' >> ~/.zshrc
For compilers to find openssl@3 you may need to set:
export LDFLAGS="-L/usr/local/opt/openssl@3/lib"
export CPPFLAGS="-I/usr/local/opt/openssl@3/include"
For pkg-config to find openssl@3 you may need to set:
export PKG_CONFIG_PATH="/usr/local/opt/openssl@3/lib/pkgconfig"
我只是在使用命令,所以我做了:
echo 'export PATH="/usr/local/opt/openssl@3/bin:$PATH"' >> ~/.zshrc
有效,旧输出:
➜ ca git:(master) openssl version
LibreSSL 2.8.3
之后:
➜ ca git:(master) source ~/.zshrc
➜ ca git:(master) openssl version
OpenSSL 3.0.1 14 Dec 2021 (Library: OpenSSL 3.0.1 14 Dec 2021)
注意:根据您的需要可能需要的其他选项。注意2:我的默认shell是zsh,如果您使用bash,请将它添加到您的bashrc中,或者添加到您选择的shell中,它是PATH。
只需添加此标志,对我有效:
-CAcreateserial
来源:在MacOS 上使用openssl签署CSR时出错
通过允许我的操作系统访问该文件来修复它。例如,macos允许终端访问此文件。