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

nginx配置https协议

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2018-5-5 15:59:33 | 显示全部楼层 |阅读模式
ngin配置https协议
: t& Z: S; Y6 F2 C; C1.https简介" ?" J! \& g! l& q. y. Y5 z
HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据
) e" h6 O; j. }2.https协议原理
" n! s, G, q& I% J/ C( H& Y; J& i- W首先,客户端与服务器建立连接,各自生成私钥和公钥,是不同的。服务器返给客户端一个公钥,然后客户端拿着这个公钥把要搜索的东西加密,称之为密文,并连并自己的公钥一起返回给服务器,服务器拿着自己的私钥解密密文,然后把响应到的数据用客户端的公钥加密,返回给客户端,客户端拿着自己的私钥解密密文,把数据呈现出来
# `2 d5 h9 |' I( D" }1 X# Z) m! p8 i. L- |
TLS或传输层安全( transport layer security),它的前身是SSL(安全套接字层secure sockets layer),是Web协议用来包裹在一个受保护,加密封装正常通道。' a# y9 [/ q* T1 G( Z
采用这种技术,服务器和客户端之间可以安全地进行交互,而不用担心消息将被拦截和读取。证书系统帮助用户在核实它们与连接站点的身份。
5 A0 U. f, w; z

$ p, b- @- v# [$ d
5 }- |7 i8 C# C5 a9 e  [2 aopenssl req -x509 -nodes -days 36500 -newkey rsa:2048 -keyout /usr/local/nginx/conf/ssl/nginx.key -out /usr/local/nginx/conf/ssl/nginx.crt
7 w* J+ S. s, \  O" N

, K2 f; \; l4 c$ s( l! x' ^( Y

  s. T, s+ O6 E; U0 z3 eGenerating a 2048 bit RSA private key" c8 y8 `' O1 y8 D
...................+++' W& B' l0 S: ?& \- q
........+++
: Z; ~. c) W# l: w5 ^writing new private key to '/usr/local/nginx/conf/ssl/nginx.key'
7 M" T; x/ a6 J+ i, O# K-----) U" o+ R9 S# u5 \; E8 A6 T
You are about to be asked to enter information that will be incorporated
$ w, o" O" d& d$ ointo your certificate request.+ N/ T, C) ~7 c
What you are about to enter is what is called a Distinguished Name or a DN.4 X5 h' ^; Z2 W/ d  h% P
There are quite a few fields but you can leave some blank5 r( x: w* o; Z7 M0 S) Q; B) d
For some fields there will be a default value,, M$ u7 }  K7 n
If you enter '.', the field will be left blank.
$ q: |: u4 u) |, k2 l4 K-----) k8 N+ D% S( W) X0 r# y' K

+ O3 B! r( K4 W/ s8 M1 o. E0 rCountry Name (2 letter code) [XX]:BJ % a1 @. O2 T- v" C5 {1 y4 e# s
State or Province Name (full name) []:Beijing
* n1 T% _- x  b& C! e6 H% j" N+ |5 gLocality Name (eg, city) [Default City]:Beijing
" z& X3 r; Q0 A" U# _" t! ?1 _Organization Name (eg, company) [Default Company Ltd]:Beijing
8 P& g! M; D; }; BOrganizational Unit Name (eg, section) []:
1 B# k, ?6 ^8 N) s$ HCommon Name (eg, your name or your server's hostname) []:  
4 y1 r% q) o5 v  WEmail Address []:

1 C2 r( r& }; L! ^

