我遇到的问题是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>
任何帮助将不胜感激!
答案 0 :(得分:4)
这不是SNI的问题,而是缺少链证书。来自SSLLabs的报告:
Chain issues Incomplete
...
2 Extra download RapidSSL SHA256 CA - G3
Fingerprint: 0e34141846e7423d37f20dc0ab06c9bbd843dc24
桌面浏览器通常会从其他网站缓存这些缺失的链证书或下载它们。在这种情况下,其他应用程序或移动浏览器大多只会失败。
除此之外,您还有其他设置问题,例如提供弱密码(RC4)和协议(SSL3.0)。
TLSv1.2记录层:警报(级别:警告,描述:无法识别的名称)
这可能是因为您有一个ServerName example.io但客户端使用的www.example.io与您提供的ServerName不匹配。您不会在客户端收到错误,因为证书与客户端使用的名称匹配。你应该使用
ServerAlias example.com *.example.com
让这个警告消失。