0%

Nginx 配置 ssl 证书,并设置http强跳https

因为微信小程序审核需要,需配置https请求。从老鸟那了解到了Let’s Encrypt免费SSL证书,记录自己的配置过程。

Let’s Encrypt默认是90天有效期,但是我们也可以到期自动续约,不影响我们的尝试和使用。

环境

1.需要系统支持Python2.7以上版本
2.支持GIT工具
3.我的是ubuntu 16.04
4.web容器nginx

安装

下载组件

1
2
$ git clone https://github.com/letsencrypt/letsencrypt
$ cd letsencrypt

关闭当前nginx服务器

1
2
$ sudo service nginx stop

生成证书

根据自己的实际站点情况将**域名更换成自己的。
如果到期了,再次执行该命令即可,或者设置定时任务自动执行。

1
# ./letsencrypt-auto certonly --standalone --email admin@***.com -d ***.com -d www.***.com

出现选项 Agree 或 Cancel 选择 A;
出现选项 Yes 或 No 选择 Y ;

在完成Let’s Encrypt证书的生成之后,我们会在”/etc/letsencrypt/live/***.com/“域名目录下有4个文件就是生成的密钥证书文件。

cert.pem - Apache服务器端证书
chain.pem - Apache根证书和中继证书
fullchain.pem - Nginx所需要ssl_certificate文件
privkey.pem - 安全证书KEY文件

配置

修改nginx配置,并设置http强跳

ubuntu的nginx配置在/etc/nginx/sites-enabled/default
主要是这个:

1
2
3
ssl on;
ssl_certificate /etc/letsencrypt/live/***.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/***.com/privkey.pem;

注意对应要跳的端口,要换成你对应的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

upstream my_server {
server 127.0.0.1:8081;
keepalive 2000;
}
server {
listen 80;
server_name ***.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443;
server_name ***.com;
ssl on;
ssl_certificate /etc/letsencrypt/live/***.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/***.com/privkey.pem;
client_max_body_size 1024M;
location /my/ {
proxy_pass http://my_server/;
proxy_set_header Host $host:$server_port;
}
location / {
proxy_pass http://127.0.0.1:8082;
}

}