我正在努力为我的证书实现一项功能。我正在使用 OPENSSL 1.1.1 生成证书。我只想允许 TLSv1.2 和 TLSv1.3。其他协议应该不可能(TLSv1.0 / TLS1.1 / ...)。目标是为多个网站生成证书,并仅授权具有特定密码的 TLSv1.2 和 TLSv1.3。我不想修改我的 Web 服务器配置(我知道很容易限制 Apache 或 NGINX 上的协议,但我想更深入地了解 openssl 体验)。
我有以下命令行:
openssl req -new -nodes -x509 -config certrequest.cnf -keyout myserver.key -out myserver.pem
我的“certrequest.cnf”文件如下所示:
[req]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn
[ dn ]
C=US
ST=State
L=City
O=TEST
OU=HELLO WORLD
[email protected]
CN = mydomain.example.com
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = mydomain.example.com
IP.1 = 127.0.0.1
到目前为止已经尝试过哪些更接近 openssl 文档的方法:
[system_default_sect]
Protocol = -SSLv3, -TLSv1, -TLSv1.1, TLSv1.2, TLSv1.3
MinProtocol = TLSv1.2
我尝试了很多解决方案,但仍然无法限制协议。根据 openssl 的文档,这似乎是可能的,但我无法正确实现它。
我正在使用以下命令测试我的协议/密码:
nmap --script ssl-enum-ciphers -p 443 mydomain.example.com
在 NMAP 的输出中,我可以看到所有协议和密码都带有“密码首选项:客户端”的指示。也许强制服务器可能是一个好方法。
你能帮我找到解决方案吗?
祝你有美好的一天 !
答案1
无法限制证书,因此它只能与某些协议版本或密码一起使用(除了需要支持 RSA 身份验证的密码的 RSA 证书和需要支持 ECDSA 身份验证的密码的 ECC 证书)。
有关详细信息,请参阅SSL 证书可以规定协议吗?和我们可以使用服务器证书来限制密码套件吗?在security.stackexchange.com。