接入WAF后出现HTTPS访问异常(HTTP是正常的),如页面打不开、提示证书不可信、部分接口调用失败、部分机型/操作系统/APP访问报错等问题,您可以参照本文提供的排错方法来排查问题。
确认控制台已勾选HTTPS并已上传证书
使用WAF防护HTTPS业务时,必须在WAF控制台上勾选HTTPS,并且上传与服务器完全一样的证书/密钥。即使WAF与高防、SLB、CDN等其他产品一起使用时,也要在WAF上传证书/密钥。WAF的证书是独立于其他产品。
说明 在控制台上传证书成功后,可能需要最多5分钟的时间来使配置完全生效,在此期间可能出现访问异常的现象。您可以绑定hosts,确保配置已经生效之后,再将DNS解析切换过来。 |
确认证书链完整(常见错误)
多数情况下,证书服务商会提供给您多个证书(其中包含服务器的证书以及一个或多个CA根证书),这些证书组合成一个完整的证书链。以阿里云的证书为例,您收到的证书链如下图所示。
请确保在WAF中上传了完整的证书链而不是只有部分证书。请将多个证书文本内容联合到一起,并 确保服务器证书在上面,根证书在下面。以下是您需要上传的证书内容的一个样例。
-----BEGIN CERTIFICATE----- MIIFdDCCBFygAwIBAgIQFmr88Z0mn6rEleGaC6UVEzANBgkqhkiG9w0BAQsFADCB Obc3E+7h0u6cUXaQAmFNZ2a... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIFYjCCBEqgAwINMTYwNjA3MDAwMDAwmlTaWduLCBJbmMuMRLnN5bWNiLmNvbS9 wY2EzLWc1Lm1hbnRlY1BLSS0yLTU... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIG/TCCBeWgAwIBAgIQLMUH03pBzhUCrOR0SsKM+DANBgkqhkiG9w0BAQsFADB+ NzIDMgUHVibGljIFByaW1... -----END CERTIFICATE----- |
如果证书链不完整,可能会出现打开页面提示证书不可信,某些安卓手机、操作系统或App访问报错、异常等情况(可能部分环境下访问是正常的)。
说明 这种方式只能检测当前解析到的域名状态。假如您已经将解析回源而没有解析到WAF,是无法检测WAF上的证书状态的。
SNI问题
如果出现特定的一些客户端或应用程序不能正常访问HTTPS业务,提示 “SSL handshake failed/error”或者证书不可信,则很可能是客户端不支持SNI引起的。这些客户端或应用程序可能是旧版本的安卓,低版本JAVA开发的一些调用程序(特别是使用SSL协商的程序)、XP系统的IE浏览器、某些老款手机,以及第三方的支付回调接口等。
目前绝大部分的浏览器和应用程序、微信、支付宝回调接口等都已全面支持SNI。如果您将解析切换回源站就恢复正常,切换到WAF就异常,则可能是这个问题。建议升级相关的客户端,或者将回调接口直接解析回源。
更多信息,请参考SNI 兼容性导致HTTPS访问异常(服务器证书不可信)。
Windows Server 2003/IIS6服务器
Windows Server 2003/IIS6服务器在接入WAF后,访问HTTPS业务会出现白屏和502现象。这是因为系统TLS版本和加密套件过旧,安全性太弱,与WAF默认的HTTPS回源算法不兼容。目前,我们不再支持对2003系统的HTTPS回源,微软官方也已不建议使用2003系统搭建HTTPS站点。为了您的通信安全,请升级至2008或以上的操作系统。
DH密钥太短导致链接失败
因为过短的DH(Diffie-Hellman)密钥存在安全问题,WAF已经停止对短密钥的支持。同样的,当您使用较新版本的火狐浏览器(如51.0.1)不经过WAF访问源站,也会看到相应的报错信息。
请升级相关组件(如JDK版本), 确保服务器DH算法的key位数为2048 bit 或更大。
说明 Key的长度是服务器加密算法决定的,与证书无关。如果您不知道如何操作,请联系您的服务器开发人员,或搜索相关的解决方案。您可以根据以下报错信息来查找相关解决方案: SSL routines:ssl3_check_cert_and_algorithm:dh key too small 。 |
需要HTTP跳转的业务也需要勾选HTTP
如在源站服务器做了访问HTTP强制跳转到HTTPS的设置,则必须在WAF上勾选HTTP和HTTPS。否则,HTTP请求到了WAF后,无法正常转发回源站,也会报错。