1. HTTPS工作原理

HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,(目的是安全的获得对称密钥用户后续传输加密)过程的简单描述如下:
a).浏览器讲自己支持的多个加密规则发送给网站
b).网站发送SSL证书(见下节)。网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发
回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。
c).浏览器验证/安装证书
1). 验证证书的合法性,如果证书不受受信任,则会给出证书不受信的提示。
2). 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机对称密钥,并用证书中提供的公钥加密。
3). 使用约定好的HASH计算握手消息,并使用生成的随机对称密钥对消息进行加密,最后将之前生成的所有信息发送给网站。
d).网站获取对称密钥,后进行以下操作:
1). 使用自己的私钥将信息解密取出对称密钥,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。
2). 使用约定好的HASH计算握手消息,使用对称密钥加密一段握手消息,发送给浏览器。
e).浏览器确认握手结果
浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将
由之前浏览器生成的随机密码并利用对称加密算法进行加密。
f).正常通信,之后,所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。

2. SSL证书

2.1 基础

HTTPS核心的一部分是数据传输之前的握手,握手过程确定之后使用的对称密钥。
握手过程中,网站向浏览器发送SSL证书,证书包含了网站域名、有效期、颁发机构、公钥等信息。由于公钥加密只能被申请证书时
产生的私钥解密,所以浏览器在生成对称密钥之前,需先核对当前访问域名与证书域名是否一致,同时对证书的办法机构进行验证,
如果验证失败,浏览器给出证书错误的提示。

2.2 证书的验证过程

证书以证书链的形式组织,首先要有根CA颁发的证书,再有根CA颁发一个中级CA机构的证书,再由中级CA颁发具体的SSL证书。
验证的时候浏览器会对证书链进行一级一级的验证,只有所有证书都是可信任的,整个验证的结果才是可信的。
根CA证书是最关键的,如果根证书不在“可信任的根证书”列表中。则它颁发的所有证书都不受信任。
如果SSL证书验证失败,浏览器会提示 “是否继续访问”。

HTTPS和SSL证书的更多相关文章

  1. Https系列之二:https的SSL证书在服务器端的部署,基于tomcat,spring boot

    Https系列会在下面几篇文章中分别作介绍: 一:https的简单介绍及SSL证书的生成二:https的SSL证书在服务器端的部署,基于tomcat,spring boot三:让服务器同时支持http ...

  2. Https系列之四:https的SSL证书在Android端基于okhttp,Retrofit的使用

    Https系列会在下面几篇文章中分别作介绍: 一:https的简单介绍及SSL证书的生成二:https的SSL证书在服务器端的部署,基于tomcat,spring boot三:让服务器同时支持http ...

  3. windows Apache 环境下配置支持HTTPS的SSL证书

    windows Apache 环境下配置支持HTTPS的SSL证书 1.准备工作 1)在设置Apache + SSL之前, 需要做: 安装Apache, 下载安装Apache时请下载带有SSL版本的A ...

  4. Nginx https免费SSL证书配置指南

    生成证书 $ cd /usr/local/nginx/conf $ openssl genrsa -des3 -out server.key 1024 $ openssl req -new -key  ...

  5. [整理]HTTPS和SSL证书

    在互联网安全通信方式上,目前用的最多的就是https配合ssl和数字证书来保证传输和认证安全了.本文追本溯源围绕这个模式谈一谈. 名词解释 首先解释一下上面的几个名词: • https:在http(超 ...

  6. HTTPS的SSL证书配置

    SSL证书 TOMCAT7.0部署_百度经验https://jingyan.baidu.com/article/7082dc1c65066be40a89bda8.html SSL证书安装指引 - 青春 ...

  7. 为什么各大网站都纷纷用起了https?哪些网站需要https(SSL证书)

    其实最近我也在易维信网站的开发组内讨论应用全站https事宜. 其原因非常简单. 因为不断接到用户投诉说网站上出现影响浏览体验的大面积广告. 可是网站平常只针对未登录用户在顶栏和底栏打两小条广告.而且 ...

  8. HTTPS请求 SSL证书验证

    import urllib2 url = "https://www.12306.cn/mormhweb/" headers = {"User-Agent": & ...

  9. nginx 使用HTTPS协议-SSL证书模块报错解决-附nginx安装 : [emerg] the "ssl" parameter requires ngx_http_ssl_module in nginx.c

    Linux系统下ngnix使用HTTPS协议启动报错: nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_modul ...

随机推荐

  1. Python模块-requests(一)

    requests不是python自带的,使用前需要安装 发送请求 HTTP请求类型有GET,POST,PUT,DELETE,HEAD和OPTIONS 使用requests发送请求的方法如下: > ...

  2. C# 判断路径和文件存在

    1.判断路径是否存在,不存在则创建路径: if (!System.IO.Directory.Exists(@"D:\Export")) { System.IO.Directory. ...

  3. hadoop mapreduce 计算平均气温的代码,绝对原创

    1901 46 1902 21 1903 48 1904 33 1905 43 1906 47 1907 31 1908 28 1909 26 1910 35 1911 30 1912 16 1913 ...

  4. Nodejs调试技术

    基于Chrome浏览器的调试器 既然我们可以通过V8的调试插件来调试,那是否也可以借用Chrome浏览器的JavaScript调试器来调试呢?node-inspector模块提供了这样一种可能.我们需 ...

  5. linux下将编译错误输出到一个文本文件

    linux下将编译错误输出到一个文本文件 command > filename 把把标准输出重定向到一个新文件中 command > > filename 把把标准输出重定向到一个文 ...

  6. 使用mahout fpgrowth算法求关联规则

    使用mahout fpgrowth 首先,这篇文章的内容大部分取自国外一篇博客Finding association rules with Mahout Frequent Pattern Mining ...

  7. ANNOVAR工具

    annovar软件组件介绍之一——table_annovar.pl(译) 对于初学者,使用ANNOVAr的最简单方法是使用table_annovar.pl程序,该程序采用输入突变文件(例如,VCF文件 ...

  8. vue.js基础学习(2)

    vm=new vue({ date:{name:"aa", user:{“name”:"lsm"}}); 获取属性值 1:vm.name 2:vm.$data. ...

  9. [CentOS7] firewalld重启失败 Failed to start firewalld - dynamic firewall daemon.

    错误信息: Failed to start firewalld - dynamic firewall daemon. 如图: 解决方法: 也就是kernel不支持现在的firewall防火墙的某些模块 ...

  10. Centos7 安装MySQL 5.7 (通用二进制包)

    1.下载安装包 下载地址 https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz ...