Nginx配置SSL证书及跳转配置
Nginx 配置 SSL 证书
SSL 证书是一种数字证书,它使用 Secure Socket Layer 协议在浏览器和 Web 服务器之间建立一条安全通道,从而实现:
1、数据信息在客户端和服务器之间的加密传输,保证双方传递信息的安全性,不可被第三方窃听;2、用户可以通过服务器证书验证他所访问的网站是否真实可靠。HTTPS 是以安全为目标的 HTTP 通道,即 HTTP 下加入 SSL 加密层。HTTPS 不同于 HTTP 的端口,HTTP 默认端口为 80,HTTPS 默认端口为 443。
2、自签发 SSL 证书
- 生成一个 RSA 密钥
1
|
$ openssl genrsa -des3 -out apiw.key 1024
|
- 生成一个证书请求
1
|
$ openssl req -new -key apiw.key -out apiw.csr
|
- Nginx 使用的私钥需要去除密码口令
1
|
$ openssl rsa -in apiw.key -out apiw_nopass.key
|
- 自己签发证书
1
|
$ openssl x509 -req -days 3650 -in apiw.csr -signkey apiw_nopass.key -out apiw.crt
|
生成证书请求,会提示输入省份、城市、域名信息等,重要的是,email 一定要是你的域名后缀的。
Nginx 添加 SSL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name www.xxx.com;
root /usr/share/nginx/html;
ssl on;
ssl_certificate "/etc/nginx/conf.d/apiw.crt"; #这里写crt
ssl_certificate_key "/etc/nginx/conf.d/apiw_nopass.key"; #这里写key
# 若ssl_certificate_key使用apiw.key,则每次启动Nginx服务器都要求输入key的密码,比较麻烦。
ssl_protocols TLSV1 TLSV1.1 TLSV1.2;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m; #设置ssl session 的共享内存cache,对性能有利
ssl_ciphers AES128+EECDH:AES128+EDH:!aNULL;
ssl_prefer_server_ciphers on;
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
|
http 强制跳转 https
1
2
3
4
5
6
7
8
9
|
server {
listen 80;
server_name _;
location / {
if ($ssl_protocol = "") {
return 301 https://$server_name$request_uri;
}
}
}
|
参考