100.1、 tcp的三次握手和四次挥手的过程:

1、三次握手(建立连接):

第一次:建立连接时,客户端发送SYN包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次:服务器收到SYN包,向客户端返回ACK(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RCVD状态;

第三次:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

完成三次握手,客户端与服务器开始传送数据,也就是ESTABLISHED状态。

三次握手保证了不会建立无效的连接,从而浪费资源。

2、四次挥手(断开连接):

第一次: TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送。

第二次:服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。

第三次:服务器关闭客户端的连接,发送一个FIN给客户端。

第四次:客户端发回ACK报文确认,并将确认序号设置为收到序号加1。

100.2、HTTP请求过程:

建立连接完毕以后客户端会发送响应给服务端

服务端接受请求并且做出响应发送给客户端

客户端收到响应并且解析响应响应给客户

100.3、https请求过程:

在使用HTTPS是需要保证服务端配置正确了对应的安全证书;

客户端发送请求到服务端;

服务端返回公钥证书到客户端;

客户端接收后会验证证书的安全性,如果通过则会随机生成一个随机数,用公钥对其加密,发送到服务端;

服务端接受到这个加密后的随机数后会用私钥对其解密得到真正的随机数,随后用这个随机数当做私钥对需要发送的数据进行对称加密;

客户端在接收到加密后的数据使用私钥(即生成的随机值)对数据进行解密并且解析数据呈现结果给客户;

SSL加密建立;

100.4、安装nginx软件:

yum -y install pcre-devel openssl-devel

useradd nginx -M -s /sbin/nologin

tar xf nginx-1.8.1.tar.gz

cd nginx-1.8.1

./configure --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module --prefix=/application/nginx-1.8.1

make && make install

ln -s /application/nginx-1.8.1/ /application/nginx

100.5、生成私钥和公钥:

[root@m01 ~]# cd /application/nginx/

[root@m01 nginx]# mkdir ssl #为证书创建目录

[root@m01 nginx]# cd ssl

1、生成私钥:

[root@m01 ssl]# openssl genrsa -des3 -out server.key 1024 #创建服务器证书密钥文件 server.key;

Generating RSA private key, 1024 bit long modulus

.............++++++

........++++++

e is 65537 (0x10001)

Enter pass phrase for server.key: #创建密码,后面要用到;

Verifying - Enter pass phrase for server.key: # 确认密码;

2、生成公钥:

[root@m01 ssl]# openssl req -new -key server.key -out server.csr #生成证书颁发机构,用于颁发公钥,server.csr;

Enter pass phrase for server.key: #创建服务器证书秘钥文件时输入的密码;

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]:CN #国家代号, CN

State or Province Name (full name) []:AaHui #省的全名,拼音 AaHui

Locality Name (eg, city) [Default City]:HeiFei #市的全名,拼音 HeFei

Organization Name (eg, company) [Default Company Ltd]:Microsoft #公司的英文名字

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 []: #可以不输入

106、生成标记证书,标记公钥和私钥:

[root@m01 ssl]# cp server.key server.key.org #备份服务器的秘钥文件

[root@m01 ssl]# openssl rsa -in server.key.org -out server.key #去除服务器秘钥文件的口令,因为以后要给nginx使用。

#每次reload nginx配置时候都要你验证这个PAM密码的,不方便,所以去除私钥的密码;

Enter pass phrase for server.key: #输入服务器秘钥文件创建时的密码;

writing RSA key

[root@m01 ssl]# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt #最后标记证书server.crt使用上述私钥server.key和公钥server.csr

Signature ok

subject=/C=CN/ST=AaHui/L=HeiFei/O=Microsoft

Getting Private key

107、配置nginx配置文件:

[root@m01 nginx]# cat conf/nginx.conf

worker_processes 1;

events {

worker_connections 1024;

}

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;

