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页面了