易陆发现互联网技术论坛

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

nginx配置https协议

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

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

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

x
ngin配置https协议3 i; z* b. s1 J% J; X) E1 [% _3 ^
1.https简介
( L# t1 ]4 [! G, J6 H4 [HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据& h' `  M! U& S- B6 H
2.https协议原理
" x% t) J' |# ]+ l" v首先,客户端与服务器建立连接,各自生成私钥和公钥,是不同的。服务器返给客户端一个公钥,然后客户端拿着这个公钥把要搜索的东西加密,称之为密文,并连并自己的公钥一起返回给服务器,服务器拿着自己的私钥解密密文,然后把响应到的数据用客户端的公钥加密,返回给客户端,客户端拿着自己的私钥解密密文,把数据呈现出来- J6 P' E% n9 G% a! `. R

# e' A9 z" u: MTLS或传输层安全( transport layer security),它的前身是SSL(安全套接字层secure sockets layer),是Web协议用来包裹在一个受保护,加密封装正常通道。
+ ?9 g! A1 z! `; D6 P8 S采用这种技术,服务器和客户端之间可以安全地进行交互,而不用担心消息将被拦截和读取。证书系统帮助用户在核实它们与连接站点的身份。
8 x( d& P3 y  @2 t' w4 @. L

7 C( A3 X$ B: T* f8 t+ n- }3 {) N
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 \" h0 E- X. l0 o
& X" h, [6 ?, Z
5 D& _* ]/ p& Z+ {0 ]" \
Generating a 2048 bit RSA private key- Z' x) r6 y% n! y2 S. Q9 S* `; e; C
...................+++
- ]4 Y2 B* K7 k# ^' E2 {$ e9 P- |........+++
5 O; z. n( r% K6 iwriting new private key to '/usr/local/nginx/conf/ssl/nginx.key'( }& S- u: |  L
-----3 H! K, ?8 {5 _& l  w1 ]
You are about to be asked to enter information that will be incorporated
- T3 p+ ~- q7 X- Jinto your certificate request.% c& V) l# _5 `
What you are about to enter is what is called a Distinguished Name or a DN.
3 x1 k9 r# q" f; `There are quite a few fields but you can leave some blank" A+ p! W  K: ?: i# f# T9 c
For some fields there will be a default value,
/ \: {% n0 Z/ i2 X/ g& k  T0 H: kIf you enter '.', the field will be left blank.5 p# I/ \( M! E. }
-----
  r# J8 v7 _! K- t/ t6 n. @! B$ A. `( @0 H) h3 S2 {8 I
Country Name (2 letter code) [XX]:BJ
* L2 j5 y- X; _1 f- tState or Province Name (full name) []:Beijing7 M/ S( [- x# G5 o) c$ [* \+ K, X
Locality Name (eg, city) [Default City]:Beijing
2 Z  ^& |$ C: ?8 ^Organization Name (eg, company) [Default Company Ltd]:Beijing
+ T# T; m0 {) dOrganizational Unit Name (eg, section) []: : v1 L0 Q$ i0 y4 O6 v, Y$ B
Common Name (eg, your name or your server's hostname) []:  / u- M8 r: u2 `) m! w
Email Address []:
" N) s+ k! m* C5 e. Z3 J, L
3 f" V- s' R  k3 Q2 o
. V* T" h& ~0 ~$ p7 {
步骤2: Configure Nginx to Use SSL
首先配置HTTP请求重定向
首先配置HTTP请求重定向
server {  
: R% x5 D' q2 T: W; B! s' a
2 N0 |" o4 ^, C2 B           listen       80;      
; K, S8 X' _0 H) \) _: i5 n; G+ F- {2 _: `$ P$ f( {
               server_name  www.yourdomain.com;   ) f1 l- c$ m7 n' H3 P0 g9 K

7 e! U# o$ G4 a- ^7 l+ _7 X              rewrite ^ https://$http_host$request_uri? permanent;    # force redirect http to https    #return 301 https://$http_host$request_uri;
8 S9 |) Y5 `) n) C# Q4 P" z2 x! o" _
/ a7 k- _! g! k6 r) M$ C# O% i4 Y   }& Y- L) J$ A# Z  V$ D; U) d2 @

" T3 z" X8 s9 M9 g$ s: Hserver {        6 q4 a+ ~( e' a. D  e
                 listen 443 ssl;      
/ i6 a  {# Z" ]5 x/ A9 `6 ]                  ssl_certificate /etc/nginx/ssl/nginx.crt;
6 q! B' a$ L! `/ s# y  n
! j; z" d0 T0 r  U( z        ssl_certificate_key /etc/nginx/ssl/nginx.key;
- e/ z' N! W! b9 q7 J          keepalive_timeout   70;6 J- ]  k. u2 ^8 ?# H% y8 G- Y% [
+ i' g7 {# \1 R( R' o
        server_name www.yourdomain.com;    #禁止在header中出现服务器版本,防止黑客利用版本漏洞攻击   
/ T- O; E, j1 j* h
" |' Y/ S6 Y- r4 T server_tokens off;    #如果是全站 HTTPS 并且不考虑 HTTP 的话,可以加入 HSTS 告诉你的浏览器本网站全站加密,并且强制用 HTTPS 访问    #add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";        # ......   
0 [3 t4 ~- b+ E4 U
) ^3 C! T) ]; \- T6 @1 L5 r( M3 N    fastcgi_param   HTTPS               on;
3 X- m& {. x+ _- z- M  d  \, Y' V6 n: F
        fastcgi_param   HTTP_SCHEME         https;
' i& d4 P( Y, c
6 X. Y" \# r6 `* V    access_log      /usr/local/nginx/logs/wiki.xby1993.net.access.log;   & h+ z, L! X$ b9 }; s" I0 _

- U7 {! e5 j) Q' U* B+ h; j     error_log      /usr/local/nginx/logs/wiki.xby1993.net.error.log;   
# e8 K* i( B% p8 @7 p( o
3 @0 V9 }6 V3 g/ A+ P: k4 m}& Y* m- D/ \5 A5 x- P

& c/ w5 j: {) }" z1 L7 U8 L
如果想同时启用HTTP和HTTPS
[backcolor=rgba(0, 0, 0, 0.74902)]
8 _. n' d/ Z2 |+ y

