|
|
ngin配置https协议3 E% c! N7 ~( ~$ g) \) y
1.https简介
" `7 u. I2 n, g( L: k6 h9 n7 l9 Y# ZHTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据
% C+ M' M7 T4 ~2.https协议原理, b9 }3 M- {( }8 P& d) Z3 o
首先,客户端与服务器建立连接,各自生成私钥和公钥,是不同的。服务器返给客户端一个公钥,然后客户端拿着这个公钥把要搜索的东西加密,称之为密文,并连并自己的公钥一起返回给服务器,服务器拿着自己的私钥解密密文,然后把响应到的数据用客户端的公钥加密,返回给客户端,客户端拿着自己的私钥解密密文,把数据呈现出来: l2 Q' Q7 t \) r& q3 B3 R0 n, I5 m
7 T7 c7 s8 u8 \
TLS或传输层安全( transport layer security),它的前身是SSL(安全套接字层secure sockets layer),是Web协议用来包裹在一个受保护,加密封装正常通道。& }& |7 U: y! j4 Y$ G
采用这种技术,服务器和客户端之间可以安全地进行交互,而不用担心消息将被拦截和读取。证书系统帮助用户在核实它们与连接站点的身份。
1 v- C# _4 W% [8 z$ S
( O3 o1 q! n. I! E
4 f6 N; o2 | k- M) {% {openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /usr/local/nginx/conf/ssl/nginx.key -out /usr/local/nginx/conf/ssl/nginx.crt
6 f) T/ Y& j& k8 n6 W+ V* f7 C: q7 S
3 X! ]4 G I1 I, \3 z
Generating a 2048 bit RSA private key K3 f9 T# N) |+ G( l
...................+++
5 u) y2 R+ ~4 m; y) T........+++
% T9 K3 J4 t) S3 owriting new private key to '/usr/local/nginx/conf/ssl/nginx.key'9 Y# L- @6 w4 ?8 I+ i0 y0 ]
-----
* B3 t0 ` k: |+ q3 SYou are about to be asked to enter information that will be incorporated
; r- N/ J1 u7 c) `, Kinto your certificate request.& I9 e1 l4 L; N$ [7 _, ^$ j' H
What you are about to enter is what is called a Distinguished Name or a DN.1 Q4 R; h/ T+ V& W+ j
There are quite a few fields but you can leave some blank( w1 c& @0 i6 _7 x- A
For some fields there will be a default value," K5 L; ^8 n8 U
If you enter '.', the field will be left blank.0 Y: a# ^* ~+ K% `
-----
1 W6 ~! B6 u* i% P& b4 x' d
4 V+ [& ?# [% h7 T# JCountry Name (2 letter code) [XX]:BJ
6 w1 B6 W8 [2 U& a# b: M& `State or Province Name (full name) []:Beijing
1 z* E: u( k; V; r# D' S( ^0 ^3 fLocality Name (eg, city) [Default City]:Beijing( u; D" y# t. e& P
Organization Name (eg, company) [Default Company Ltd]:Beijing
' D/ M; P8 {* x: O5 ^Organizational Unit Name (eg, section) []: , j/ Y: t- a2 a! K3 W c5 ]
Common Name (eg, your name or your server's hostname) []: - g( B+ R/ |' x/ ?3 {4 Q
Email Address []:
, u' ^* l- A; n0 z/ E- X
: a' Z P4 X$ f, k: H& A( k4 I/ j' v( \
步骤2: Configure Nginx to Use SSL首先配置HTTP请求重定向 首先配置HTTP请求重定向 server { # A& z, H: J3 \/ c% l; E5 a, D* k! }$ a
5 V. t. K) F& I- ` listen 80;
0 w. ~, P% w! T/ Y$ z& W5 z2 d4 Z. l. V: s* B. C
server_name www.yourdomain.com;
- A9 \" A x+ N# p
6 g7 I) r$ ~" U9 I- a rewrite ^ https://$http_host$request_uri? permanent; # force redirect http to https #return 301 https://$http_host$request_uri;
# M9 }3 f2 w# [/ d8 \- Y. W. o
& g" }& H* H$ {+ @; k5 E* P- M L }% \8 [* f) Y- u% k/ L& Z
" l V$ l& d. G/ O& ~$ V, dserver { # ]" p# T, B9 X' f# G; P! q
listen 443 ssl; 5 E2 p0 E9 L- D! }
ssl_certificate /etc/nginx/ssl/nginx.crt;
+ h: n6 [6 z( a) |% r2 h: a/ H+ R$ f7 i
ssl_certificate_key /etc/nginx/ssl/nginx.key;
# P* Q) b- [& |* n keepalive_timeout 70;
+ Q" J; @7 Q. Z# p- s
2 h) m) x; U5 f* ?, {( W) \ server_name www.yourdomain.com; #禁止在header中出现服务器版本,防止黑客利用版本漏洞攻击
: x$ E* G' E% A1 [& u/ @. s" e" \7 S, V- j/ n- j( j
server_tokens off; #如果是全站 HTTPS 并且不考虑 HTTP 的话,可以加入 HSTS 告诉你的浏览器本网站全站加密,并且强制用 HTTPS 访问 #add_header Strict-Transport-Security "max-age=31536000; includeSubdomains"; # ......
: e8 @! o$ x: w7 d# J$ B2 x( u7 g( ~* F( X1 u0 ?7 G. W" ?0 U$ d4 Q4 P2 L
fastcgi_param HTTPS on;2 i+ c j9 g% _
/ i! s- t- g0 z1 r; u: R* x fastcgi_param HTTP_SCHEME https;
7 ~% T( A% N! r( i* \" i" S: p5 j# m8 T U/ [9 V; R* o! k
access_log /usr/local/nginx/logs/wiki.xby1993.net.access.log; ' a* c2 e2 N7 a! ]8 D/ M* h
) L8 U/ I* t1 `) C error_log /usr/local/nginx/logs/wiki.xby1993.net.error.log; ; ], C* t3 N, J! m3 n! x5 G
' R; s% _8 n, B& Z
}9 I1 G4 r- B+ P* j) W
; h0 f6 ?* ]+ V' G, W5 v8 a如果想同时启用HTTP和HTTPS
. ]# I) J c2 a
/ B* g' @2 b4 G3 b' [server {
/ U+ c e: @2 B) t- e4 @ listen 80;
0 J$ L% P7 \. i
* ^8 P# h# k: g$ ]: W listen 443 ssl;
6 N& t6 o# s* U' R, V: s7 L+ w; H; O) w9 I# j
server_name www.example.com; 8 M- h4 d' D& u* S4 y' E; r* Q
; V3 X8 j0 u( B; M& _7 g3 o0 w6 N ssl_certificate www.example.com.crt;
5 {% J2 j7 Y& z2 i: ^ k ssl_certificate_key www.example.com.key;6 P' a* U& |: y' Q4 l; T* D! I
- |( k+ X# u: B) Y4 ]1 l. f+ v
...) K* X- \# _ V1 d f0 R* M
}6 L2 B+ p6 t* v. H9 m
1 G0 r8 F0 y" M* k5 B
|
|