apache环境下ssl证书链不完整问题解决,原因是缺少中间证书

事情的起因是,对一个网站的升级,从http升级到https,苹果手机可以正常访问,唯独安卓手机出现空白,安卓访问https的时候是出现的空白。

服务器的系统是windows Server 2008 R2,php运行环境是phpstudy.

然后一路查找,发现是少了中间证书,一般是带有bundle字样结尾的crt文件

下面贴出apache服务器的配置核心代码

<VirtualHost _default_:443>
DocumentRoot "D:/public/"
ServerName www.aabb.cn:443
SSLEngine on
SSLCertificateFile D:/ssl/www.aabb.cn.crt
SSLCertificateKeyFile D:/ssl/www.aabb.cn.key
SSLCertificateChainFile D:/ssl/www.aabb.cn-ca-bundle.crt
ErrorLog "D:/logs/error.log"
#TransferLog "D:/logs/access.log"
DirectoryIndex index.php index.html index.phtml index.htm
<Directory "D:/public/">
Options FollowSymLinks ExecCGI
AllowOverride All
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>

其中最关键的一句是

SSLCertificateChainFile 这个后面是中间证书的绝对路径

另外分享一下输入http自动跳转到https的代码

这个需要在网站的根目录建立一个.htaccess文件

加入如下代码

<IfModule mod_rewrite.c>
RewriteBase / 
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
</IfModule>

这样输入http网址的时候 就会自动跳到https页面了