易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 4409|回复: 3
收起左侧

nginx配置https协议

[复制链接]
发表于 2018-5-5 15:59:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x
ngin配置https协议9 H9 M4 |% f1 i2 y3 U
1.https简介
+ t% k# S" s- p  q, rHTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据6 x  f# a1 {+ S+ ?+ T  P! z
2.https协议原理5 j9 _5 X- l6 U: P# T7 X! Y+ d
首先,客户端与服务器建立连接,各自生成私钥和公钥,是不同的。服务器返给客户端一个公钥,然后客户端拿着这个公钥把要搜索的东西加密,称之为密文,并连并自己的公钥一起返回给服务器,服务器拿着自己的私钥解密密文,然后把响应到的数据用客户端的公钥加密,返回给客户端,客户端拿着自己的私钥解密密文,把数据呈现出来
; m* o  a- D+ d' D0 r7 Y+ u& @& |  B; |* d
TLS或传输层安全( transport layer security),它的前身是SSL(安全套接字层secure sockets layer),是Web协议用来包裹在一个受保护,加密封装正常通道。
4 |$ G# \% p1 F  E; D% M采用这种技术,服务器和客户端之间可以安全地进行交互,而不用担心消息将被拦截和读取。证书系统帮助用户在核实它们与连接站点的身份。
- j1 B: }! _7 k. y5 _
0 |& t2 p8 N/ t
2 k/ |3 z2 x& u1 P" z$ a( O
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 u' X/ Y  j4 F) c$ c" P; o( D) y1 u9 I6 p' t

