找回密码
 注册
查看: 4411|回复: 3

nginx配置https协议

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2018-5-5 15:59:33 | 显示全部楼层 |阅读模式
ngin配置https协议/ a% n, V! c6 ~
1.https简介- r- ]# U4 M! p8 ^" R7 J+ |
HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据
3 ^6 w, O, v  x9 I4 q% E2.https协议原理
5 d1 ~3 v) f' @  U首先,客户端与服务器建立连接,各自生成私钥和公钥,是不同的。服务器返给客户端一个公钥,然后客户端拿着这个公钥把要搜索的东西加密,称之为密文,并连并自己的公钥一起返回给服务器,服务器拿着自己的私钥解密密文,然后把响应到的数据用客户端的公钥加密,返回给客户端,客户端拿着自己的私钥解密密文,把数据呈现出来1 r$ ~) T  l  d" _
( a. U  J2 Z( F
TLS或传输层安全( transport layer security),它的前身是SSL(安全套接字层secure sockets layer),是Web协议用来包裹在一个受保护,加密封装正常通道。" u4 C( E+ H3 k" u
采用这种技术,服务器和客户端之间可以安全地进行交互,而不用担心消息将被拦截和读取。证书系统帮助用户在核实它们与连接站点的身份。
6 c* z2 M* m9 O* f/ G
4 v% @9 L0 ]5 d+ T1 y; q; q

" H( `+ V" V( J3 u1 f) [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
' `3 ~* d- ]3 J/ P, l  }# n; }- J

' ]+ @2 R9 j4 D- x/ x& p4 w0 \
, ~: T2 z6 J) M  h+ z& A
Generating a 2048 bit RSA private key
7 E" n. o1 `- D% a/ b0 a...................+++
" k0 l# ?9 J: L0 ^% c  k6 O  @........+++
8 T9 K9 F7 b. y+ u+ B/ W0 mwriting new private key to '/usr/local/nginx/conf/ssl/nginx.key'' b" F# n9 U" M
-----6 i; ]* ?# ]3 B4 r$ f3 h
You are about to be asked to enter information that will be incorporated* v% W. e" B. l2 ^$ K5 S6 v
into your certificate request.
4 j0 n: _; C6 r! M$ \- g6 TWhat you are about to enter is what is called a Distinguished Name or a DN.: R1 c/ b4 r" Y- T5 y7 ^  b* ^8 ~* E
There are quite a few fields but you can leave some blank
$ ?3 Q' O: ]+ p# A: y/ ^. J) BFor some fields there will be a default value,
) u* u8 K# l5 G6 p1 @  k; dIf you enter '.', the field will be left blank.8 n  S1 |7 o: f) f1 z# M3 [) R
-----
- b; ~4 D! C0 t% Y& O4 b* O7 i* ^; g/ F+ D, g5 P
Country Name (2 letter code) [XX]:BJ 1 |' F: j% |  n$ X2 {+ @. L* k4 `: n
State or Province Name (full name) []:Beijing* S/ e. |3 |% N% O: T  k: w" N- d/ M
Locality Name (eg, city) [Default City]:Beijing0 p( p( g% \: P* |- E+ r
Organization Name (eg, company) [Default Company Ltd]:Beijing
+ j$ T) c: F3 R* c, Y) ?  ^Organizational Unit Name (eg, section) []:
2 d5 i- r# w8 V1 yCommon Name (eg, your name or your server's hostname) []:  # Z' ^( X8 m" I# o9 \0 }
Email Address []:

% D& R& D( S) X
  [0 R4 v5 A% {: G! w2 A: R
% {; S# Z5 G) X* O
步骤2: Configure Nginx to Use SSL
首先配置HTTP请求重定向
首先配置HTTP请求重定向
server {  
: Z! g+ g, q* m  ]: W. ]- C
$ q! M, R; F8 o+ V  o4 T+ T           listen       80;      
+ T) D% M- L# u) j) R3 [: Z: x3 H. ~) y- h& ^, W
               server_name  www.yourdomain.com;   4 n' d& Z* w' f0 W' @  i. \! |/ p. u
* G. x) O; D6 o( Q
              rewrite ^ https://$http_host$request_uri? permanent;    # force redirect http to https    #return 301 https://$http_host$request_uri;
/ q. ?) e- i, F0 U$ k9 K( J# c: K9 B0 p
   }' Q& Z! l6 D  B8 E4 A

