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

nginx配置https协议

[复制链接]

2

主题

0

回帖

15

积分

管理员

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

2

主题

0

回帖

15

积分

管理员

积分
15
QQ
 楼主| 发表于 2018-5-5 16:07:03 | 显示全部楼层
创建了有效期100年,加密强度为RSA2048的SSL密钥key和X509证书文件。
. U" Q. P3 A5 H; i; e$ R  p& z/ V. }( J: J2 a
参数说明:
+ q* o8 @6 K' }. I" j
' K. k; f9 A3 p0 f; d+ u. preq: 配置参数-x509指定使用 X.509证书签名请求管理(certificate signing request (CSR))."X.509" 是一个公钥代表that SSL and TLS adheres to for its key and certificate management.
  @$ k( }: Y0 I4 g0 F-nodes: 告诉OpenSSL生产证书时忽略密码环节.(因为我们需要Nginx自动读取这个文件,而不是以用户交互的形式)。6 x% A+ s! Y2 e* G$ {+ T) B
-days 36500: 证书有效期,100年
+ _& B5 y& z0 V-newkey rsa:2048: 同时产生一个新证书和一个新的SSL key(加密强度为RSA 2048)1 s' G" n4 l" g8 Y( s
-keyout:SSL输出文件名. r: x; A8 E3 \0 l+ j: h
-out:证书生成文件名
# O5 z2 }& D; p# E, ^它会问一些问题。需要注意的是在common name中填入网站域名,如wiki.xby1993.net即可生成该站点的证书,同时也可以使用泛域名如*.xby1993.net来生成所有二级域名可用的网站证书。
$ r! X5 z( A; k) O  r3 D整个问题应该如下所示:. Y( z: I) z( \* ~* E, }. x* R