server {

listen 443; #ssl监听的端口号是443;

server_name localhost;

ssl on; #开启ssl; 如果把ssl on这行去掉,ssl写在443端口后面。这样http和https的链接都可以用;

ssl_certificate /application/nginx/ssl/server.crt; #证书路径,只有公钥会被发送到客户端;

ssl_certificate_key /application/nginx/ssl/server.key; #私钥路径;

ssl_session_timeout 5m; #ssl超时设置;

###############################################################

#通过重用Session提高https的性能:

#builtin:在OpenSSL中构建的缓存;仅由一个工作进程使用。缓存大小在session中指定。

#如果没有给出大小,则等于20480个会话。使用内置高速缓存可能导致内存碎片。

#shared:所有工作进程之间共享缓存。缓存大小以字节为单位指定;一兆字节可以存储大约4000个session。

#ssl_session_cache shared:SSL:10m;#官网上指出这种方法更高效;

################################################################

ssl_session_cache builtin:1000 shared:SSL:10m;

ssl_protocols SSLv2 SSLv3 TLSv1; #启动特定的加密协议;

ssl_ciphers HIGH:!aNULL:!MD5; #设置数据的加密方式;

ssl_prefer_server_ciphers on; #设置协商加密算法时,优先使用我们服务端的加密套件,而不是客户端浏览器的加密套件;

location / {

root html;

index index.html index.htm;

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

}

}

108、测试:

109、https证书失效的问题:

安全证书不被信任:

通常在对安全性要求高的网站会使用安全证书来确保您的通信安全,防止被第三方攻击或窃听。

出现”安全证书不被信任“时,请按如下顺序进行排查:

1、检查电脑系统时间是否正确。错误的系统时间会造成证书过期或效验失败,请修改系统时间后再次访问网站。

2、是否使用了代理服务器。代理服务器会导致安全证书无效,可关闭代理服务器后再次访问网站。

3、是否公司专用在线办公网站。此类网站会采用自己生成的证书,非国际公认的安全机构所颁发,故不被浏览器信任。

安全证书不是“受信任的根证书颁发机构 ”颁发的:

SSL安全证书必须由浏览器中“受信任的根证书颁发机构”认证颁发。由不受浏览器信任的机构颁发的安全证书被称为“自签证书”,自签证书不受国际标准约束,

容易被假冒伪造,可被欺诈网站利用或用于中间人攻击,存在极大的安全风险。为确保用户访问安全,浏览器会提示“安全证书不受信任”,并告知用户“此网站出具

的安全证书不是受信任的证书颁发机构颁发的”。此类情况需谨慎处理,不推荐继续浏览此网站。网站经营者可采用受浏览器信任的SSL安全证书解决该提示,可使用免

费SSL证书或显示绿色地址栏的收费SSL证书。

安全证书已被吊销:

SSL安全证书已被颁发机构吊销,说明该安全证书已失效,浏览器会提示“安全证书不受信任”。

安全证书已过期:

SSL安全证书已过期,网站未及时更新,浏览器会提示“安全证书不受信任”。

安全证书认证域名与该网站域名不一致

为确保网站身份真实,SSL安全证书只能用于已被认证的网站域名上,如当前网站域名与安全证书已认证的域名不一致,浏览器会提示“安全证书不受信任”。

网络原因或数据被监听

因国家防火墙或是公司内网的网监系统,造成数据流量被劫持修改,从而出现证书异常,此类问题一般出现在您访问google的加密搜索,或是其他正规的加密网站。

此外,木马病毒对您网络流量的监听也可能造成证书效验失败。

