在 Linux 上通过 OpenSSL 配置 TLS 协议,通常分为 查看/选择 TLS 版本、生成证书 和 配置服务(如 Nginx、Apache、Postfix 等) 三部分。下面按常见场景给你一个完整说明。
openssl version -a
常见版本关系:
# TLS 1.2
openssl s_client -connect example.com:443 -tls1_2
# TLS 1.3
openssl s_client -connect example.com:443 -tls1_3
如果连接失败,说明服务器未启用该版本。
openssl genrsa -out server.key 2048
openssl req -new -x509 -days 365 \
-key server.key \
-out server.crt \
-subj "/CN=localhost"
✅ 自签证书仅用于测试,生产环境请使用 Let’s Encrypt / 商业 CA
server {
listen 443 ssl http2;
server_name localhost;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
# TLS 版本
ssl_protocols TLSv1.2 TLSv1.3;
# 加密套件
ssl_ciphers TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:
ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
# 安全优化
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
}
⚠️ 不推荐:TLS 1.0 / TLS 1.1(已废弃)
<VirtualHost *:443>
ServerName localhost
SSLEngine on
SSLCertificateFile /etc/httpd/ssl/server.crt
SSLCertificateKeyFile /etc/httpd/ssl/server.key
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite HIGH:!aNULL:!MD5
</VirtualHost>
openssl s_server \
-key server.key \
-cert server.crt \
-accept 8443 \
-tls1_2
客户端连接:
openssl s_client -connect 127.0.0.1:8443 -tls1_2
编辑:
/etc/crypto-policies/back-ends/opensslcnf.config
或切换策略:
update-crypto-policies --set FUTURE
update-crypto-policies
(部分版本需手动配置应用)
✅ 推荐配置
不能。
OpenSSL 是 库 + 工具,TLS 是否启用取决于 使用它的服务(Nginx / Apache / Postfix 等)
ssl_protocols TLSv1.3;
如果你愿意,可以告诉我:
我可以给你 完全可复制的配置文件。