, m# n$ g5 o6 {. B- u( f& g- iCountry Name (2 letter code) [AU]:US; Y1 |( w) e0 S7 Q$ Z; |6 j2 P
State or Province Name (full name) [Some-State]:New York
; T" q5 M; h- T4 h  ZLocality Name (eg, city) []:New York City2 B9 ]7 @, {! M9 G1 Y% r5 v
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Bouncy Castles, Inc.
9 _3 C1 s- x6 Q( q; U8 UOrganizational Unit Name (eg, section) []:Ministry of Water Slides# j5 x& f9 w2 @) ~
Common Name (e.g. server FQDN or YOUR name) []:your_domain.com
! ^% {6 q. Z+ jEmail Address []:admin@your_domain.com

2

主题

0

回帖

15

积分

管理员

积分
15
QQ
 楼主| 发表于 2018-5-5 17:05:42 | 显示全部楼层
server{- ^; u4 w' _4 }( H( F8 d
#比起默认的80 使用了443 默认 是ssl方式  多出default之后的ssl! D" |7 w/ R" s6 A& R, Q5 p3 J# n
        listen 443 default ssl;6 d' H3 T' k/ c5 Z4 m$ n: R
#default 可省略
% W( y. D0 ?: @5 [# n' I0 e#开启  如果把ssl on;这行去掉,ssl写在443端口后面。这样http和https的链接都可以用# v9 S8 w4 B6 ~! H, e0 u/ E4 n
        ssl on;$ q; e/ `! _# v; G& ^
#证书(公钥.发送到客户端的)
! j7 M. W. E) R2 K% D        ssl_certificate ssl/server.crt;( k1 I+ v, _4 ~+ w
#私钥,2 G% V" @9 E$ s: ]7 t
        ssl_certificate_key ssl/server.key;
8 @/ |+ d3 u$ Y; K7 |- m# R& ]/ _1 j2 A#下面是绑定域名
3 U2 g: ?" u. O. I& C        server_name www.daj.com;
! p! W& z$ Y  A4 \5 |& u        location / {
/ v8 W3 d( R5 H1 }8 j' r. A#禁止跳转
8 E- t8 h9 [0 U4 N) e        proxy_redirect off;  N+ x% M6 k+ ~2 C% ~$ g/ K7 r, C
#代理淘宝9 s9 \8 e: y: W% q
proxy_pass https://www.tao.com/;  % M8 d% B' w- Z; }1 }1 i9 N. A
        }        
5 @$ p- w. R% T2 j- [3 ~- v}

2

主题

0

回帖

15

积分

管理员

积分
15
QQ
 楼主| 发表于 2019-8-21 21:18:58 | 显示全部楼层
虚拟机实现https网络设置: D, c! O0 n. E4 R) _# _# _
现在很多网站使用的都是https协议,想在自己的电脑上实现下,
9 y* a- r$ J) X0 V5 o4 ]& r8 ?; V& |; ?& f6 t& w$ }/ X
由于自己的电脑是win10,我总是觉得在windows上布置环境不如在linux上稳定,所以在电脑上安装了虚拟机,cento系统 。3 Q' {3 n9 M) H# l9 X' m$ |
7 Y- Q' U5 D9 O
上周末在虚拟机上安装了lnmp环境和laravel及后台、oauth,辛辛苦苦的记下了安装步骤,没想到昨天打开电脑,要找笔记的时候,莫名奇妙的没有了,丢失的还有我保存的虚拟电脑(郁闷一分钟……); j4 ^5 r' q5 v; l, _6 ?2 I
7 h/ W0 _+ x1 b, T( _% l6 c
怎么就莫名其妙的消失了呢,我怀疑是win10系统自动重启闹的,遂果断关掉自动重启功能(叉会儿腰)
3 H2 j. \+ ~( x3 p. I+ I. \
6 J, s- D: A# Y% J" r4 I& t4 k! X算了,不吐槽了,直奔主题( \! Y, z% [8 H5 u8 |
- a0 n9 R! y# A  D) K8 H  M- R
我在虚拟机上布置的lnmp环境,想要让网站可以用https访问,首先要申请证书,只是想搭个环境满足自己的好奇心,没必要申请付费的ssl证书,那就申请免费的吧* h- a1 D3 f$ m$ F* a* ~" F4 O+ Q+ d: w
$ B) e% V( V- f( W1 v$ Y
生成私钥和证书
1 h2 ~* x. P2 d5 V; U1 J9 u- R: j& @) H1 Z" [# P9 L/ C" C/ A
1.生成服务器的私钥(放在nginx的配置目录下)
2 g5 ~1 U7 I0 U+ ]/ d) m. O  c0 \8 s5 ?/ o. h: p
                openssl genrsa -des3 -out server.key 1024  (采用3DES加密算法生成1024位长度的私钥放在server.key文件中)/ \) {" r/ b1 y. w
/ j% W( d  |. e. s
2.创建服务器证书的申请文件  S5 a  {" J6 e; `0 C8 ]! t9 A
7 P1 B7 [8 |7 a9 s% t3 F
openssl req -new -key server.key -out server.csr# k  U  u2 ?: C6 S1 X3 F

+ s+ S' Z4 ]3 ?! J- Q3.生成服务器的证书8 K$ v. R2 l; ?

) d7 i6 |) E. q1 r$ f) M3 I+ G. v( Jopenssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt& p3 ~. L. U8 D3 ]/ h! Q$ A

+ G% t6 t5 n) O) s+ X证书已经生成好了,接下来就可以部署证书了
; ^" _0 C/ P! _& g5 r: e3 U( M: \. Q  K- Z! ?
部署证书
5 ]6 T1 ?, z8 _+ f' |) c2 S1 r, t# ?
" a: a+ S. C' g  F* _. T. p  y' L在nginx的配置文件中增加以下配置; f4 |: Z! x' o( \: X$ A

1 N* m, W+ E2 _. }' qserver {% N7 J1 ?. E2 J  l5 H8 N: O+ V1 u
    listen       443 default ssl;
% ^9 b2 \# n8 a9 K0 K7 ~    ssl on;( x6 O% H; B7 b% K
    ssl_certificate /etc/nginx/conf.d/server.crt;2 ]7 o, v7 A0 _0 m
    ssl_certificate_key /etc/nginx/conf.d/server.key;$ D0 {: u! X# ?7 |' x$ [' t$ B
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 06:26 , Processed in 0.021687 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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