原文链接:https://www.h5av.com/archives/156.html
现在越来越多的地方需要https了,有些是必须的,比如微信小程序的接口链接,要求使用https,公众号上防止运行商插入广告等。以前的https是需要花钱的,现在有不花钱的,我使用的是阿里云,像腾讯百度也都有免费的,我没用过,现在就从头到尾简单的介绍一下设置过程。
一.申请SSL证书(阿里云下的域名)
1.进入阿里云域名管理列表,找到想申请ssl的域名,点击管理
2.点击“免费开启SSL证书”
3.选择免费版
4.设置要申请的二级域名(www也是二级域名)
授权系统自动添加TXT解析记录要勾选,否则还要自己添加解析
5.申请成功后,该申请会出现在“未签发”选项卡上,点击申请
6.如果填写二级域名的时候没有勾选“授权系统自动添加TXT解析记录”,那么需要手动添加一条解析,如果勾选可略过
7.点击验证
8.大概几分钟的时间就会验证通过,这时“已签发”选项卡下就会出现刚刚申请的证书信息,点击“下载”
9.根据自己的环境选择下载,本教程使用的是Apache,所以选择下载Apache版本
至此,SSL证书申请完毕
二.配置Apache2.4
1.配置conf/httpd.conf
找到如下行并去掉#
#LoadModule ssl_module modules/mod_ssl.so
#Include conf/extra/httpd-ssl.conf
另外,要确认以下两行至少有一行是去掉#的:
LoadModule socache_dbm_module modules/mod_socache_dbm.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
我的默认配置是自动开启 mod_socache_shmcb.so 的
2.配置conf/extra/httpd-ssl.conf
如果你之前并未配置过httpd-ssl.conf,那么就按照我的懒人方法来设置,将之前的httpd-ssl.conf备份一份,然后将当前httpd-ssl.conf里面的内容都替换成如下
SSLPassPhraseDialog builtin
SSLSessionCache "shmcb:${SRVROOT}/logs/ssl_scache(512000)"
SSLSessionCacheTimeout 300
##
## SSL Virtual Host Context
##
Define SSLROOT "C:/SSL"
<VirtualHost *:443>
DocumentRoot "C:/webroot/xxxx.h5av.com"
ServerName xxxx.h5av.com:443
SSLEngine on
SSLCertificateFile ${SSLROOT}/xxxx.h5av.com/155000_xxxx.h5av.com_public.crt
SSLCertificateKeyFile ${SSLROOT}/xxxx.h5av.com/155000_xxxx.h5av.com.key
SSLCertificateChainFile ${SSLROOT}/xxxx.h5av.com/155000_xxxx.h5av.com_chain.crt
</VirtualHost>
a) Listen是要监听的端口,https使用的是443端口,一般不改
b) SSLROOT 是我自己加上的,由于一个域名要指定3个证书文件,所以声明了一个变量,设置成你存放证书的路径,这里写绝对路径
c) DocumentRoot/ServerName 就不多介绍了
d) 最后指定证书文件:
SSLCertificateFile 对应 public.crt
SSLCertificateKeyFile 对应 key
SSLCertificateChainFile 对应 chain.crt
3.重启Apache服务
是不是访问不了?
三.服务器开启443端口
之前调试了很久,对比了很多参数,为什么不好使呢?最后发现没有开启443端口,不同主机上开启服务器端口的方式也都大同小异,由于我使用的是阿里云ECS,所以在控制台开启443端口
1.找到ECS,点击 更多 → 网络和安全组 → 安全组配置
2.找到对应的安全组,点击“配置规则”
3.点击右上角按钮“添加安全组规则”
曾经我点击“快速创建规则”,直接选择 HTTPS(443),经常失败,最后还是“添加安全组规则”好用
按照此配置即可
至此443端口开放完毕,若服务器配置了防火墙规则,那么就去服务器上开启一下入站的443
四.使http访问自动转为https访问
四.使http访问自动转为https访问
配置这个的方式有很多,有在索引文件中判断协议后做301重定向的,有在Rewrite规则中做重定向的,而我更喜欢的是在vhost中做重定向
vhost重定向
如果你的Apache配置启用了vhost文件,那么在你的虚拟站点中做如下配置即可
ServerName xxxx.h5av.com
RewriteEngine On
RewriteRule ^/(.*)$ https://xxxx.h5av.com/$1 [R=301]
</VirtualHost>
至此,所有配置完毕