/ N" {2 E7 N7 @5 M; userver {        5 B  \, a6 r8 Q. o# b3 T1 Y6 Y
                 listen 443 ssl;      ! {; h. N7 L  P* f, R( q
                  ssl_certificate /etc/nginx/ssl/nginx.crt;
4 P$ d5 A" i+ ?# i4 Y" W- y9 i0 f2 W. d) N* |
        ssl_certificate_key /etc/nginx/ssl/nginx.key; " j+ i7 T2 \! w" t2 E
          keepalive_timeout   70;" Z: g4 @# c; M1 B* m2 U

9 A9 o- N8 o3 w( ~4 n        server_name www.yourdomain.com;    #禁止在header中出现服务器版本,防止黑客利用版本漏洞攻击   0 t, @3 h3 e, F3 E& Z, E  X
& H/ P2 P0 u! K$ l! P- z8 h& v
server_tokens off;    #如果是全站 HTTPS 并且不考虑 HTTP 的话,可以加入 HSTS 告诉你的浏览器本网站全站加密,并且强制用 HTTPS 访问    #add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";        # ......    $ r) o, h0 l6 J& H9 |

& x# n0 b5 I4 C# k) I    fastcgi_param   HTTPS               on;
$ }  ^' E* s. j. r. d, @; W# G
7 o  j, H# M+ C$ y3 ?        fastcgi_param   HTTP_SCHEME         https;
+ E: J  O, Y/ B5 G9 W. v4 D; A3 l
* I7 ^. _8 U1 L# Y; k1 F- ~! y    access_log      /usr/local/nginx/logs/wiki.xby1993.net.access.log;   
0 l0 Z3 @9 H9 F8 w! x$ e8 {  e( I. v' J: B8 `
     error_log      /usr/local/nginx/logs/wiki.xby1993.net.error.log;   : m6 s0 |1 G) I" H: Z
* W8 q* |4 p& u$ o
}
& @6 K& x, l4 l9 ?
3 v9 j" Q( G+ _) G* [  M, s
如果想同时启用HTTP和HTTPS

" G+ K+ K* o  k) E, |2 G9 ]( ^
. L, W2 U9 d8 p8 f' q
server {   
) _6 w" Z+ ?% g              listen              80;
* s- i6 |* y) k7 h
& k' F, o, Y3 _             listen              443 ssl;    ! v  O- m/ u" a+ u% x1 p6 `* w* h

. U* s6 y) u; w3 W. L8 Y# F& f           server_name         www.example.com;  
0 {  ?6 X6 E" q
1 n2 X7 j( q! i0 B0 X2 ^2 L         ssl_certificate     www.example.com.crt;   : z" s, l- G# Z( f( g7 h
          ssl_certificate_key www.example.com.key;
: f* b& e+ ~5 g% N. b( q* z2 y7 a+ a8 f
    ...
0 X7 f- z4 G0 o               }
6 D( F( }: k4 t8 {
& f8 H! T0 n  W# `& m

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-5-5 16:07:03 | 显示全部楼层
创建了有效期100年,加密强度为RSA2048的SSL密钥key和X509证书文件。1 s1 c) u2 C' g6 O+ g2 z7 `

% C3 `" R" S, S/ e: o+ v; Y8 ?参数说明:
# Y6 T2 D: M' i$ f& x2 g) Y" N- t' o  w: U& D" H2 `
req: 配置参数-x509指定使用 X.509证书签名请求管理(certificate signing request (CSR))."X.509" 是一个公钥代表that SSL and TLS adheres to for its key and certificate management.
. S: G( w# F/ c2 s  q/ H' C6 u-nodes: 告诉OpenSSL生产证书时忽略密码环节.(因为我们需要Nginx自动读取这个文件,而不是以用户交互的形式)。4 G' d/ Q5 \8 V) W
-days 36500: 证书有效期,100年
0 X" ~( M* \* U: c% R7 \5 o; }-newkey rsa:2048: 同时产生一个新证书和一个新的SSL key(加密强度为RSA 2048)
& N9 t/ E; _" O8 K+ u/ c-keyout:SSL输出文件名
2 w7 z. c8 O( x; x2 B) n- d-out:证书生成文件名
, f$ x' }! x3 w" I  U  @& q8 S) k它会问一些问题。需要注意的是在common name中填入网站域名,如wiki.xby1993.net即可生成该站点的证书,同时也可以使用泛域名如*.xby1993.net来生成所有二级域名可用的网站证书。
$ K$ e) }$ v0 ?' u! B% a" \整个问题应该如下所示:
& w+ R! z7 @& q, X
  G7 ^+ g3 v* g" _- d  [5 {Country Name (2 letter code) [AU]:US) N5 o) }6 V+ W
State or Province Name (full name) [Some-State]:New York
" k+ a9 b! ~; uLocality Name (eg, city) []:New York City
2 n% c9 R( a. i: X4 Y& E! G$ ~3 pOrganization Name (eg, company) [Internet Widgits Pty Ltd]:Bouncy Castles, Inc.
7 X9 a' a8 F! T- o+ HOrganizational Unit Name (eg, section) []:Ministry of Water Slides
# F8 K: U4 G$ l! L9 vCommon Name (e.g. server FQDN or YOUR name) []:your_domain.com8 y$ `' s. Y8 F* F# r
Email Address []:admin@your_domain.com

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-5-5 17:05:42 | 显示全部楼层
server{) U9 J5 y: P7 s6 G' B
#比起默认的80 使用了443 默认 是ssl方式  多出default之后的ssl/ h7 U  c+ S' ]& k; m- a
        listen 443 default ssl;) ^* Y  b* x0 }4 G. C
#default 可省略" w4 m2 j/ ]3 A! A# q
#开启  如果把ssl on;这行去掉,ssl写在443端口后面。这样http和https的链接都可以用
. r- F# W7 l2 ?% |3 c- h        ssl on;" t+ k) q  C' P5 y
#证书(公钥.发送到客户端的)
8 {) ^- B1 T9 {" [4 {% ?; j        ssl_certificate ssl/server.crt;9 t, y1 T) s/ T8 V$ V; Z5 Z
#私钥,
1 l. ]5 F4 L$ `$ B% x        ssl_certificate_key ssl/server.key;
/ g, J7 O4 W! N% T) O3 b7 J#下面是绑定域名* x' R, H% _9 ]/ k$ j
        server_name www.daj.com;
) O/ c, Y) @) S1 T7 d% H  o        location / {
' I) u& l0 t) Y; o+ \" Y, x. x0 m#禁止跳转
$ b2 @& @, Q# P* T        proxy_redirect off;
# B% Y+ X9 D7 N# q1 }8 t7 L#代理淘宝! D; x( g( M( ~) t+ {, D" ]
proxy_pass https://www.tao.com/;  ; v9 p6 ^4 a4 f$ o  V/ k
        }        
% [+ l0 i  T, B  j0 T. f! F}

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2019-8-21 21:18:58 | 显示全部楼层
虚拟机实现https网络设置: e( k, k4 f7 k) l. i
现在很多网站使用的都是https协议,想在自己的电脑上实现下,
4 J6 p; M  D  H+ q) g- T; y" L6 J* {: g/ p
由于自己的电脑是win10,我总是觉得在windows上布置环境不如在linux上稳定,所以在电脑上安装了虚拟机,cento系统 。
9 `% G1 j! m" p! b# {: L
* X1 ]3 n6 w/ ^! ^5 ]: F上周末在虚拟机上安装了lnmp环境和laravel及后台、oauth,辛辛苦苦的记下了安装步骤,没想到昨天打开电脑,要找笔记的时候,莫名奇妙的没有了,丢失的还有我保存的虚拟电脑(郁闷一分钟……)
' t! W/ H8 T* u- t5 v# r9 W0 j$ p5 b& o7 U( T  d. p( G
怎么就莫名其妙的消失了呢,我怀疑是win10系统自动重启闹的,遂果断关掉自动重启功能(叉会儿腰). i$ O/ D% u' V7 y& W
9 b7 ^, q( J) w% \
算了,不吐槽了,直奔主题. O4 Y  O: f% \$ q) q8 p

