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

nginx配置https协议

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2018-5-5 15:59:33 | 显示全部楼层 |阅读模式
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

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-5-5 16:07:03 | 显示全部楼层
创建了有效期100年,加密强度为RSA2048的SSL密钥key和X509证书文件。  @/ n9 a* y1 u. f; N( d3 C4 Q

' S2 Q5 K' Y- ^4 e# o* t参数说明:
4 S2 |; {5 u( ~$ t# t" I8 P# t( T! n9 V+ A: k: ~
req: 配置参数-x509指定使用 X.509证书签名请求管理(certificate signing request (CSR))."X.509" 是一个公钥代表that SSL and TLS adheres to for its key and certificate management.
6 \% U) h7 X7 Q' Q- D0 c. {-nodes: 告诉OpenSSL生产证书时忽略密码环节.(因为我们需要Nginx自动读取这个文件,而不是以用户交互的形式)。* r: a7 m/ n0 P/ ^+ }: i/ x( A
-days 36500: 证书有效期,100年
, S0 \" c. Q( J! e4 R-newkey rsa:2048: 同时产生一个新证书和一个新的SSL key(加密强度为RSA 2048)8 `* j" G4 ^: @) Z; A
-keyout:SSL输出文件名
- E9 A- k/ r; ]: w-out:证书生成文件名
1 Z1 e; |* \6 }$ _- i6 l3 Y0 I& f它会问一些问题。需要注意的是在common name中填入网站域名,如wiki.xby1993.net即可生成该站点的证书,同时也可以使用泛域名如*.xby1993.net来生成所有二级域名可用的网站证书。
0 w8 _- M+ K' ]  @( C  E整个问题应该如下所示:8 j9 O( t: s) u5 F4 K
. n' a3 l1 @9 b
Country Name (2 letter code) [AU]:US
: x, o+ J/ o5 E/ A9 \State or Province Name (full name) [Some-State]:New York+ j+ b9 a9 ~- {. C" q( y) c
Locality Name (eg, city) []:New York City
, m% T/ L! [# \& KOrganization Name (eg, company) [Internet Widgits Pty Ltd]:Bouncy Castles, Inc.
2 ]; _# e' l- n% |; A' g# qOrganizational Unit Name (eg, section) []:Ministry of Water Slides4 ?% s3 I' g. g# }' D
Common Name (e.g. server FQDN or YOUR name) []:your_domain.com
. o6 P% [7 ^/ r+ i% lEmail Address []:admin@your_domain.com

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-5-5 17:05:42 | 显示全部楼层
server{
8 b+ g% W% w( U( M; N7 O* c; k#比起默认的80 使用了443 默认 是ssl方式  多出default之后的ssl& I; c  \! g! I2 B/ b  |
        listen 443 default ssl;8 Z) d7 W" d5 V6 \' P' X4 I
#default 可省略
/ T! T. A- |8 ?; ]#开启  如果把ssl on;这行去掉,ssl写在443端口后面。这样http和https的链接都可以用
. B/ P4 h1 {$ ]/ F5 e% b        ssl on;
- ~( ^5 f/ A* |  d#证书(公钥.发送到客户端的)9 d" K" Y1 V& x4 r
        ssl_certificate ssl/server.crt;$ Q1 X- A) a- L! D2 A
#私钥,
7 d3 [6 l  Q% x7 F3 w$ B9 i- @/ O5 V        ssl_certificate_key ssl/server.key;* N6 U' o" w% l  p8 x
#下面是绑定域名
6 X6 _8 Z& z% g! i        server_name www.daj.com;
2 f8 l# Q7 b3 k' j0 ~        location / {
' t& g. N  [4 i2 g+ T0 P#禁止跳转
! u$ E6 M% m3 ?, c2 K        proxy_redirect off;
; x1 R0 R4 a' A& e0 n#代理淘宝
. @) A7 U  X- d3 ]$ v9 W4 ]4 o( ^proxy_pass https://www.tao.com/;  
7 o. r$ [6 p3 I& U        }        ( Z" j4 p' ^9 A8 L9 n
}

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2019-8-21 21:18:58 | 显示全部楼层
虚拟机实现https网络设置
1 `6 V* K& R9 k2 W" ~0 i现在很多网站使用的都是https协议,想在自己的电脑上实现下,3 F8 u5 Z/ S$ _7 I1 ]
8 b% q  n: i( e+ s. x+ i
由于自己的电脑是win10,我总是觉得在windows上布置环境不如在linux上稳定,所以在电脑上安装了虚拟机,cento系统 。5 A0 B' v! u: G% e, h
; ?+ y+ {) g, b, u
上周末在虚拟机上安装了lnmp环境和laravel及后台、oauth,辛辛苦苦的记下了安装步骤,没想到昨天打开电脑,要找笔记的时候,莫名奇妙的没有了,丢失的还有我保存的虚拟电脑(郁闷一分钟……)- Q5 b# f0 [0 U, Z5 K& s

4 N9 c3 ^! r/ O" l1 R  s  o怎么就莫名其妙的消失了呢,我怀疑是win10系统自动重启闹的,遂果断关掉自动重启功能(叉会儿腰)
* t7 }8 a7 g& m  Z
$ Y7 P% `" U* `$ ]' N! A# a3 w算了,不吐槽了,直奔主题
( m4 O; X# s6 E1 R* U( F1 x( D' A( L; X! q' a+ L" t: I
我在虚拟机上布置的lnmp环境,想要让网站可以用https访问,首先要申请证书,只是想搭个环境满足自己的好奇心,没必要申请付费的ssl证书,那就申请免费的吧
/ n& @- f/ E/ w, q# r1 U; L% s
5 W: K' i5 e( V- X生成私钥和证书
; H$ m6 N( n2 e8 P" _: U  s$ ^3 B1 m, Y
1.生成服务器的私钥(放在nginx的配置目录下)
7 M" D! ?) Z, K5 _: k" L
9 l2 G2 t, z+ a" d8 O3 ~7 O                openssl genrsa -des3 -out server.key 1024  (采用3DES加密算法生成1024位长度的私钥放在server.key文件中)4 b9 ~& v( N1 w; S
2 k" D' T8 ?( U7 d" G1 j( y
2.创建服务器证书的申请文件+ f* Z" f8 S$ `3 w6 }1 {5 s

$ F' b: f& F" x3 j1 E4 ^! Wopenssl req -new -key server.key -out server.csr
7 T2 ^4 r4 n6 E; _  y, G2 [& F% P! [0 E- K- _  X3 p
3.生成服务器的证书' R9 A0 c/ z3 Z$ y
: _6 T  b; d( l+ e7 r  Q. s' j
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
5 T9 p! [. q3 {+ d5 ?
* f; k- ]3 F$ q# z证书已经生成好了,接下来就可以部署证书了
: U( S) U7 _  e& G. g
. F8 ^% [9 v1 M. Q部署证书
6 M! C% a! C: t7 ?! I; L" e2 |4 R* Y% E( L5 g3 y# D
在nginx的配置文件中增加以下配置0 K; ?1 R" p+ P) G6 ~7 f" u6 ?* _) R

6 D; ?$ D1 U2 Nserver {
8 N2 Y  _! Q0 u6 q    listen       443 default ssl;0 ]/ k$ _4 i- ?
    ssl on;
, z+ }9 d) W8 E9 k+ [& U% W9 P) J1 i5 T    ssl_certificate /etc/nginx/conf.d/server.crt;
5 h7 ]! F' i( E) b. i/ A( O& j1 u    ssl_certificate_key /etc/nginx/conf.d/server.key;
4 l6 W) A% F+ |, A# B. C
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 04:28 , Processed in 0.017018 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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