0%

NGINX SSL配置

为网站配置SSL证书,以获取HTTPS访问

脚本

Nginx配置证书其实并不难,获取证书还比较麻烦一点。

域名的服务提供商,如阿里腾讯等,通常会有傻瓜式的SSL证书申请方案,依然是需要准备身份证号和手机验证即可申请。

由于Nginx在代理转发领域的的统治性地位,以下主要记录如何通过Nginx使用SSL证书来达到Https协议访问Web服务的目的。

SSL证书长什么样子

SSL证书有两个文件,文件名叫什么无所谓,扩展名分别为pem和key,这两个文件和ssh的id_rsa类似,毕竟都是使用的rsa算法。

key文件的结构是

1
2
3
-----BEGIN RSA PRIVATE KEY-----
......
-----END RSA PRIVATE KEY-----

pem文件的结构是

1
2
3
4
5
6
-----BEGIN CERTIFICATE-----
......
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
......
-----END CERTIFICATE-----

SSL证书放在哪

推荐放在Nginx目录中,在ubuntu中,Nginx的目录在/etc/nginx,我创建了一个/etc/nginx/cert目录来存放这两个文件

Nginx配置

http仅需指定端口即可https有一些ssl的配置是必须的。

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
27
28
29
30
31
32
server {
server_name www.hxygmy.site;

# http
#listen 80;
#listen [::]:80;


# https
#端口
listen 443 ssl;
listen [::]:443 ssl;
# 下面两个是ssl证书存放位置
ssl_certificate /etc/nginx/cert/xxx.pem;
ssl_certificate_key /etc/nginx/cert/xxx.key;

ssl_session_timeout 5m;
ssl_ciphers ECDH:AESGCM:HIGH:!RC4:!DH:!MD5:!3DES:!aNULL:!eNULL;
#ssl_ciphers AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;


location / {
proxy_pass http://192.168.31.154:4000/;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}

}