关于HTTPS的使用简介

HTTPS概述

HTTPS 可以认为是 HTTP + TLS。TLS 是传输层加密协议,它的前身是 SSL 协议,最早由netscape公司发布,后改名为 TLS。如果没有特别说明,SSL 和 TLS 说的都是同一个协议。

通信过程

1).浏览器将自己支持的一套加密规则发送给网站。
2).网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。
3).获得网站证书之后浏览器要做以下工作:
4) 验证证书的合法性,如果证书受信任,则浏览器栏里面会显示一个小锁头,否则会给出证书不受信的提示。
5) 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。
6) 使用约定好的HASH计算握手消息,并使用生成的随机数密码对消息进行加密,最后将之前生成的所有信息发送给网站。
7).网站接收浏览器发来的数据之后要做以下的操作:
8) 使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。
9) 使用密码加密一段握手消息,发送给浏览器。
10).浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。

关键概念:

CA (Certificate Authority):认证权威或者认证中心,主要用途是为用户发放数字证书。认证中心(CA)的功能有:证书发放、证书更新、证书撤销和证书验证。

秘钥协商:浏览器和服务器每次新建会话时都使用非对称密钥交换算法协商出对称密钥,使用这些对称密钥完成应用数据的加解密和验证,整个会话过程中的密钥只在内存中生成和保存,而且每个会话的对称密钥都不相同(除非会话复用),中间者无法窃取。

常见的密钥交换算法有 RSA,ECDHE,DH,DHE 等算法。它们的特性如下:
RSA:算法实现简单,诞生于 1977 年,历史悠久,经过了长时间的破解测试,安全性高。缺点就是需要比较大的素数(目前常用的是 2048 位)来保证安全强度,很消耗 CPU 运算资源。RSA 是目前唯一一个既能用于密钥交换又能用于证书签名的算法。
DH:diffie-hellman 密钥交换算法,诞生时间比较早(1977 年),但是 1999 年才公开。缺点是比较消耗 CPU 性能。
ECDHE:使用椭圆曲线(ECC)的 DH 算法,优点是能用较小的素数(256 位)实现 RSA 相同的安全等级。缺点是算法实现复杂,用于密钥交换的历史不长,没有经过长时间的安全攻击测试。
ECDH:不支持 PFS,安全性低,同时无法实现 false start。
DHE:不支持 ECC。非常消耗 CPU 资源。

对称加密:使用秘钥协商获取到的对称秘钥加密通信。

数字证书:
    a、身份授权。确保浏览器访问的网站是经过 CA 验证的可信任的网站。
    b、分发公钥。每个数字证书都包含了注册者生成的公钥。在 SSL 握手时会通过 certificate 消息传输给客户端。

证书

根证书:用于验证CA机构的身份。
网站证书:用于验证网站身份。
验证过程为从证书链从下往上找到根证书,然后通过根证书 逐级向下验证证书的真实性。

nginx配置

server {
    listen       80;
    server_name  www.acme.com;

    location / {
        rewrite ^/(.*) https://www.acme.com/$1 permanent;
    }
}

server {
    listen    443 ssl;
    server_name  www.acme.com;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_certificate     /home/nginx/cer/acme.com.crt;
    ssl_certificate_key /home/nginx/cer/device.key;

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  1440m;

    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

    access_log  logs/www.acme.com.access.log  main;
    error_log  logs/www.acme.com.error.log  debug;

    location / {
            proxy_pass http://192.168.198.132:8080;
    }
}

使用脚本

参考download目录下:HTTPS-Turorial-Package.rar
时间: 2024-07-29 13:17:56

关于HTTPS的使用简介的相关文章

HTTPS数据传输过程简介

