Linux 下 openssl 报错的原因非常多,需要先看具体的报错信息才能准确判断。不过我可以先帮你梳理最常见的几类原因 + 对应解决办法,你可以对照看看。
报错示例
openssl: command not found
原因
opensslPATH 中解决
which openssl
没输出就安装:
# Debian / Ubuntu
sudo apt install openssl
# CentOS / Rocky / Alma
sudo yum install openssl
# Arch
sudo pacman -S openssl
报错示例
wrong version number
unsupported protocol
no shared cipher
原因
TLS 1.0/1.1,新 OpenSSL 禁用了解决 测试时显式指定协议:
openssl s_client -connect host:443 -tls1_2
如果是代码调用,需要启用旧协议(不推荐,仅调试):
export OPENSSL_CONF=/path/to/legacy.cnf
报错示例
unable to verify the first certificate
self signed certificate
certificate has expired
原因
解决
openssl x509 -in cert.pem -noout -dates
临时忽略验证(仅测试):
curl -k https://xxx
或:
openssl s_client -connect host:443 -verify_return_error
报错示例
unable to load private key
RSA routines::bad decrypt
原因
解决 检查:
openssl rsa -in key.pem -check
openssl x509 -in cert.pem -noout -modulus
openssl rsa -in key.pem -noout -modulus
两个 modulus 必须一致。
报错示例
openssl: symbol lookup error
libssl.so.1.1: cannot open shared object file
原因
解决
ldd $(which openssl)
一般建议:
update-alternatives 或容器报错示例
Permission denied
原因
/etc/ssl解决
chmod 600 key.pem
请把以下信息贴出来(可以打码域名/IP):
cat /etc/os-release
openssl version
如果你愿意,可以直接把报错原文贴出来,我可以一步一步帮你修。