gpt4 book ai didi

apache - 多个 Apache 托管站点的选择性 ERR_SSL_VERSION_OR_CIPHER_MISMATCH 错误

转载 作者:行者123 更新时间:2023-12-04 22:41:25 26 4
gpt4 key购买 nike

我有几个在 Apache 上运行的主机名,我希望有特定的强 TLS 配置。有2个.conf在 Apache 中启用的文件:第一个包含端口 80 的所有虚拟主机(例如 default.conf),另一个存储端口 443 的相应虚拟主机(default443.conf)。

可以只访问 default.conf 的第一个 VirtualHost 的主机名通过 https://。所有剩余的主机都在任何 Web 浏览器中抛出 ERR_SSL_VERSION_OR_CIPHER_MISMATCH。通过 curl 访问此类失败的主机名时,出现以下错误:

curl: (35) error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure


default.conf :
Protocols h2 h2c http/1.1

<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/html/example
RewriteEngine on
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
#RewriteRule ^(.*)$ https://example.com$1 [R=301,L]
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:80>
ServerName example2.com
ServerAlias www.example2.com
DocumentRoot /var/www/html/example2
RewriteEngine on
RewriteRule ^(.*)$ https://example2.com$1 [R=301,L]
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
default443.conf :
Protocols h2 h2c http/1.1

<VirtualHost *:443>
ServerName example.com
DocumentRoot /var/www/html/example
RewriteEngine on
SSLOpenSSLConfCmd ECDHParameters secp384r1
SSLOpenSSLConfCmd Curves secp384r1
SSLEngine On
SSLCertificateFile /path/to/example.crt
SSLCertificateKeyFile /path/to/example.key
Header always set Strict-Transport-Security "max-age=63072000"
</VirtualHost>

<VirtualHost *:443>
ServerName example2.com
ServerAlias www.example2.com
DocumentRoot /var/www/html/example2
RewriteEngine on
RewriteCond %{SERVER_PORT} 443
RewriteCond %{HTTP_HOST} www\.example2\.com$
RewriteRule ^(.*)$ https://example2.com$1 [R=301,L]
SSLEngine On
SSLCertificateFile /path/to/example2.crt
SSLCertificateKeyFile /path/to/example2.key
Header always set Strict-Transport-Security "max-age=63072000"
</VirtualHost>

SSLProtocol -all +TLSv1.2
SSLCipherSuite -all:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305
SSLHonorCipherOrder on
SSLCompression off
SSLSessionTickets off

SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"

根据上述配置,example.com 通过 https://正确解析,使用在 example2.com 的 SSL 握手失败时声明的密码套件。

如果评论我们的 SSLCipherSuite指令或用 suggested by Mozilla 替换密码套件对于 TLS 1.2,example2.com 也通过 https://开始正常工作。

apachectl -v Server version: Apache/2.4.41

openssl version OpenSSL 1.1.1c 28 May 2019



我想弄清楚为什么只有一个主机名通过 https://正常运行,而其余的主机名不断与 ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305 进行 SSL 握手失败。密码声明。

最佳答案

经过一些研究,该决议似乎非常明显。

为正常工作的主机名安装了 ECDSA SSL/TLS 证书(列表中的 example.com),而所有其他主机都安装了带有 RSA 私钥的证书。

由于声明的密码套件仅用于 ECDSA 身份验证 (1) (2),因此对于具有 RSA 私钥的主机,握手失败。

用 EC key 重新颁发剩余的证书解决了这个问题。

关于apache - 多个 Apache 托管站点的选择性 ERR_SSL_VERSION_OR_CIPHER_MISMATCH 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60439665/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com