【发布时间】:2019-10-13 19:13:16
【问题描述】:
我有一台同时运行 2 个 Magento 站点的服务器。站点 1 在 SSL 下运行良好,而站点 2 在我访问时返回错误。
我尝试使用 cURL 测试网站:
curl -v https://example2-domain.com/
cURL 抛出此错误:
* Trying 97.74.223.135...
* TCP_NODELAY set
* Connected to example2-domain.com (97.74.233.135) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: /etc/ssl/certs
* (304) (OUT), TLS handshake, Client hello (1):
* error:1408F10B:SSL routines:ssl3_get_record:wrong version number
* stopped the pause stream!
* Closing connection 0
curl: (35) error:1408F10B:SSL routines:ssl3_get_record:wrong version number
这是供参考的 Apache VirtualHost 块:
<VirtualHost 97.74.233.135:8080>
ServerName www.example-domain.com
ServerAlias example-domain.com
DocumentRoot /home/example/public_html
DirectoryIndex index.php
ServerAdmin webmaster@example-domain.com
UseCanonicalName Off
ScriptAlias /cgi-bin/ /home/example/public_html/cgi-bin/
<Directory /home/example/public_html>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost 97.74.233.135:8080>
ServerName example-domain2.com
DocumentRoot /home/example2/public_html
DirectoryIndex index.php
ServerAdmin webmaster@example-domain2.com
UseCanonicalName Off
ScriptAlias /cgi-bin/ /home/example2/public_html/cgi-bin/
<Directory /home/example2/public_html>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost 97.74.233.135:443>
ServerAdmin webmaster@example-domain.com
ServerName www.example-domain.com
LogLevel warn
ErrorLog /var/log/apache2/example-domain.com-ssl-error.log
CustomLog /var/log/apache2/example-domain.com-ssl-access.log combined
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:6081/
ProxyPassReverse / http://127.0.0.1:6081/
RequestHeader set X-Forwarded-Port "443"
RequestHeader set X-Forwarded-Proto "https"
SSLEngine On
SSLCertificateFile /ssl/example-domain.crt
SSLCertificateKeyFile /ssl/example-domain-key.txt
SSLCertificateChainFile /ssl/example-domain.ca-bundle
</VirtualHost>
<VirtualHost 97.74.233.135:443>
ServerAdmin webmaster@example-domain2.com
ServerName example-domain2.com
LogLevel warn
ErrorLog /var/log/apache2/example-domain2.com-ssl-error.log
CustomLog /var/log/apache2/example-domain2.com-ssl-access.log combined
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:6081/
ProxyPassReverse / http://127.0.0.1:6081/
RequestHeader set X-Forwarded-Port "443"
RequestHeader set X-Forwarded-Proto "https"
SSLEngine On
SSLCertificateFile /ssl/example-domain2.com.crt
SSLCertificateKeyFile /ssl/example-domain2-key.txt
SSLCertificateChainFile /ssl/example-domain2.ca-bundle
</VirtualHost>
如果您想知道端口 6081 上是什么,Varnish 已配置为位于该端口上。
有人可以告诉我为什么会发生这种情况吗?谢谢!
【问题讨论】:
-
这通常表明服务器没有响应任何预期的 TLS 数据。你检查过apache日志吗?可能是您指向一些不存在的文件,因此 apache 无法设置 TLS 连接?这可能是您用示例名称替换实际主机名的情况,但
example-domain2.com的SSLCertificateFile属性包含一个额外的.com- 即。/ssl/example-domain2.com.crt而www.example.domain.com配置不包含.com- 即。/ssl/example-domain.crt -
我已经检查了证书文件的路径及其对应的名称,一切都井井有条。困扰我的是他们的 VirtualHost 块是完全一样的,除了文件名和路径,但另一个不起作用。