跳至正文

[教程]防止通过IP:443读取SSL进行恶意解析的解决方法(Apache)

为什么要禁止直接访问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服务即可