100、nginx_https安全链接配置的更多相关文章

  1. mybatis源码数据库链接配置

    <?xml version="1.0" encoding="UTF-8" ?>  <!DOCTYPE configuration        ...

  2. 各种数据库maven的pom文件编写与ibernate链接配置

    各种数据库Hibernate链接配置 Derby db driver maven dependency <dependency>         <groupId>org.ap ...

  3. 原创:mysql5 还原至mysql 8.0.11数据库链接配置提示错误(修改内容有三处

    原创:mysql5 还原至mysql 8.0.11数据库链接配置提示错误改有三: a) mysql 连接jar包版修改 b)类路径修改 c)配置连接池地址修改 因版本升级,首先要修改 1:mysql- ...

  4. jmeter数据库链接配置

    通常使用数据库有3个要求,性能好.数据一致性有保障.数据安全可靠:数据库优化的前提也是这三个要求.有句玩笑话叫少做少犯错,不做不犯错.DB优化的思路就是少做,减少请求次数,减少数据传输量,减少运算量. ...

  5. Linux下MySQL远程链接配置

    配置步骤: 1).首先进入数据库,使用系统数据库mysql mysql -u root -p mysql 2).接着对系统数据库的root账户设置远程访问的密码,与本地的root访问密码并不冲突 gr ...

  6. nginx 超时配置、根据域名、端口、链接 配置不同跳转

    Location正则表达式location的作用  location指令的作用是根据用户请求的URI来执行不同的应用,也就是根据用户请求的网站URL进行匹配,匹配成功即进行相关的操作. locatio ...

  7. centos7 NAT链接配置(静态ip/修改网卡名为eth0)|1

    NAT的静态ip设置并且修改网卡名为eth0 1 cd /etc/sysconfig/network-scripts/ mv eno16777736  ifcfg-eth0 #修改名称 vi eth0 ...

  8. wifi链接配置

    linux 命令行配置wlan无线网卡 无线网卡配置此页由Linux Wiki日(星期四) 09:28的工作基础上.本文介绍在Linux命令行界面中手动配置无线网卡的方法.目前流行的多数发行版都支持用 ...

  9. centos7.6 ssh远程链接配置

    1.firewall增加22端口号 增加方式有两种,直接编辑firewall的public.xml增加 vi /etc/firewalld/zones/public.xml 进入后按i健光标移动到zo ...

随机推荐

  1. golang:数据类型总结

    Go语言将数据类型分为四类:基础类型.复合类型.引用类型和接口类型. 基础数据类型包括: 基础类型: - 布尔型.整型.浮点型.复数型.字符型.字符串型.错误类型. 复合数据类型包括: - 指针.数组 ...

  2. zimbra安装ssl证书

    zimbra在后台安装证书签发机构签发证书出现时候出现错误:{RemoteManager: mail.domain.com->zimbra@mail.domain.com:22} com.zim ...

  3. [刷题] 206 Reverse Linked List

    要求 反转一个链表 不得改变节点的值 示例 head->1->2->3->4->5->NULL NULL<-1<-2<-3<-4<-5 ...

  4. 012.Kubernetes的configmap和secret配置

    使用configmap对多有的配置文件进行统一管理 一 configmap配置管理 1.1 检查mysql的配置 [root@docker-server1 storage]# kubectl get ...

  5. visual studio code 快捷键-(转自 浅笑千寻)

    Visual Studio Code之常备快捷键 官方快捷键大全:https://code.visualstudio.com/docs/customization/keybindings Visual ...

  6. JQuery 基础之基本选择器

    1.什么是jQuery选择器: jQuery选择器继承了CSS与Path语言的部分语法,允许通过标签名.属性名或内容对DOM元素进行快速.准确的选择,而不必担心浏览器的兼容性,通过jQuery选择器对 ...

  7. 【遥感数字图像处理实验】Erdas版详细图文实验教程(8实验全)

    @ 目录 1. 专栏简介 2. 专栏地址 3. 专栏目录 1. 专栏简介 遥感数字图像的处理,是对遥感数字图像的计算机处理.与工业和医学数字图像不同,遥感数字图像类型更为多样,内容更为复杂.因此,遥感 ...

  8. 微信小程序从开发到上线流程

    一.微信小程序从开发到上线流程 注册小程序 1.登录微信公众平台 https://mp.weixin.qq.com 2.在微信公众平台>立即注册>小程序中注册微信小程序 3.在邮箱中激活并 ...

  9. 基于 BDD 理论的 Nebula 集成测试框架重构(上篇)

    本文首发于 Nebula Graph 公众号 NebulaGraphCommunity,Follow 看大厂图数据库技术实践. 测试框架的演进 截止目前为止,在 Nebula Graph 的开发过程中 ...

  10. C# HTTP请求对外接口、第三方接口公用类

    /// <summary> /// 网络数据请求公共函数 /// </summary> public class HttpWebRequestCommon { #region ...