8 a' ?2 Z& D# E" `6 lserver {   # w3 G, e2 A6 l8 g
              listen              80;
+ ~2 O" P6 g& v6 h" u  X& |# _
             listen              443 ssl;   
# T) D. I) F' T( N- Y$ G3 s
  {6 n0 r8 n/ b. q6 x, e           server_name         www.example.com;  
9 B9 w/ g' i# u
5 k. F. y" r( q' u( S8 y9 w  ~         ssl_certificate     www.example.com.crt;   4 I9 M0 K: W  k
          ssl_certificate_key www.example.com.key;
+ U8 N4 ?' s5 y/ J& u! Q% k0 X
  W2 E4 W4 b' A$ ]8 w' |' A    ...
+ N4 w, @& U! ~$ U3 B7 i8 P1 M               }
" D8 Y5 p% r+ [7 Q1 o1 C: a- `9 U% z6 x% f6 z4 Z" \% G
 楼主| 发表于 2018-5-5 16:07:03 | 显示全部楼层
创建了有效期100年,加密强度为RSA2048的SSL密钥key和X509证书文件。
0 C/ I) w. E9 x" g' i  A* c6 {+ V
9 @0 |, Q) P- p5 E参数说明:  K8 B) |9 V5 M5 f( ?% _

: u+ b# C" C: ?  q7 s4 d5 k. z, I$ c# sreq: 配置参数-x509指定使用 X.509证书签名请求管理(certificate signing request (CSR))."X.509" 是一个公钥代表that SSL and TLS adheres to for its key and certificate management.6 e9 ]9 Q8 c( d. c
-nodes: 告诉OpenSSL生产证书时忽略密码环节.(因为我们需要Nginx自动读取这个文件,而不是以用户交互的形式)。
) B4 x# i) D# B1 S6 B! p+ {-days 36500: 证书有效期,100年# z, f% r7 ~) v* P, I4 b
-newkey rsa:2048: 同时产生一个新证书和一个新的SSL key(加密强度为RSA 2048)
6 a+ y4 ?; e4 G. B-keyout:SSL输出文件名% j0 V: ?/ w+ V9 V( R
-out:证书生成文件名
: P2 T8 O4 |1 Z" c% U它会问一些问题。需要注意的是在common name中填入网站域名,如wiki.xby1993.net即可生成该站点的证书,同时也可以使用泛域名如*.xby1993.net来生成所有二级域名可用的网站证书。
, }& u; T+ V7 i% ^+ s整个问题应该如下所示:* Y/ I+ {: s& o3 G! S

' `! D: b$ T( D, _' J- L$ O% XCountry Name (2 letter code) [AU]:US9 {2 K# ?) y( [* l
State or Province Name (full name) [Some-State]:New York+ E. x! @8 ~( ?# j0 [% i
Locality Name (eg, city) []:New York City
% i1 I5 Z* G; A7 pOrganization Name (eg, company) [Internet Widgits Pty Ltd]:Bouncy Castles, Inc.$ r' B& W& }" V' o  z+ k
Organizational Unit Name (eg, section) []:Ministry of Water Slides
5 F. X6 U. h" G" w! V2 p, {3 @Common Name (e.g. server FQDN or YOUR name) []:your_domain.com& \! G2 s- o$ _/ z4 f* f& Z* Y% P
Email Address []:admin@your_domain.com
 楼主| 发表于 2018-5-5 17:05:42 | 显示全部楼层
server{9 ~& K. e6 S, |( ?+ L
#比起默认的80 使用了443 默认 是ssl方式  多出default之后的ssl! e% A* O" s- c& u8 K4 _2 ^; x
        listen 443 default ssl;4 v# H) X8 f9 v( L0 \5 ~7 ^# j
#default 可省略2 N8 ~3 L2 ]" p7 Y
#开启  如果把ssl on;这行去掉,ssl写在443端口后面。这样http和https的链接都可以用" H% O$ T8 n4 L- X" ?+ s3 S! [
        ssl on;
7 @- e" |, m8 _: ?/ l7 f  f#证书(公钥.发送到客户端的)
, l3 [8 G+ K! v9 {$ V        ssl_certificate ssl/server.crt;& k8 q- }& T, n  Q8 Z
#私钥,
2 Z# \) n% ~2 e        ssl_certificate_key ssl/server.key;
: m7 i* V. ~3 F4 |- H6 R& A* i# C#下面是绑定域名/ k, N' w: q3 F
        server_name www.daj.com;! y/ Q/ F5 `# K& k, `6 y
        location / {
4 a* |0 m! l1 B' l: f$ r( S#禁止跳转) j0 I; Y0 C: T4 Z
        proxy_redirect off;
7 X  ~5 @7 a" f$ s/ i* [#代理淘宝! a+ u3 y+ @; m7 b+ l
proxy_pass https://www.tao.com/;  / |- w7 I: E2 U" ]: r. _3 E$ s* o
        }        
9 h) _4 w7 f6 U- }) F}
 楼主| 发表于 2019-8-21 21:18:58 | 显示全部楼层
虚拟机实现https网络设置
  C: s3 @0 ^. ^, C( \  X7 I8 }现在很多网站使用的都是https协议,想在自己的电脑上实现下,  Y, x: r- h/ I1 P3 i8 o
% Z* o9 H! x+ M0 b/ Q! K: J0 i" A
由于自己的电脑是win10,我总是觉得在windows上布置环境不如在linux上稳定,所以在电脑上安装了虚拟机,cento系统 。8 k2 @& J" l( ], p; n" O

; H: x) g* A+ A8 m" c上周末在虚拟机上安装了lnmp环境和laravel及后台、oauth,辛辛苦苦的记下了安装步骤,没想到昨天打开电脑,要找笔记的时候,莫名奇妙的没有了,丢失的还有我保存的虚拟电脑(郁闷一分钟……)
8 ^  `, W3 }8 I/ D9 T# ?, y: F) x. `8 [1 J- _! c. X
怎么就莫名其妙的消失了呢,我怀疑是win10系统自动重启闹的,遂果断关掉自动重启功能(叉会儿腰)
% F" V* ^# C% L
/ T/ H4 z' R! e* P) T8 f算了,不吐槽了,直奔主题- A. s5 J  j# f, ^% {% W

6 a$ a! r+ J/ s- \我在虚拟机上布置的lnmp环境,想要让网站可以用https访问,首先要申请证书,只是想搭个环境满足自己的好奇心,没必要申请付费的ssl证书,那就申请免费的吧
- M. R: ~' k2 i- t3 Y- x, m8 l7 p7 M5 M3 x- h9 B) G7 d# x5 x
生成私钥和证书2 Y  x8 ~4 [/ u( c9 X8 _
# Y- L. H! u8 u0 E6 `$ }( Q8 [# o& y
1.生成服务器的私钥(放在nginx的配置目录下)
. s3 v8 E' f2 {+ E( L: K  |
$ I/ M3 n) Y, S' v) g- w                openssl genrsa -des3 -out server.key 1024  (采用3DES加密算法生成1024位长度的私钥放在server.key文件中)/ ^$ ]! d( _! k/ E

8 _0 ], C- b" _6 P+ P& q3 _- ^( R2.创建服务器证书的申请文件4 ~+ p1 a% X6 r- U( j0 p
* \3 L! Y2 o2 D6 y
openssl req -new -key server.key -out server.csr
  ~& x  k9 H6 n4 H
. f2 ^; v3 _+ t* m* T8 x3.生成服务器的证书! w! f5 c1 }2 A! u

- Z5 |, r7 _2 R, l( a& Eopenssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
' ~/ p0 s* d4 y, d
6 O9 ^* O6 `6 P, M0 P证书已经生成好了,接下来就可以部署证书了
) N( q, X* r" E6 l' i# J( Y
+ e9 p1 w9 K  x$ D# S部署证书9 f7 ?/ w4 D; \& X6 C
9 Y' m1 b% w: C4 ?, M5 G  V4 b
在nginx的配置文件中增加以下配置1 r# J6 P' N$ O1 [( ^: \

! [! a2 I; P7 w$ Z* @* `4 Aserver {
6 o2 K3 G1 R7 k7 G+ q' w4 w    listen       443 default ssl;
/ Z3 i5 `' u6 j* D4 i    ssl on;
9 \: N& f6 _5 ^3 O5 Y5 Q. O    ssl_certificate /etc/nginx/conf.d/server.crt;! v/ Q; e. i2 s% n
    ssl_certificate_key /etc/nginx/conf.d/server.key;
7 c3 g$ ]  x& Q, Y. R) l
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

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

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

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

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

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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