HTTPS数据传输过程 ①客户端发起HTTPS连接握手 ②服务端收到HTTPS握手连接请求,与客户建立握手过程,和TCP的三次握手类似,并发送一系列的加密算法组合给客户端,与客户端协商加密算法组合 ③客户端收到这一系列的组合,从中选择一个自己能够支持的并且加密级别最高的加密算法组合,通告给服务端 ④服务端收到并确认客户端选择的加密组合,并将公钥证书发送给客户端,(这个公钥证书使用了非对称加密算法,使用这个公钥加密的信息只能由私钥解开,而这个私钥只有公钥的颁布者也就是服务端拥有,也就是说客户端用公

Tomcat服务器https协议配置简介

一. 数字签名证书制作 1. 用jdk自带的keytool工具生成证书: 2. 导出证书: 3. 交给CA签名认证: 注意:制作详细步骤示例参见附录. 二.修改server.xml文件 修改conf/server.xml,添加以下配置 <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="htt

实现HTTPS系列第四弹之【TLS ,SSL等概念理解】

博文说明[前言]: 本文将通过个人口吻介绍TLS ,SSL,PKI等相关知识,在目前时间点[2017年5月21号]下,所掌握的技术水平有限,可能会存在不少知识理解不够深入或全面,望大家指出问题共同交流,在后续工作及学习中如发现本文内容与实际情况有所偏差,将会完善该博文内容. 1.第一弹:实现HTTPS系列第一弹之[http,https,www,web等概念简介] 博文链接:http://watchmen.blog.51cto.com/6091957/1922919 2.第二弹:实现HTTPS系列

数据安全(MD5),HTTPS,检测网络状态

一.数据安全 1.提交用户的隐私数据一定要使用POST请求提交用户的隐私数据GET请求的所有参数都直接暴露在URL中请求的URL一般会记录在服务器的访问日志中服务器的访问日志是黑客攻击的重点对象之一 用户的隐私数据登录密码银行账号… … 2.数据安全仅仅用POST请求提交用户的隐私数据,还是不能完全解决安全问题可以利用软件(比如Charles)设置代理服务器,拦截查看手机的请求数据因此:提交用户的隐私数据时,一定不要明文提交,要加密处理后再提交 常见的加密算法MD5 \ SHA \ DES \

httpd配置.md

httpd-2.2 配置 监听端口和IP 配置文件: Listen [IP:]PORT 省略IP表示为0.0.0.0 Listen指令可重复出现多次 修改监听socket,重启服务进程方可生效 可以监听在指定的IP地址的端口上,但这么操作必须重启服务 持久连续 我们知道http是无状态.无连接的,无连接的含义是限制每次连接只处理一个请求.服务器处理完客户的请求,并收到客户的应答后,即断开连接.采用这种方式可以节省传输时间.无状态是指协议对于事务处理没有记忆能力.缺少状态意味着如果后续处理需要前面

优秀的相关网站留存-不定时更新

集团站点 1. 网站名:IMPORTNEW 网址:http://www.importnew.com/ 简介:专注分享JAVA技术 2. 网站名:PHP100 网址:http://www.php100.com/ 简介:专注于分享传递PHP学习 3. 网站名:极客范 网址:http://www.geekfan.net/ 简介:致力于分享前沿与新兴科技应用 4. 网站名:恩聪PHP 网址:http://php.ncong.com/ 简介:一个系统学习PHP的网站 5. 网站名:PHP手册 网址:htt

从Java的角度理解前端框架,nodejs,reactjs,angularjs,requirejs,seajs

[突然领悟] 今天看了一遍reactjs,突然发现和自己一直用的freemarker的宏十分相似, 突然领悟了很多前端吊炸天的概念,框架,特写此文,欢迎批评指正. [nodejs] 官网:https://nodejs.org/ 简介:对前端来说极其重要的一个"框架",简直可以说是开天辟地 类比Java中:JVM 详述: 就前端来说nodejs具有划时代的意义,做前端的没用过nodejs都不好意思说自己是前端, 做后端的没听过nodejs,或者说不出nodejs和java的优缺点,也不是

HTTP原理简单介绍

嗯,  cao,卡顿5s,上次计划撸代码来着,后来感觉不很现实?又着实low比~就打算把笔记搞上一搞~然,今天起个大啊早,又来变卦.哈哈哈~人生处处不惊喜~嘻嘻嘻 来开始你的表演~ <HTTP原理简单介绍>,摘自某论坛......记不得了...... HTTP在今后互联网中(原文如是说)必然将扮演越来越重要角色,国外互联网大佬对https部署竭力鼓吹呐喊,HTTP/2协议推广更是逼着你不上也得上!在HTTPS普及化过程中,必然会损害某些集团利益,但这是互联网趋势,历史的洪流是谁也阻挡不了的(历

从Java的角度看前端JS各种框架

今天看到一篇不错的文章: 从Java的角度理解前端框架,nodejs,reactjs,angularjs,requirejs,seajs http://blog.csdn.net/uikoo9/article/details/45999745 (PS:还有另一篇文章也可以看看:http://uikoo9.com/blog/detail/fe web前端漫谈-uikoo9.com) 文章内容如下: [前端神秘的面纱] 对后端开发来说,前端是神秘的, 眼花缭乱的技术,繁多的框架, 如果你还停留在前端