最近再做小程序项目上线官方强制要求使用https,这里记录一下nginx下https的部署使用;如果有钱的话可以购买证书这里使用的是免费的
什么是https参考:https://jingyan.baidu.com/article/2d5afd69d4069685a2e28e3f.html
1.使用Let’s Encrypt免费证书
官网:https://letsencrypt.org/
默认3个月,但是可以通过脚本的方式达到永久证书,快到期的时候重新申请新的即可 具体操作请参考
https://www.168seo.cn/linux/24483.html
https://github.com/Neilpang/acme.sh/wiki/说明
2.使用腾讯云SSL证书
由于CA机构和证书代理商策略调整,从2018年1月1日起,同一主域最多只能申请20张亚洲诚信品牌免费型DV版SSL证书(一级域名及其子域名均属于同一主域,例如 domain.com、ssl.domain.com、ssl.ssl.domain.com 都属于同一主域)。之前已颁发的证书在有效期内使用不受影响(注:即将到期的证书需要18年1月1日以后重新申请时,会受到上述策略的限制)。
貌似同一主域只能免费申请20张证书,用完就要买了
我这边采用的是腾讯云全家桶系列 服务器、负载均衡、域名、证书 下边也是会围绕这些开始记录
首先得先将域名解析关联到服务器,这里就不记录 一键解析就好了
官方安装文档: https://cloud.tencent.com/document/product/400/4143
2.1 查看申请后的证书并下载
2.2 点击下载按钮下载证书
2.3 配置nginx
将Nginx文件夹下的证书文件和密钥复制到同一个目录下 如:/usr/local/nginx/conf 目录下
1_www.domain.com_bundle.crt SSL 证书文件
文件包括两段证书代码 “-----BEGIN CERTIFICATE-----” 和 “-----END CERTIFICATE-----”
2_www.domain.com.key 私钥文件
文件包括一段私钥代码 “-----BEGIN RSA PRIVATE KEY-----” 和 “-----END RSA PRIVATE KEY-----”
修改 Nginx 根目录下 conf/nginx.conf 文件,内容如下:
server {
listen 443;
server_name www.domain.com; #填写绑定证书的域名
ssl on;
ssl_certificate 1_www.domain.com_bundle.crt;
ssl_certificate_key 2_www.domain.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
ssl_prefer_server_ciphers on;
location / {
root html; #站点目录
index index.html index.htm;
}
}
配置完成后,请先执行命令 bin/nginx –t 测试 Nginx 配置是否有误。若无报错,重启 Nginx 之后,即可使用 https://www.domain.com 来访问。
配置文件参数 | 说明 |
---|---|
listen 443 | SSL 访问端口号为 443 |
ssl on | 启用 SSL 功能 |
ssl_certificate | 证书文件 |
ssl_certificate_key | 私钥文件 |
ssl_protocols | 使用的协议 |
ssl_ciphers | 配置加密套件,写法遵循 openssl 标准 |
对于用户不知道网站可以进行 HTTPS 访问的情况下,让服务器自动把 HTTP 的请求重定向到 HTTPS。
在服务器这边的话配置的话,可以在页面里加 js 脚本,也可以在后端程序里写重定向,当然也可以在 web 服务器来实现跳转。Nginx 是支持 rewrite 的(只要在编译的时候没有去掉 pcre)
在 HTTP 的 server 里增加 rewrite ^(.*) https://$host$1 permanent;
这样就可以实现 80 进来的请求,重定向为 HTTPS 了。
遇到的问题:
域名解析服务器配置一切正常但是https就是不生效或者证书无效
1.检查安全组443端口是否开发
2.当前证书申请域名是否和访问域名相同 子域名不可和主域名共用同一证书
上面讲的是将证书安装到nginx中 下边记录的是腾讯云负载均衡开启https
1.部署到负载均衡或者直接到负载均衡列表监听器管理直接配置
2.点击新建按钮创建一个https的监听器、选择对应的证书
3.添加规则
4.配置规则窗口
5.点击配置好的规则路径关联服务器
6.最后使用https访问即可