Apache使用SSL证书实现http升级https
服务器安装SSL尽量别用IIS安装,因为安装完IIS证书还的在IIS下安装服务器解析项目,
推荐Apache下直接安装证书,步骤如下
1.先去申请SSL证书,地址: 阿里云申请SSL ; 腾讯云申请SSL
2. 安装php扩展php_openssl (打开支持SSL证书),
将SSL证书放到apache下 conf/ssl/ 目录下 1_root_bundle.crt (中间证书文件) 2_xxxxx.com.crt (根证书文件) 3_xxxxx.com.key (密钥KEY文件)
注: 小程序中安卓无法获取内容, 报错 request:fail ssl hand shake error 这是由于缺少中间证书导致问题
3. 打开Apache目录先 conf/httpd.conf 配置文件; 打开找到 #LoadModule ssl_module modules/mod_ssl.so,去掉前面的注释符#(保证前面没有#号),使得ssl模块生效。
增加一条引用语句 Include conf/vhosts_ssl.conf ;
4. 在Apache 目录 conf/ 下新建 vhosts_ssl.conf 文件,添加一下内容
Listen 443 (一定要加)
#加下面两句使apache支持同一IP多网站多SSL证书同时生效
NameVirtualHost *:443
SSLStrictSNIVHostCheck off
#以上两句
<VirtualHost _default_:443>
ServerAdmin www.xxxxx.com (更换成自己的域名)
ServerName xxxxxxxx.com (更换成自己的域名)
DocumentRoot "/home/xx....xx/Thinkphp/public" (网站根目录)
SSLEngine on
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL
SSLCertificateFile "XXXXX/Apache/conf/ssl/2_xxxxxx.com.crt"
SSLCertificateKeyFile "XXXXX/Apache/conf/ssl/3_xxxxxx.com.key"
SSLCertificateChainFile "XXXXX/Apache/conf/ssl/1_root_bundle.crt"
</VirtualHost> 特别注意:标点符号一定要为英文标符(如:<>, " " ),删除中文
5, 重启Apache生效
apache设置问题可参考 SSL相关Apache设置