! k. S% i% B7 m5 H6 o" H我在虚拟机上布置的lnmp环境,想要让网站可以用https访问,首先要申请证书,只是想搭个环境满足自己的好奇心,没必要申请付费的ssl证书,那就申请免费的吧
9 n9 G( @4 Y) ], g4 M+ d; f5 [* c* J. Q/ ^8 _$ v3 R" Y, Z
生成私钥和证书
8 R# d. t. H1 I, e/ O1 k
8 Y4 S7 n7 y8 ?+ l) Q! g1.生成服务器的私钥(放在nginx的配置目录下): N( R9 Z$ H) ^) h" N' c/ q

2 a6 r5 r5 `1 {% \. T! k/ l                openssl genrsa -des3 -out server.key 1024  (采用3DES加密算法生成1024位长度的私钥放在server.key文件中)# R! L6 t2 e8 ^8 H

- o9 o% C. a7 Q7 P6 y" K2.创建服务器证书的申请文件; ~5 p9 I8 T# r* Y4 `" v

3 a& L8 G9 ]& V8 X5 e  Bopenssl req -new -key server.key -out server.csr
3 @  O3 F8 ]( F8 Z0 A% C$ H( Q6 e* V* E# }' l
3.生成服务器的证书
1 U. I( t& h1 s; l" V
! ~8 |$ P: s* E$ |/ w, e$ Fopenssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
# ~* J8 d, Q- o7 m  T0 `% C; ^% `) i" G8 J
证书已经生成好了,接下来就可以部署证书了
; }% Q& G$ a. S* s1 ~: V7 k4 K# l8 ^) a  _  l
部署证书& S( E# k- F8 m6 v( R. d9 n7 {
0 ], h7 ~/ i; }) a
在nginx的配置文件中增加以下配置
9 `; C0 q! ]7 E8 w5 y& x$ [% i% g
; N. N& b1 V  k( r( lserver {) i! S4 y) {1 ~- a. R) Q
    listen       443 default ssl;
) Q4 ^9 n' {, O+ U2 o4 H' r3 _. ]& y    ssl on;7 o5 t1 G" Z4 E+ E- u5 x
    ssl_certificate /etc/nginx/conf.d/server.crt;/ c2 V! @" f. G& m' l- \1 v9 e' u4 r
    ssl_certificate_key /etc/nginx/conf.d/server.key;
* t' G: S: r/ \( c$ q
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 04:24 , Processed in 0.015589 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表