nginx配置ssl证书
2018-08-16 22:46
351 查看
nginx负载均衡
由于一个Web服务同时能处理的用户并发请求的数量有限,同时还有机器故障的情况,所以一个Web站点通常会在N台机器上各部署一套同样的程序。当某一个服务挂掉的时候,还有第二个、第三个。继续为用户提供服务,给用户的感觉,你的服务还在正常的运行,同时避免一台服务器处理请求负载高,而其他的服务器又处于空闲状态,造成资源浪费nginx在upsteam中来指定多个负载均衡的真实ip地址,server中的proxy_pass来引用upstream定义的ip模块,ip_hash让用户请求始终在一个服务器上处理,这样就不会把同一个用户的请求分发到不同服务器上
比如不同服务器在一段时间内处理请求造成登录状态异常
nginx支持后端服务器的端口代理,如能代理后端服务器的80端口,nginx不支持负载均衡后端是443端口的web服务
如果需要代理443这种端口的话,只能在负载均衡这台服务器上配置443,再由负载均衡去把80转发成443端口
如果让用户通过负载均衡服务器访问的是https的网站时,则在负载均衡服务器上指定后端是80端口的web服务器
[root@localhost vhost]# vim load.conf upstream qq { ip_hash; server 111.161.64.40:80; server 111.161.64.48:80; } server { listen 80; server_name .*.qq.com; location / { proxy_pass http://qq; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
在linux终端中进行访问测试,在DNS设置解析时,只要把负载均衡服务器添加到DNS解析中,处理请求先通过负载代理处理,之后负载均衡处理方式是把请求转发给upstream中的服务器处理
[root@localhost vhost]# curl -x127.0.0.1:80 www.qq.com |head -n 10 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0<!DOCTYPE html> <html lang="zh-CN"> <head> <meta content="text/html; charset=gb2312" http-equiv="Content-Type"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
ssl原理
https是网页传输时加密的一种通信协议,实现这种通信协议的是ssl加密协议,https避免网站数据传输时数据被抓取解析,通过公钥加密私钥解密方式来解码传输的数据浏览器发送一个https的请求给服务器 ;
服务器要有一套数字证书,可以自己制作(后面的操作就是自己制作的证书),也可以向组织申请,区别就是自颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出>提示页面 ,这套证书其实就是一 对公钥和私钥;
服务器会把公钥传输给客户端;
客户端(浏览器)收到公钥后,会验证其是否合法有效,无效会有警告提醒,有效则会生成一串随机数,并用收到的公钥加密;.客户端把加密后的随机字符串传输给服务器;
服务器收到加密随机字符串后,先用私钥解密(公钥加密,私钥解密),获取到这一串随机数后,再用这串随机字符串加密传输的数据(该加密为对称加密,所谓对称加密就是将数据和私钥也就是这个随机字符串>通过某种算法混合在一起,这样除非知道私钥,否则无法获取数据内容)
服务器把加密后的数据传输给客户端;客户端收到数据后,再用自己的私钥也就是那个随机字符串解密;
生成ssl密钥对
生成密钥对要使用到openssl工具,没有这个工具需要安装,这里使用rpm -qf通过这个命令查询这个命令的包是否安装了,这里本机服务器已经安装了openssl命令的安装包,生下的不再多做演示,可以通过yum命令安装这个安装包[root@localhost conf]# rpm -qf
which openssl
生成ssl证书的命令,下面会详细介绍各个参数的意义
openssl genrsa -des3 -out tmp.key 2048 openssl rsa -in tmp.key -out aaa.com.key openssl req -new -key aaa.com.key -out aaa.com.csr openssl x509 -req -days 365 -in aaa.com.csr -signkey aaa.com.key -out aaa.com.crt
生成初始的key私钥,这里私钥携带密码,我们需要将密码删除掉
[root@localhost conf]# openssl genrsa -des3 -out tmp.key 2048 Generating RSA private key, 2048 bit long modulus .................................+++ ................................................................+++ e is 65537 (0x10001) Enter pass phrase for tmp.key: Verifying - Enter pass phrase for tmp.key:
创建初始密码时需要输入一个密码,但是这个密码会在用户访问网站时需要认证,通常我们不希望这样,需要我们把私钥中的密码删除掉
[root@localhost conf]# openssl rsa -in tmp.key -out aaa.com.key Enter pass phrase for tmp.key: writing RSA key
使用私钥文件生成证书请求文件
[root@localhost conf]# openssl req -new -key aaa.com.key -out aaa.com.csr You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:国家 State or Province Name (full name) []:地区 Locality Name (eg, city) [Default City]:城区 Organization Name (eg, company) [Default Company Ltd]:公司 Organizational Unit Name (eg, section) []:部门 Common Name (eg, your name or your server's hostname) []:主机名或个人名 Email Address []:邮箱 Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:设定证书密码 An optional company name []:公司其他名称
使用证书请求文件和私钥来生成一个公钥文件
[root@localhost conf]# openssl x509 -req -days 365 -in aaa.com.csr -signkey aaa.com.key -out aaa.com.crt Signature ok subject=/C=JP/ST=\xC3\xA5\xC2\xA4\xC2\xA7\xC3\xA9\xC2\x98\xC2\xAA/L=\xC3\xA5\xC2\x9F\xC2\x8E\xC3\xA4\xC2\xB8\xC2\x9C\xC3\xA5\xC2\x8C\xC2\xBA/O=\xC3\xA4\xC2\xB8\xC2\xAD\xC3\xA4\xC2\xBA\xC2\x8C\xC3\xA7\xC2\xA7\xC2\x91\xC3\xA6\xC2\x8A\xC2\x80\xC3\xA6\xC2\xA0\xC2\xAA\xC3\xA5\xC2\xBC\xC2\x8F\xC3\xA4\xC2\xBC\xC2\x9A\xC3\xA7\xC2\xA4\xC2\xBE/OU=\xC3\xA8\xC2\xBF\xC2\x90\xC3\xA7\xC2\xBB\xC2\xB4\xC3\xA6\xC2\x8A\xC2\x80\xC3\xA6\xC2\x9C\xC2\xAF\xC3\xA9\xC2\x83\xC2\xA8\xC3\xA9\xC2\x97\xC2\xA8/CN=localhost/emailAddress=1234@zhonger.jp Getting Private key
nginx配置ssl
在server模块下配置ssl证书,配置位置在listen后面,也就是指定域名和网站根目录的相同配置下如果nginx在编译时未安装ssl_module,那么就需要重新编译添加上ssl模块,配置ssl证书后然后重新启动
server { listen 443; server_name aaa.com; index index.html index.php; root /deta/wwwroot/aaa/ ssl on; ssl_certificate aaa.com.crt; ssl_certificate_key aaa.com.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; }
未完,可能不再在博客中补充需要注意的地方
相关文章推荐
- Nginx配置SSL证书部署HTTPS网站的方法(颁发证书)
- Nginx 下配置SSL证书的方法
- Nginx配置SSL证书实现访问HTTPS网站
- nginx配置ssl双向验证 nginx https ssl证书配
- Nginx配置SSL证书部署HTTPS网站
- nginx配置ssl证书
- 腾讯云服务器申请SSL证书, 配置Nginx, 实现HTTPS
- Nginx配置SSL证书部署HTTPS网站
- Nginx配置SSL证书部署HTTPS网站
- nginx配置SSL证书(使用startSSL申请到的免费证书)
- nginx SSL证书配置(双向认证)
- Nginx学习总结(6)——Nginx + https + 免费SSL证书配置指南
- 网站升级HTTPS,免费SSL证书Let’s Encrypt安装使用教程:Apache和Nginx配置方法
- goDaddy SSL证书 Nginx配置全流程 (转)
- Nginx下配置SSL证书 调转到IIS、tomcat二级站点
- nginx配置ssl证书
- Nginx配置SSL证书部署HTTPS网站
- Nginx + https + 免费SSL证书配置指南
- nginx配置ssl证书
- nginx配置ssl证书实现https和http共存访问