, h, B9 a; f% S4 o# v
9 \; X2 B: K" S" n6 b: t3 x, L
步骤2: Configure Nginx to Use SSL
首先配置HTTP请求重定向
首先配置HTTP请求重定向
server {  0 X$ F3 Z9 q/ n3 A4 z; g

$ C: D" U4 ~$ H, o( L8 s2 R; l' r           listen       80;      
- O& s1 e3 D* m, F( e6 n' m% c& O. J9 C9 D4 d7 ~0 n* m
               server_name  www.yourdomain.com;   ! M( W, K0 z$ X* x
; h: ~9 \2 f3 L  C! |+ `7 z
              rewrite ^ https://$http_host$request_uri? permanent;    # force redirect http to https    #return 301 https://$http_host$request_uri; 5 D0 p% c+ l9 e2 T9 R

- O& r4 f9 _9 w; D   }* M5 K" ~7 @1 _! z1 P

* I' i: O: n: a# l  \/ a0 Z8 m# j$ l! fserver {        
8 [9 |( ]! L) a5 x$ {! j; b- v7 u                 listen 443 ssl;      
' M2 e& B; I1 y) ^* z$ S. s* t                  ssl_certificate /etc/nginx/ssl/nginx.crt;
8 A; W( ?* H0 n/ E6 W' \6 z+ ~& N9 `& ?/ p% m2 B5 ~* V
        ssl_certificate_key /etc/nginx/ssl/nginx.key;
, t2 I  f: I5 S$ E1 T/ x% r0 k          keepalive_timeout   70;1 y0 t# _  a' w- V% Y/ Z) o1 ?

9 E9 _5 t% r! B' L. o7 A3 P        server_name www.yourdomain.com;    #禁止在header中出现服务器版本,防止黑客利用版本漏洞攻击   & w# l2 R' j* z9 |* Y
7 G3 I1 X! r4 z& j2 }; i, X
server_tokens off;    #如果是全站 HTTPS 并且不考虑 HTTP 的话,可以加入 HSTS 告诉你的浏览器本网站全站加密,并且强制用 HTTPS 访问    #add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";        # ......   
6 F. P% r3 m: R+ X' ~1 M9 J8 O7 `1 c- J' w2 W
    fastcgi_param   HTTPS               on;/ M: w9 i) |- X. E
% d0 q1 x2 |) C/ e( `
        fastcgi_param   HTTP_SCHEME         https;0 ^+ y6 \9 f; y

/ H: v2 R+ K" P1 ^7 }( [    access_log      /usr/local/nginx/logs/wiki.xby1993.net.access.log;   
) x) d+ b7 y1 X2 I4 r( f0 j2 M3 X9 L
     error_log      /usr/local/nginx/logs/wiki.xby1993.net.error.log;   
: b$ @1 G+ m% _; Y( [! a" h' H
3 e+ ]% U4 g3 D* R$ q) Y  r, f9 S" }}4 h  U  _) r: _* E; g# {- O& E
6 `9 U2 Q& C4 D  d6 ~$ G
如果想同时启用HTTP和HTTPS
( t" c: x" k) ~6 \
; j) h* Y2 f. a
server {   7 }* T; q2 {. A: L: \% F* J
              listen              80;
4 p7 t' x' _0 K# C! H$ J0 }- Y5 |  ~6 b3 D! K- W' @
             listen              443 ssl;    ( Z( J: _+ L( b6 y& y8 C

$ }7 l) y: K# v) q% e7 W/ r" w/ O           server_name         www.example.com;  
! y9 Z3 c5 b9 E7 n& P. p/ G$ `. y
         ssl_certificate     www.example.com.crt;   
9 @6 b0 n4 ?" L8 N# q          ssl_certificate_key www.example.com.key;
; o4 B$ a. E2 `1 \5 K" b# _* u3 [5 e5 N
# G, P2 h5 l& r+ r8 X6 b    ...' h$ e: G+ ]; N1 q; b
               }
! _% ^6 R, g- G0 a5 i9 r4 w- j' u% _# |( V1 T

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-5-5 16:07:03 | 显示全部楼层
创建了有效期100年,加密强度为RSA2048的SSL密钥key和X509证书文件。
9 L3 x: N' Q- \) L
' m9 }6 C# Y8 n7 d+ j" P参数说明:
$ y5 H+ p: h. m
4 z$ D5 h" H& _req: 配置参数-x509指定使用 X.509证书签名请求管理(certificate signing request (CSR))."X.509" 是一个公钥代表that SSL and TLS adheres to for its key and certificate management.# D7 m, y. C, S' k/ W
-nodes: 告诉OpenSSL生产证书时忽略密码环节.(因为我们需要Nginx自动读取这个文件,而不是以用户交互的形式)。
, [' _7 j! W6 [' K0 i-days 36500: 证书有效期,100年- _: E3 O5 f1 L, Y* E
-newkey rsa:2048: 同时产生一个新证书和一个新的SSL key(加密强度为RSA 2048)8 m' Z. I7 k8 }0 ^) J  _! c0 x0 B
-keyout:SSL输出文件名$ `# U" J& t. ~! d
-out:证书生成文件名( K$ V3 \% n. U& H) Q9 L1 M2 M
它会问一些问题。需要注意的是在common name中填入网站域名,如wiki.xby1993.net即可生成该站点的证书,同时也可以使用泛域名如*.xby1993.net来生成所有二级域名可用的网站证书。: I( @, R! \# R6 w2 K+ q* ~
整个问题应该如下所示:
0 T& f( [# z( S" u+ U8 H% U. {! E4 A% ?- K# Z
Country Name (2 letter code) [AU]:US. \8 R6 N7 G3 V7 }' b' F2 e
State or Province Name (full name) [Some-State]:New York) ?3 L2 @' t' e% A0 |
Locality Name (eg, city) []:New York City- I' N' I) r2 T5 k2 v/ a
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Bouncy Castles, Inc.* D7 u( f- U4 ?, j9 O/ X4 A% Z+ S% Z8 c
Organizational Unit Name (eg, section) []:Ministry of Water Slides
6 U# F5 b7 G$ }$ u, ECommon Name (e.g. server FQDN or YOUR name) []:your_domain.com- v2 A. o/ _7 @+ g3 j+ T7 f$ c
Email Address []:admin@your_domain.com

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2018-5-5 17:05:42 | 显示全部楼层
server{
% W, G0 A$ M5 n4 j3 d, o0 R8 o9 s#比起默认的80 使用了443 默认 是ssl方式  多出default之后的ssl
; S$ F% o3 K! A! j" }2 }        listen 443 default ssl;
. `9 ^% f# {' ~. L#default 可省略
1 o$ E5 A5 {! A4 ~1 l#开启  如果把ssl on;这行去掉,ssl写在443端口后面。这样http和https的链接都可以用
* ~9 v9 [3 m  V, `* b# D! j; j* T        ssl on;
4 h. f$ S  _( }6 t#证书(公钥.发送到客户端的); V8 I* l6 m) j  S6 E$ |2 |( J
        ssl_certificate ssl/server.crt;
6 i5 h: h$ [! `8 J+ c6 X0 v' X" g$ b#私钥,9 `& ?; F! L: q2 V, ?! B$ R) W
        ssl_certificate_key ssl/server.key;
; S5 [5 r5 R: j2 ^7 w#下面是绑定域名
# j( k$ Q' J! J% n) _) {) d7 T        server_name www.daj.com;, e- h; E. U3 t4 f( H
        location / {
2 v, B% {, R7 U: ~% J7 o. a3 k! {3 ?#禁止跳转
7 j& m/ i  r: b0 w# x1 b3 W* v        proxy_redirect off;
4 f: K9 v$ E5 W3 A: }. T#代理淘宝
9 P0 ?% A' k9 w2 q- yproxy_pass https://www.tao.com/;  3 Y. S  R* ?- K2 S- E
        }        
9 ~. g( ]; |/ f+ J7 B" f+ w5 Y}

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
 楼主| 发表于 2019-8-21 21:18:58 | 显示全部楼层
虚拟机实现https网络设置
% f! L- O+ Z+ h现在很多网站使用的都是https协议,想在自己的电脑上实现下,
1 c2 T" l( [0 [7 _, P; C
& t; p/ z% D$ z0 b由于自己的电脑是win10,我总是觉得在windows上布置环境不如在linux上稳定,所以在电脑上安装了虚拟机,cento系统 。( a; I6 Y; l3 t, ]2 S, w
3 |  ?! i* b# q8 r# V% T" g9 {
上周末在虚拟机上安装了lnmp环境和laravel及后台、oauth,辛辛苦苦的记下了安装步骤,没想到昨天打开电脑,要找笔记的时候,莫名奇妙的没有了,丢失的还有我保存的虚拟电脑(郁闷一分钟……)! [$ I9 p3 d4 |2 H

- o. c7 V2 G9 s8 e! P怎么就莫名其妙的消失了呢,我怀疑是win10系统自动重启闹的,遂果断关掉自动重启功能(叉会儿腰)
; \1 \: U0 C- U
! V+ L$ K* f5 b7 x算了,不吐槽了,直奔主题) I4 u5 P( Z& }! _" Z6 ?7 t1 A! D
4 ~* a/ A  x0 H6 c9 M
我在虚拟机上布置的lnmp环境,想要让网站可以用https访问,首先要申请证书,只是想搭个环境满足自己的好奇心,没必要申请付费的ssl证书,那就申请免费的吧$ U. u! I* e2 \3 h( d. e* X

$ E! J. \+ y! I  x6 W4 |) {' S/ _生成私钥和证书. {2 I4 m+ [' F$ E) ~
! Y* E8 f2 ^1 L1 {7 k& q
1.生成服务器的私钥(放在nginx的配置目录下)- K5 J" X. X0 r+ d1 \

( x5 V+ J; v6 L+ P  X                openssl genrsa -des3 -out server.key 1024  (采用3DES加密算法生成1024位长度的私钥放在server.key文件中)
* e. C1 m- r7 P9 y/ m
& W2 @% A: _! J: S3 P1 [, o! u2 }2.创建服务器证书的申请文件
% b5 d$ W1 m& w3 B
: O# h3 U8 C5 r0 R. kopenssl req -new -key server.key -out server.csr
. l" R+ ~# O: @+ g( P: y# u1 x& r5 @+ \5 V  ~  N
3.生成服务器的证书- V2 F# C1 V4 O% J
) y( f4 c( S2 O) J, H
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
# s* r6 I* p1 J/ @+ ^
# a) u2 t9 V/ u& i: [/ Y" f证书已经生成好了,接下来就可以部署证书了$ T8 n( \- Z& f

  q' y7 V! J" ?) S1 J; e部署证书- Z$ K" `$ d; ^! e8 F/ H
; X; S: I. R4 N( |1 w( a' }
在nginx的配置文件中增加以下配置9 w2 i1 L" W6 O% W9 \# E$ G5 t

9 }8 s1 c! \" ]/ a4 H4 b3 lserver {+ ~" ^+ N* O7 m8 `9 _" Z* r6 q
    listen       443 default ssl;  b* z3 N% j+ S8 v$ P; h2 ]0 @/ Q
    ssl on;
7 ]+ d5 O7 o1 O' ]    ssl_certificate /etc/nginx/conf.d/server.crt;: I+ H: I* ~' d6 S
    ssl_certificate_key /etc/nginx/conf.d/server.key;
! N* u8 Q9 W3 ~6 w
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 05:33 , Processed in 0.026762 second(s), 23 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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