Nginx https

落花踏尽游何处,笑入胡姬酒肆中。这篇文章主要讲述Nginx https相关的知识,希望能为你提供帮助。
简介
Https的安全通信机制
非称加密方式的缺点
【Nginx https】1.:公开密钥加密固然比共享密钥加密的方式提升了一个档次,但是它也存在两个问题:
第一个是:如何保证接收端向发送端发出公开秘钥的时候,发送端确保收到的是预先要发送的,而不会被挟持。只要是发送密钥,就有可能有被挟持的风险。
第二个是:非对称加密的方式效率比较低,它处理起来更为复杂,通信过程中使用就有一定的效率问题而影响通信速度
2.:Https采用混合机制的加密方式
https则综合了公开密钥加密和共享密钥加密的两种方式,充分利用两者的优势,在最初的连接的时候使用非对称密钥的加密方式保证连接的安全性,之后稳定的通讯采用对称加密的方式,稳定的通讯是指确保交换的密钥是安全的。
3.:https的证书机制
在1中我们讲了非对称加密的缺点,其中第一个就是公钥很可能存在被挟持的情况,无法保证客户端收到的公开密钥就是服务器发行的公开密钥。此时就引出了公开密钥证书机制。数字证书认证机构是客户端与服务器都可信赖的第三方机构。证书的具体传播过程如下:
1:服务器的开发者携带公开密钥,向数字证书认证机构提出公开密钥的申请,数字证书认证机构在认清申请者的身份,审核通过以后,会对开发者申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将密钥放在证书里面,绑定在一起
2:服务器将这份数字证书发送给客户端,因为客户端也认可证书机构,客户端可以通过数字证书中的数字签名来验证公钥的真伪,来确保服务器传过来的公开密钥是真实的。一般情况下,证书的数字签名是很难被伪造的,这取决于认证机构的公信力。一旦确认信息无误之后,客户端就会通过公钥对报文进行加密发送,服务器接收到以后用自己的私钥进行解密。

http的创建与配置
1 设置nginux.conf 添加include 定义bakend

http { includemime.types; include/usr/local/nginx/vhost/*.conf; default_typeapplication/octet-stream; ..... #gzipon; upstream bakend { server 192.168.1.11:8080 weight=1; }

创建vhost目录配置文件
# mkdir /usr/local/nginx/vhost
# cd /usr/local/nginx/vhost
# vim default.conf
server { listen 80; server_name _; # rewrite,访问80端口强制跳转到https rewrite ^ https://$host$request_uri? permanent; }server { listen443 ssl; server_namelocalhost; # 浏览器直接重定向到https,避免中途的302重定向URL被篡改。进一步提高通信的安全性。 HSTSmax-age=31536000是指接下来一年 add_header Strict-Transport-Security "max-age=31536000; includeSubDomains"; # 证书存放位置 ssl_certificate/usr/local/nginx/certificate/server.crt; # 免密key存放位置 ssl_certificate_key /usr/local/nginx/certificate/server.key; # 依赖SSLv3和TLSv1协议的服务器密码将优先于客户端密码 ssl_prefer_server_ciphers On; # 指定密码为openssl支持的格式 ssl_protocolsTLSv1 TLSv1.1 TLSv1.2; # 密码加密方式 ssl_ciphersHIGH:!aNULL:!MD5; location / { #主配置文件中有upstream模块,代理server proxy_pass http://bakend; #roothtml; #index index.html index.htm; gzip on; gzip_min_length 40000; gzip_types application/javascript application/json text/css text/plain; client_max_body_size 5000M; proxy_connect_timeout 60; proxy_send_timeout 1000; proxy_read_timeout 200; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header SERVER_ADDR $server_addr; proxy_set_header SERVER_PORT $server_port; proxy_set_header REMOTE_ADDR $remote_addr; proxy_set_header REMOTE_PORT $remote_port; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; error_page 500 501 502 503 504 404 400 /error.html; location = /error.html { root /usr/local/nginx/html/; } } }


创建私钥存放目录
# mkdir /usr/local/nginx/certificate
# cd /usr/local/nginx/certificate
生成私钥文件

1)生成服务器私钥: openssl genrsa -des3 -out server.key 1024 #des3是算法, -out [filename] 1024是长度,默认会让你输入密码,不小于4个字符 2)创建签名请求的证书(CSR): openssl req -new -key server.key -out server.csr -new 创建一个新的证书请求文件 -key filename 指定私钥的输入文件,创建证书请求时需要 -out filename.csr 输出指定的文件名 3)在加载SSL支持的Nginx并使用上述私钥时除去必须的口令: cp server.key server.key.org openssl rsa -in server.key.org -out server.key 4)最后标记证书使用上述私钥和CSR openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt 5)最后会有4个文件,有用的是server.crt和server.key,放到配置文件中指定的位置即可 server.crtserver.csrserver.keyserver.key.org 6)view
Nginx https

文章图片

    推荐阅读