为什么要禁止直接访问IP:443的方式获取SSL证书
如果我们对一个装有Apache的服务器的443口进行访问,Apache会走一遍VirtualHost配置文件,如果发现没有对应的配置,就会走第一个配置的对应站点与SSL证书,这样我们就能通过SSL证书明白域名与IP的关系。
你要是觉得这么做很不道德,你可以把你的第一个配置页面改成下面这个样子

我明白了问题的严重性,那该怎么做
你可以通过防火墙的方式一刀切,但是怎么切也是个问题(你需要确定CDN的IP地址,不然全废了开了和没开一样)
Nginx已经可以通过 ssl_reject_handshake on; 的方式完美解决这个问题了,但是Apache似乎还不行…
所以我们需要想办法不让它返回SSL,又或者返回我们准备的SSL(曲线救国)
我们可以在配置文件里这么写
<VirtualHost *:443>
ServerAlias 123.awa.com #随便写,这问题不大
Redirect 503 . #可不写,你可以改成访问到特定页面(不建议)
DocumentRoot /path/to/your/web/false #请自行修改位置
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLCertificateFile /path/to/your/cert/FakeDomainCert.pem #我们要用到的假SSL
SSLCertificateKeyFile /path/to/your/cert/FakeDomainCert-key.pem
</VirtualHost>
......... #你其他VirtualHost(正常网站)的配置
<VirtualHost *:443> #中间正常网站都对不上的处理情况
ServerAlias * #这个必须放在最后面,不然所有站都上不去
Redirect 503 . #可不写,你可以改成访问到特定页面(不建议)
DocumentRoot /path/to/your/web/false #请自行修改位置
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLCertificateFile /path/to/your/cert/FakeDomainCert.pem #我们要用到的假SSL
SSLCertificateKeyFile /path/to/your/cert/FakeDomainCert-key.pem
</VirtualHost>
整完,restart服务即可