|
|
ngin配置https协议
1 Z: X) E' c; d3 _: u$ k1.https简介# ~# p6 p& W6 N6 l
HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据1 a! X* S% q2 i' t
2.https协议原理. ~0 a; y' l. D2 O, h( Y
首先,客户端与服务器建立连接,各自生成私钥和公钥,是不同的。服务器返给客户端一个公钥,然后客户端拿着这个公钥把要搜索的东西加密,称之为密文,并连并自己的公钥一起返回给服务器,服务器拿着自己的私钥解密密文,然后把响应到的数据用客户端的公钥加密,返回给客户端,客户端拿着自己的私钥解密密文,把数据呈现出来2 g9 L9 v: V# {6 _+ E0 C) I
( d$ v9 K f' A1 ?
TLS或传输层安全( transport layer security),它的前身是SSL(安全套接字层secure sockets layer),是Web协议用来包裹在一个受保护,加密封装正常通道。
! @+ l7 ]1 G9 D采用这种技术,服务器和客户端之间可以安全地进行交互,而不用担心消息将被拦截和读取。证书系统帮助用户在核实它们与连接站点的身份。* W2 p: c) a) q
! U7 Z, z) W+ R( f$ p4 B# i( u* i! G+ r# ?1 E
openssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /usr/local/nginx/conf/ssl/nginx.key -out /usr/local/nginx/conf/ssl/nginx.crt1 L$ l9 b7 g3 d" m+ \/ L4 U+ ^
- l- C1 n+ a1 G( j7 b6 A! P+ M5 `' G1 M& ~" Z4 e# l5 b t
Generating a 2048 bit RSA private key' w$ S! o# C2 B- L( Z: {$ W
...................+++- c) |6 a6 s- r
........+++
; L( L" ~2 o0 Cwriting new private key to '/usr/local/nginx/conf/ssl/nginx.key'" r# K) h5 ?7 f2 W9 m# |8 l& y
-----
# ?! L5 {' b9 I; oYou are about to be asked to enter information that will be incorporated
5 q# x8 L, G9 U* J/ m2 Hinto your certificate request.0 Z; a! U! E |7 V
What you are about to enter is what is called a Distinguished Name or a DN.
4 n3 o" I+ @' [7 g$ | b; X2 J( V SThere are quite a few fields but you can leave some blank
5 S$ F' z0 z7 p+ c9 @' `7 yFor some fields there will be a default value,
* ]( R$ @/ L+ X1 Q; H, PIf you enter '.', the field will be left blank.
; c- h! |* a9 }( x-----
! ~! x$ n" Q2 g- G r! V3 k6 w1 y( ?
Country Name (2 letter code) [XX]:BJ 0 M, d# {* e% I- b# k$ o. u1 E. M
State or Province Name (full name) []:Beijing8 v4 @) U6 T2 @7 ]) ] {
Locality Name (eg, city) [Default City]:Beijing! l9 i M4 A) R/ _3 y! r, F& _
Organization Name (eg, company) [Default Company Ltd]:Beijing
0 d2 |# h9 e1 H F* X. F- MOrganizational Unit Name (eg, section) []: 8 o1 t0 ]1 l+ v- Q" @/ y1 t0 a- B
Common Name (eg, your name or your server's hostname) []:
( {6 h" S. {, Q! WEmail Address []:: i: D% z' t' I; i0 l8 }
7 Z( d/ ]! u5 B! n' D
) q1 F2 Y' Z! t2 b& H6 f
步骤2: Configure Nginx to Use SSL首先配置HTTP请求重定向 首先配置HTTP请求重定向 server {
/ U5 s" f% ]& G4 {9 R1 \9 S. ~
4 k# P8 ^! M4 _% J5 l' ?2 G listen 80; - x) ~; q9 U* W+ |
1 t( B* W J7 T! Z; [0 H5 m; ~* Z server_name www.yourdomain.com; 8 j- y" P, v' \- D, } x) A
: e' M( B; A& ]" |1 N rewrite ^ https://$http_host$request_uri? permanent; # force redirect http to https #return 301 https://$http_host$request_uri; / A8 a* O( Q. e
/ k" K. y( V4 O9 o6 M3 I# h9 ] }$ T$ H% N1 F2 n3 k5 W- K0 `. F2 F; `
8 W* F; a7 [" m) h1 w, e
server {
3 M) s4 Q' E. I9 |7 n6 @6 z1 A5 r L listen 443 ssl;
2 [* |% D+ M6 V R5 G ssl_certificate /etc/nginx/ssl/nginx.crt;, u" z! q: v, M( _6 q7 G4 k9 |
! `4 S( ?2 t y! ]* Q; Z
ssl_certificate_key /etc/nginx/ssl/nginx.key; 7 F3 Z5 E Z0 a. w+ D$ O
keepalive_timeout 70;% G0 j" t% i; [) _1 i& t
; W! _3 W. g* u2 H& H1 X server_name www.yourdomain.com; #禁止在header中出现服务器版本,防止黑客利用版本漏洞攻击
* f+ C0 W* |4 r5 W; s
' E$ ~* h$ Z8 E4 H" s server_tokens off; #如果是全站 HTTPS 并且不考虑 HTTP 的话,可以加入 HSTS 告诉你的浏览器本网站全站加密,并且强制用 HTTPS 访问 #add_header Strict-Transport-Security "max-age=31536000; includeSubdomains"; # ...... : Q. B. V! ? W- _ L$ Y+ ~" ^
/ ?6 \0 e/ E7 `* m4 f fastcgi_param HTTPS on;6 [' t N+ t$ [' D- w
5 b" V' S/ F! H9 U/ f: c2 E9 j4 y4 l
fastcgi_param HTTP_SCHEME https;7 z/ y( Y2 D. X7 z& K# N t5 A. k
6 P$ j5 T6 w3 W- a access_log /usr/local/nginx/logs/wiki.xby1993.net.access.log;
3 n, F" m7 b! I' q
) O, X1 h/ g5 \% J+ m* t error_log /usr/local/nginx/logs/wiki.xby1993.net.error.log; 6 _5 ?2 C( |$ J7 p' ^9 x
0 C4 L/ m9 A9 `. [& Q4 v+ W}
0 O' Z' r/ E! K( P6 A+ k* L( H1 T4 ?
5 v! N& O8 @1 A O* \ Y: L" z如果想同时启用HTTP和HTTPS ( _1 y& X# u3 B9 y, k
9 \0 s* B* t# g) p3 Kserver {
5 B4 i; a4 U- ]- Z0 ?2 k listen 80; 4 t6 f( t0 {' q5 `
9 K( ~7 ]6 d- l( h5 I6 A listen 443 ssl;
b# r+ z6 w; F' X) ]
2 Q- u8 H$ e, g: x server_name www.example.com; 8 o3 i4 s0 w' Z8 \) g @
1 x) x7 a! e/ |' l
ssl_certificate www.example.com.crt;
" q: @( T5 B8 m# @- s$ c+ ? t" l' b ssl_certificate_key www.example.com.key;
$ [5 W6 Q; B$ Y% [: _. Q
2 Z$ u9 M+ [$ H$ r9 ? ...+ q( ^4 u$ F, B7 q
}
2 S3 M% f& s4 G% w* `. C7 o( t' l, x/ O! R
|
|