为正确的 SNI 握手设置 Apache VirtualHost
Setting Apache VirtualHost up for proper SNI handshake
我的 Apache 机器出现问题,它与客户端预期的服务器名称不匹配,导致出现警告:
TLSv1.2 记录层:警报(级别:警告,描述:无法识别的名称)
我很确定这与我的 VirtualHost 配置有关。虽然我已经为所有主机设置了 ServerName 和 ServerAlias,但服务器没有发回服务器名称。
这是我的 Apache 配置:
<VirtualHost *:80>
ServerName example.io
ServerAlias example.io
Redirect permanent / https://example.io
</VirtualHost>
<VirtualHost *:80>
ServerName api.example.io
ServerAlias api.example.io
Redirect permanent / https://api.example.io
</VirtualHost>
<VirtualHost *:80>
ServerName store.example.io
ServerAlias store.example.io
Redirect permanent / https://store.example.io
</VirtualHost>
<VirtualHost *:443>
ServerName example.io
ServerAlias example.io
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /path/file.crt
SSLCertificateKeyFile /path/file.key
SSLCertificateChainFile /path/file.crt
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
如有任何帮助,我们将不胜感激!
这不是 SNI 的问题,而是缺少链证书。来自SSLLabs的报告:
Chain issues Incomplete
...
2 Extra download RapidSSL SHA256 CA - G3
Fingerprint: 0e34141846e7423d37f20dc0ab06c9bbd843dc24
桌面浏览器通常从其他站点缓存或下载这些丢失的链证书。在这种情况下,其他应用程序或移动浏览器大多会失败。
除此之外,您还有其他设置问题,例如提供弱密码 (RC4) 和协议 (SSL3.0)。
TLSv1.2 Record Layer: Alert (Level: Warning, Description: Unrecognized Name)
这可能是因为您有一个 ServerName example.io,但客户端使用的 www.example.io 与您提供的 ServerName 不匹配。您不会在客户端收到错误,因为证书与客户端使用的名称相匹配。你可能应该使用
ServerAlias example.com *.example.com
让这个警告消失。
我的 Apache 机器出现问题,它与客户端预期的服务器名称不匹配,导致出现警告:
TLSv1.2 记录层:警报(级别:警告,描述:无法识别的名称)
我很确定这与我的 VirtualHost 配置有关。虽然我已经为所有主机设置了 ServerName 和 ServerAlias,但服务器没有发回服务器名称。
这是我的 Apache 配置:
<VirtualHost *:80>
ServerName example.io
ServerAlias example.io
Redirect permanent / https://example.io
</VirtualHost>
<VirtualHost *:80>
ServerName api.example.io
ServerAlias api.example.io
Redirect permanent / https://api.example.io
</VirtualHost>
<VirtualHost *:80>
ServerName store.example.io
ServerAlias store.example.io
Redirect permanent / https://store.example.io
</VirtualHost>
<VirtualHost *:443>
ServerName example.io
ServerAlias example.io
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /path/file.crt
SSLCertificateKeyFile /path/file.key
SSLCertificateChainFile /path/file.crt
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
如有任何帮助,我们将不胜感激!
这不是 SNI 的问题,而是缺少链证书。来自SSLLabs的报告:
Chain issues Incomplete
...
2 Extra download RapidSSL SHA256 CA - G3
Fingerprint: 0e34141846e7423d37f20dc0ab06c9bbd843dc24
桌面浏览器通常从其他站点缓存或下载这些丢失的链证书。在这种情况下,其他应用程序或移动浏览器大多会失败。
除此之外,您还有其他设置问题,例如提供弱密码 (RC4) 和协议 (SSL3.0)。
TLSv1.2 Record Layer: Alert (Level: Warning, Description: Unrecognized Name)
这可能是因为您有一个 ServerName example.io,但客户端使用的 www.example.io 与您提供的 ServerName 不匹配。您不会在客户端收到错误,因为证书与客户端使用的名称相匹配。你可能应该使用
ServerAlias example.com *.example.com
让这个警告消失。