现在越来越多的地方需要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里面的内容都替换成如下


Listen 443
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文件,那么在你的虚拟站点中做如下配置即可


<VirtualHost *:80>
    ServerName xxxx.h5av.com
    RewriteEngine On
    RewriteRule ^/(.*)$ https://xxxx.h5av.com/$1 [R=301]
</VirtualHost>

至此,所有配置完毕

发表评论

必填项已用*标注