, P' t! \( N5 m2 V1 o+ X; PGenerating a 2048 bit RSA private key2 _5 |5 T6 F( i4 `  P
...................+++
8 j& k) @2 c  |8 O8 ^- u........+++
/ J" A, d# v( j1 a. f. H  O8 iwriting new private key to '/usr/local/nginx/conf/ssl/nginx.key') {/ E* j, C9 V6 q4 {! \
-----
+ B. W% M9 _- u# H; u) ~' wYou are about to be asked to enter information that will be incorporated$ P5 N: ?3 \% m* B
into your certificate request.4 V7 [5 g& T0 Z( Z
What you are about to enter is what is called a Distinguished Name or a DN.( o9 R/ L- |* W- ]
There are quite a few fields but you can leave some blank  n- c( x5 q& ?1 p" K' B1 m- P
For some fields there will be a default value," \/ h9 r/ y3 n8 {- a
If you enter '.', the field will be left blank.
, |) x( w) A- V4 I- c( f+ C& O" ^-----/ X4 ]* R- A- S& c+ J
) S3 m4 T/ \& H  i
Country Name (2 letter code) [XX]:BJ - d& m. T9 v/ S/ a! W
State or Province Name (full name) []:Beijing
! A. U- D  h) p* u/ a" D( qLocality Name (eg, city) [Default City]:Beijing
$ s6 K, `1 N+ |9 ~( Q" FOrganization Name (eg, company) [Default Company Ltd]:Beijing
3 [- X  |- g$ g: ~& P, V0 lOrganizational Unit Name (eg, section) []:
4 C; A: Z6 {  c# ~" h/ |6 ~1 oCommon Name (eg, your name or your server's hostname) []:  
( R7 M- h! x8 k: ]7 \/ t  XEmail Address []:

: q) ~  y& O* N& F

* C" L- g/ _/ X- ]% B' E4 i4 k) A: \' S% d2 U+ k$ A
步骤2: Configure Nginx to Use SSL
首先配置HTTP请求重定向
首先配置HTTP请求重定向
server {  , B* w; A2 S! [
9 r% O4 [) n- w  p6 X; x+ z: j9 H
           listen       80;      
$ K# ~5 L/ i# m2 B1 e: p* m) o  j& [) [4 q# h# o
               server_name  www.yourdomain.com;   
- C4 K3 l( V+ t2 G8 b' K* A# B1 J
" h2 B# ]! \2 X! c* P& F              rewrite ^ https://$http_host$request_uri? permanent;    # force redirect http to https    #return 301 https://$http_host$request_uri;
3 @7 `4 w0 Q$ Z7 F) y9 N. O
# n" e0 G  ]# Q# }  E' j   }9 ?9 T! X' _: o- M: G. m
6 {; u9 R7 x, r! j% @5 E/ r# \* ]8 ~) q
server {        
4 m: T" c4 q: i( r( v# b                 listen 443 ssl;      
! w2 c: p/ l% v# y1 M                  ssl_certificate /etc/nginx/ssl/nginx.crt;
0 j. _  S0 w( x2 F! A" p3 Y( \3 P! j6 ^; B
        ssl_certificate_key /etc/nginx/ssl/nginx.key;
* r" }8 R* A* g$ q: W0 @. m1 u          keepalive_timeout   70;
- d+ v" Q+ z9 _/ x" R7 g1 }/ s
$ D( z4 E' `$ }' @( K7 d        server_name www.yourdomain.com;    #禁止在header中出现服务器版本,防止黑客利用版本漏洞攻击   ! I2 l4 V: d6 i: k! ~
& Q/ x5 k$ _& Y) Q
server_tokens off;    #如果是全站 HTTPS 并且不考虑 HTTP 的话,可以加入 HSTS 告诉你的浏览器本网站全站加密,并且强制用 HTTPS 访问    #add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";        # ......    + V9 @8 d5 a0 X( D% g, A
( H3 [- y" l$ `# g' g
    fastcgi_param   HTTPS               on;8 x# w! m5 F' r7 m+ M9 p3 e; W: ]

2 X7 U) N: o+ X/ l+ b3 h        fastcgi_param   HTTP_SCHEME         https;
* R# {% w/ n/ h' ^0 a  _% {# n  t  h8 u) Y: q" v
    access_log      /usr/local/nginx/logs/wiki.xby1993.net.access.log;   ( v! R# O0 Z& s& |, h6 D
; c# s. w; z# T& _* E' o" C
     error_log      /usr/local/nginx/logs/wiki.xby1993.net.error.log;   
  q+ C; B5 ?. C; f' O
, t0 ?2 J2 a2 z}
( f9 F* t& n( n
; `! u; b0 R, @! K1 X6 J; t4 a6 I
如果想同时启用HTTP和HTTPS
[backcolor=rgba(0, 0, 0, 0.74902)]
, T( c$ k2 m; ?6 c9 m, D. v
8 H7 C' I+ J2 R7 |8 Y2 C, v
server {   
- |/ Q9 d8 ~1 b7 `9 R              listen              80;
* M9 r$ K) Y% D2 \0 z4 R' W+ l5 o8 V. z3 L2 A
             listen              443 ssl;   
0 R3 H' Z/ g% o0 Y2 N  [9 r
9 [0 b/ j$ q/ l2 [7 K0 G           server_name         www.example.com;  
) @5 U# e; x$ r: j' X
) T6 }! {( {( x) T7 y2 p$ m         ssl_certificate     www.example.com.crt;   3 K- J3 e0 k! c/ N. U9 R
          ssl_certificate_key www.example.com.key;
# ^* K+ Q, v: R8 Y
. ?# Z" D0 G- O# n    ...
1 d7 k0 L( |# g7 {* V2 ?1 I               }4 R1 v8 F6 B! K- t) I! o

$ X. z2 N4 s9 ?/ m/ u9 Z
 楼主| 发表于 2018-5-5 16:07:03 | 显示全部楼层
创建了有效期100年,加密强度为RSA2048的SSL密钥key和X509证书文件。9 B" A: i" b5 o9 E, _3 t
8 Z: L5 D- O" v- K9 n
参数说明:
- V# x* m. b; }2 ?9 S  t
8 I6 U' |& S+ ^; P, I8 F3 _, Mreq: 配置参数-x509指定使用 X.509证书签名请求管理(certificate signing request (CSR))."X.509" 是一个公钥代表that SSL and TLS adheres to for its key and certificate management.
. y4 j1 B" o9 ^0 ^-nodes: 告诉OpenSSL生产证书时忽略密码环节.(因为我们需要Nginx自动读取这个文件,而不是以用户交互的形式)。8 O. W9 z4 }3 g- H3 ?' H
-days 36500: 证书有效期,100年
5 k" H2 N: p0 v/ U- X: c-newkey rsa:2048: 同时产生一个新证书和一个新的SSL key(加密强度为RSA 2048)
, r9 E9 K5 m& j1 E. Q, S-keyout:SSL输出文件名& a4 o$ X1 m: |
-out:证书生成文件名
2 _. |3 C8 r# r. v它会问一些问题。需要注意的是在common name中填入网站域名,如wiki.xby1993.net即可生成该站点的证书,同时也可以使用泛域名如*.xby1993.net来生成所有二级域名可用的网站证书。
, x5 n4 x. j: G整个问题应该如下所示:) [$ W5 W( J, i8 ?  z
- \; C7 G- e, X4 i4 b# v8 e
Country Name (2 letter code) [AU]:US& C6 f) u( W; }/ v( _: y
State or Province Name (full name) [Some-State]:New York+ A  x, l, e9 `8 t3 B% S3 e3 d- o
Locality Name (eg, city) []:New York City
3 M* E1 B" v7 ^Organization Name (eg, company) [Internet Widgits Pty Ltd]:Bouncy Castles, Inc.
, V: A5 X9 s( E6 N$ \2 ]% x/ r% Y3 s( ~Organizational Unit Name (eg, section) []:Ministry of Water Slides
3 c3 ~9 I9 w+ l8 bCommon Name (e.g. server FQDN or YOUR name) []:your_domain.com
- K5 s- M+ M1 @9 I4 H% PEmail Address []:admin@your_domain.com
 楼主| 发表于 2018-5-5 17:05:42 | 显示全部楼层
server{2 o" K# I, e. s5 \! U7 y* [
#比起默认的80 使用了443 默认 是ssl方式  多出default之后的ssl
' s& o8 o% c8 @7 V# ?$ B, b, q        listen 443 default ssl;
8 i  F0 W0 \0 v: ~/ z" |+ h# M' J#default 可省略* d! N# X6 q: Y" U, j  j
#开启  如果把ssl on;这行去掉,ssl写在443端口后面。这样http和https的链接都可以用$ n, ~$ J! A: D6 U% B6 l  ~
        ssl on;
$ C- L+ y5 Z5 \+ {2 R- [#证书(公钥.发送到客户端的)5 [7 g; |3 \) J/ ]: ^4 m  k! ?, W/ h
        ssl_certificate ssl/server.crt;
, e7 Q: z0 q$ Z  G8 C7 S3 o#私钥,$ x- N+ d. v# Q. c
        ssl_certificate_key ssl/server.key;/ K1 |$ M! z7 n0 w$ e/ o
#下面是绑定域名
. D! ~" _$ X4 L* I0 j* X7 e        server_name www.daj.com;6 E* e/ l8 B" |! T& p  p: Y
        location / {
7 |2 {) x3 a& {: ]+ i1 \#禁止跳转
; M! M9 ~) e! C: E( X# N% o        proxy_redirect off;4 V% G, E0 w2 v/ V6 ~
#代理淘宝, v3 B3 T7 i) Z1 c2 m! W# D
proxy_pass https://www.tao.com/;  ; [7 a3 v/ o% l
        }        4 J3 ]4 C9 p9 A8 p* R5 o
}
 楼主| 发表于 2019-8-21 21:18:58 | 显示全部楼层
虚拟机实现https网络设置1 b. R/ A& T; f# S) w
现在很多网站使用的都是https协议,想在自己的电脑上实现下,
6 _) O4 a7 S& H$ \; W8 I4 g1 @
7 f& H% x) {0 n6 R由于自己的电脑是win10,我总是觉得在windows上布置环境不如在linux上稳定,所以在电脑上安装了虚拟机,cento系统 。1 N# v- M: q  X* F* |2 t
# L( O2 n( z/ M  _& E) B& S; V/ |
上周末在虚拟机上安装了lnmp环境和laravel及后台、oauth,辛辛苦苦的记下了安装步骤,没想到昨天打开电脑,要找笔记的时候,莫名奇妙的没有了,丢失的还有我保存的虚拟电脑(郁闷一分钟……)
) y4 |; I6 w6 C) g7 k7 g
: J8 [' P. e+ ?4 \+ }4 X3 A; J5 _怎么就莫名其妙的消失了呢,我怀疑是win10系统自动重启闹的,遂果断关掉自动重启功能(叉会儿腰)
! S0 L* J! l5 y/ a+ s1 G) l, ?6 C- o! K1 O0 K3 \2 g9 I
算了,不吐槽了,直奔主题- _" W$ T0 t& \. n4 x$ c
: s8 v+ z2 R5 W1 A( p8 s1 f
我在虚拟机上布置的lnmp环境,想要让网站可以用https访问,首先要申请证书,只是想搭个环境满足自己的好奇心,没必要申请付费的ssl证书,那就申请免费的吧( A$ g# L. }) [0 B4 ^/ e

1 }% j" g& c! Z% T# X% R# J生成私钥和证书) W1 Z0 _& T/ k8 L' ]: `' H

# U8 X# g$ f3 k8 w: o$ Z* j: K1.生成服务器的私钥(放在nginx的配置目录下)
- [( a% i0 }% Z; v; }
5 M! ]2 C$ o5 z                openssl genrsa -des3 -out server.key 1024  (采用3DES加密算法生成1024位长度的私钥放在server.key文件中)
$ X* Z" p$ d  |" H
* n( U0 I3 Z. h4 R8 f3 ]2.创建服务器证书的申请文件
: s, L- W) W* u+ a5 Z0 u
9 ?- R) |3 d% uopenssl req -new -key server.key -out server.csr5 y" H. Z; S( l/ d: K

2 e6 O& b) b2 O6 S# H" N3.生成服务器的证书
6 s8 ?+ P4 ^: v. X# ^7 ]+ Z; g  L
5 R) o1 w; n7 _/ f4 Z8 i0 ^7 popenssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
2 z$ G0 V1 S, e- \3 ~/ H$ h( n. Q. x* C$ l' Y2 L% y
证书已经生成好了,接下来就可以部署证书了0 H% U  p- H3 @& }2 r

. A& \8 A, E3 l/ R' b部署证书
: c4 |/ U3 s- {7 j! [8 _) Q; E; H- ]+ U% c6 a5 C+ F& d
在nginx的配置文件中增加以下配置
/ |: I3 C) A* d" M+ L& V. v7 o( K5 N; m7 b* k; ~0 T5 }" N
server {
2 y9 r5 x+ N5 z6 B    listen       443 default ssl;& S5 g: t2 G9 h* `- W
    ssl on;  \* `2 _6 `  P
    ssl_certificate /etc/nginx/conf.d/server.crt;
! e' l4 E; d0 ]1 P/ Q, q" L9 |9 q    ssl_certificate_key /etc/nginx/conf.d/server.key;2 g$ V9 z% y  m+ A9 J
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-8 21:37 , Processed in 0.053108 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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