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. linux命令学习 查找文件和文件夹

    1: 查找根目录下查找文件夹名称叫XXXX的目录地址 find / -name XXXX -d 2: 查找/var/www/目录下叫index.php的文件 find /var/www/ -name ...

  2. 一 ThreadLocal

    (1)  Threadlocal定义: 当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它 ...

  3. Sublime Text3常用插件以及安装方法(实用)【转载】

    https://www.cnblogs.com/liuchaoH/p/6370008.html Package Control组件在线安装 按Ctrl+`调出console(注:避免热键冲突) 粘贴以 ...

  4. javascript深入理解js闭包(转)

    javascript深入理解js闭包 转载  2010-07-03   作者:    我要评论 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. ...

  5. IoC概述

    ---------------siwuxie095 IoC,即 Inversion of Control,控制反转,它是 Spring 容器的内核 AOP.声明式事务等功能都是在此基础上开花结果,即 ...

  6. MySql中的锁(表锁,行锁)

    锁是计算机协调多个进程或春线程并发访问某一资源的机制.在数据库中,除传统的计算资源(CPU,RAM,I/O)的争用之外,数据也是一种工许多用户共享的资源.如何保证数据并发访问的一致性,有效性是所有数据 ...

  7. Struts2 资源配置文件国际化

    Struts2 资源配置文件国际化 Struts2资源文件的命名规范:basename_language_country.properties Struts2国际化如果系统同时存在资源文件.类文件,系 ...

  8. java多线程系列:ThreadPoolExecutor

    ThreadPoolExecutor自定义线程池 开篇一张图(图片来自阿里巴巴Java开发手册(详尽版)),后面全靠编 好了要开始编了,从图片中就可以看到这篇博文的主题了,ThreadPoolExec ...

  9. Bind,Options读取配置到C#实例

    首先创建一个网站 Asp.net Core Mvc 空网站 起名叫做OptionsBindSample 通过Option和Bind将Json文件里面的配置转成C#里面的一个实体,相互之间映射起来 Bi ...

  10. asp.net core系列 64 结合eShopOnWeb全面认识领域模型架构

    一.项目分析 在上篇中介绍了什么是"干净架构",DDD符合了这种干净架构的特点,重点描述了DDD架构遵循的依赖倒置原则,使软件达到了低藕合.eShopOnWeb项目是学习DDD领域 ...