精华内容
下载资源
问答
  • HTTPS基础知识:HTTPS (Secure Hypertext Transfer Protocol)安全超文本传输协议,是一个安全通信通道,它基于HTTP开发用于在客户计算机和服务器之间交换信息。它使用安全套接字层进行信息交换,简单来说它是HTTP的...

    HTTPS基础知识:HTTPS (Secure Hypertext Transfer Protocol)安全超文本传输协议,是一个安全通信通道,它基于HTTP开发用于在客户计算机和服务器之间交换信息。它使用安全套接字层进行信息交换,简单来说它是HTTP的安全版,是使用TLS/SSL加密的HTTP协议。

    HTTP协议采用明文传输信息,存在信息窃听、信息篡改和信息劫持的风险,而协议TLS/SSL具有身份验证、信息加密和完整性校验的功能,可以避免此类问题发生。

    TLS/SSL全称安全传输层协议Transport Layer Security, 是介于TCP和HTTP之间的一层安全协议,不影响原有的TCP协议和HTTP协议,所以使用https基本上不需要对HTTP页面进行太多的改造。

    加密通信机制

    首先加密通信是一个什么样的机制?加密通信会根据某些规则对数据进行加密和解密,以便在互联网上进行数据交换而不会被第三方所窃取。从原文转变称密文称为加密,而从密文转换称原文被称为解密。目前有两种加密方式用于加密数据。

    公钥加密方式(PKI)

    这是一种使用不同的密钥进行加密和解密的方法。提前准备好一对密钥(公钥和私钥)分别用于加密和解密。当使用公钥进行加密后就只能使用私钥进行解密。

     

    优点:公钥加密必须采用配对的私钥进行解密,只要保证私钥不被泄漏,就能保证数据的安全,这样管理密钥就会更加的容易,并且更加的安全。

    缺点:进行加密和解密时需要更多的时间。

    通用密钥加密方式

    使用相同的密钥进行加密和解密。

     

    优点:加密解密的处理速度快。

    缺点:由于加密和解密使用同一个密钥,密钥存在泄漏的风险,导致数据存在被窃听和篡改的风险。

    使用SSL证书的HTTPS加密通信

    通常的互联网通信,是采用HTTP的明文通信协议。在这种通信协议下,信息会以明文的方式进行传输。这样就会存在被第三方窃取、篡改的风险。因此,我们采用HTTPS协议进行加密通信。

    HTTPS协议是采用加密的方式对数据进行传输,并且使用的是更适合互联网的公钥加密方式。互联网网站只要在服务器上安装部署上SSL证书,即可使网站实现HTTPS协议通信。

    HTTPS协议在通信时,首先会采用公钥加密的方式,把密钥进行公钥加密,然后传输给服务器,服务器使用私钥解密出密钥后,客户端和服务器即可建立起安全的访问通道。在接下来的通信就会采用速度更快的通用密钥的加密方式进行数据传输。

    这样HTTPS协议就既拥有公钥加密的安全性,同时也拥有了通用加密的高速的两个优点。HTTPS协议必然会取代HTTP成为日后互联网通信的主流通信协议。

    展开全文
  • 彻底搞懂HTTPS的加密机制

    千次阅读 2018-10-03 11:10:53
    HTTPS(SSL/TLS)的加密机制虽然是个前端后端ios安卓等都应了解的基本问题,但网上的很多HTTPS相关文章也总会忽略一些内容,我学习它的时候也废了挺大功夫。 对称加密、非对称加密、数字签名、数字证书等等,在学习...

    在这里插入图片描述
    HTTPS(SSL/TLS)的加密机制虽然是个前端后端ios安卓等都应了解的基本问题,但网上的很多HTTPS相关文章也总会忽略一些内容,我学习它的时候也废了挺大功夫。

    对称加密、非对称加密、数字签名、数字证书等等,在学习过程中,除了了解“它是什么”,你是否有想过“为什么是它”?我认为理解了后者才真正理解了HTTPS的加密机制。

    本文以问题的形式逐步展开,一步步解开HTTPS的面纱,希望能帮助你彻底搞懂HTTPS。特别是对于了解过HTTPS却在有些地方有所卡壳的人,希望本文能帮助你理清思路。

    为什么需要加密?
    因为http的内容是明文传输的,明文数据会经过中间代理服务器、路由器、wifi热点、通信服务运营商等多个物理节点,如果信息在传输过程中被劫持,传输的内容就完全暴露了,他还可以篡改传输的信息且不被双方察觉,这就是中间人攻击。所以我们才需要对信息进行加密。最简单容易理解的就是对称加密 。

    什么是对称加密?
    就是有一个密钥,它可以对一段内容加密,加密后只能用它才能解密看到原本的内容,和我们日常生活中用的钥匙作用差不多。

    用对称加密可行吗?
    如果通信双方都各自持有同一个密钥,且没有别人知道,这两方的通信安全当然是可以被保证的(除非密钥被破解)。

    然而最大的问题就是这个密钥怎么让传输的双方知晓,同时不被别人知道。如果由服务器生成一个密钥并传输给浏览器,那这个传输过程中密钥被别人劫持弄到手了怎么办?之后他就能用密钥解开双方传输的任何内容了,所以这么做当然不行。

    换种思路?试想一下,如果浏览器内部就预存了网站A的密钥,且可以确保除了浏览器和网站A,不会有任何外人知道该密钥,那理论上用对称加密是可以的,这样浏览器只要预存好世界上所有HTTPS网站的密钥就行啦!这么做显然不现实。(那在自己的ios或安卓的app里预先藏入自己服务器的密钥,通过对称加密的方式与服务器通信可以吗?评论区有人指出在实际操作中这样并不行,没办法对秘钥做好保护)

    怎么办?所以我们就需要神奇的非对称加密

    什么是非对称加密?
    有两把密钥,通常一把叫做公钥、一把叫做私钥,用公钥加密的内容必须用私钥才能解开,同样,私钥加密的内容只有公钥能解开。

    用非对称加密可行吗?
    鉴于非对称加密的机制,我们可能会有这种思路:服务器先把公钥直接明文传输给浏览器,之后浏览器向服务器传数据前都先用这个公钥加密好再传,这条数据的安全似乎可以保障了!因为只有服务器有相应的私钥能解开这条数据。

    然而由服务器到浏览器的这条路怎么保障安全?如果服务器用它的的私钥加密数据传给浏览器,那么浏览器用公钥可以解密它,而这个公钥是一开始通过明文传输给浏览器的,这个公钥被谁劫持到的话,他也能用该公钥解密服务器传来的信息了。所以目前似乎只能保证由浏览器向服务器传输数据时的安全性(其实仍有漏洞,下文会说),那利用这点你能想到什么解决方案吗?

    改良的非对称加密方案,似乎可以?
    我们已经理解通过一组公钥私钥,已经可以保证单个方向传输的安全性,那用两组公钥私钥,是不是就能保证双向传输都安全了?请看下面的过程:

    某网站拥有用于非对称加密的公钥A、私钥A’;浏览器拥有用于非对称加密的公钥B、私钥B’。

    浏览器像网站服务器请求,服务器把公钥A明文给传输浏览器。

    浏览器把公钥B明文传输给服务器。

    之后浏览器向服务器传输的所有东西都用公钥A加密,服务器收到后用私钥A’解密。由于只有服务器拥有这个私钥A’可以解密,所以能保证这条数据的安全。

    服务器向浏览器传输的所有东西都用公钥B加密,浏览器收到后用私钥B’解密。同上也可以保证这条数据的安全。

    的确可以!抛开这里面仍有的漏洞不谈(下文会讲),HTTPS的加密却没使用这种方案,为什么?最主要的原因是非对称加密算法非常耗时,特别是加密解密一些较大数据的时候有些力不从心,而对称加密快很多,看来必须得用对称加密,那我们能不能运用非对称加密的特性解决前面提到的对称加密的问题?

    非对称加密+对称加密?
    既然非对称加密耗时,非对称加密+对称加密结合可以吗?而且得尽量减少非对称加密的次数。当然是可以的,而且非对称加密、解密各只需用一次即可。
    请看一下这个过程:

    某网站拥有用于非对称加密的公钥A、私钥A’。

    浏览器像网站服务器请求,服务器把公钥A明文给传输浏览器。

    浏览器随机生成一个用于对称加密的密钥X,用公钥A加密后传给服务器。

    服务器拿到后用私钥A’解密得到密钥X。

    这样双方就都拥有密钥X了,且别人无法知道它。之后双方所有数据都用密钥X加密解密。

    完美!HTTPS基本就是采用了这种方案。完美?还是有漏洞的。

    中间人攻击
    中间人的确无法得到浏览器生成的密钥B,这个密钥本身被公钥A加密了,只有服务器才有私钥A’解开拿到它呀!然而中间人却完全不需要拿到密钥A’就能干坏事了。请看:

    某网站拥有用于非对称加密的公钥A、私钥A’。

    浏览器向网站服务器请求,服务器把公钥A明文给传输浏览器。

    中间人劫持到公钥A,保存下来,把数据包中的公钥A替换成自己伪造的公钥B(它当然也拥有公钥B对应的私钥B’)。

    浏览器随机生成一个用于对称加密的密钥X,用公钥B(浏览器不知道公钥被替换了)加密后传给服务器。

    中间人劫持后用私钥B’解密得到密钥X,再用公钥A加密后传给服务器。

    服务器拿到后用私钥A’解密得到密钥X。

    这样在双方都不会发现异常的情况下,中间人得到了密钥B。根本原因是浏览器无法确认自己收到的公钥是不是网站自己的。那么下一步就是解决下面这个问题:

    如何证明浏览器收到的公钥一定是该网站的公钥?
    现实生活中,如果想证明某身份证号一定是小明的,怎么办?看身份证。这里政府机构起到了“公信”的作用,身份证是由它颁发的,它本身的权威可以对一个人的身份信息作出证明。互联网中能不能搞这么个公信机构呢?给网站颁发一个“身份证”?

    数字证书
    网站在使用HTTPS前,需要向“CA机构”申请颁发一份数字证书,数字证书里有证书持有者、证书持有者的公钥等信息,服务器把证书传输给浏览器,浏览器从证书里取公钥就行了,证书就如身份证一样,可以证明“该公钥对应该网站”。然而这里又有一个显而易见的问题了,证书本身的传输过程中,如何防止被篡改?即如何证明证书本身的真实性?身份证有一些防伪技术,数字证书怎么防伪呢?解决这个问题我们就基本接近胜利了!

    如何放防止数字证书被篡改?
    我们把证书内容生成一份“签名”,比对证书内容和签名是否一致就能察觉是否被篡改。这种技术就叫数字签名:

    数字签名
    这部分内容建议看下图并结合后面的文字理解,图中左侧是数字签名的制作过程,右侧是验证过程(原图出处找不到了,可以看出来这图已经被转载了无数次了。。。)

    在这里插入图片描述
    数字签名的制作过程:

    CA拥有非对称加密的私钥和公钥。

    CA对证书明文信息进行hash。

    对hash后的值用私钥加密,得到数字签名。

    明文和数字签名共同组成了数字证书,这样一份数字证书就可以颁发给网站了。
    那浏览器拿到服务器传来的数字证书后,如何验证它是不是真的?(有没有被篡改、掉包)

    浏览器验证过程:

    拿到证书,得到明文T,数字签名S。

    用CA机构的公钥对S解密(由于是浏览器信任的机构,所以浏览器保有它的公钥。详情见下文),得到S’。

    用证书里说明的hash算法对明文T进行hash得到T’。

    比较S’是否等于T’,等于则表明证书可信。

    为什么这样可以证明证书可信呢?我们来仔细想一下。

    中间人有可能篡改该证书吗?
    假设中间人篡改了证书的原文,由于他没有CA机构的私钥,所以无法得到此时加密后签名,无法相应地篡改签名。浏览器收到该证书后会发现原文和签名解密后的值不一致,则说明证书已被篡改,证书不可信,从而终止向服务器传输信息,防止信息泄露给中间人。
    既然不可能篡改,那整个证书被掉包呢?

    中间人有可能把证书掉包吗?
    假设有另一个网站B也拿到了CA机构认证的证书,它想搞垮网站A,想劫持网站A的信息。于是它成为中间人拦截到了A传给浏览器的证书,然后替换成自己的证书,传给浏览器,之后浏览器就会错误地拿到B的证书里的公钥了,会导致上文提到的漏洞。

    其实这并不会发生,因为证书里包含了网站A的信息,包括域名,浏览器把证书里的域名与自己请求的域名比对一下就知道有没有被掉包了。

    为什么制作数字签名时需要hash一次?
    我初学HTTPS的时候就有这个问题,似乎以上过程中hash有点多余,把hash过程去掉也能保证证书没有被篡改。
    最显然的是性能问题,前面我们已经说了非对称加密效率较差,证书信息一般较长,比较耗时。而hash后得到的是固定长度的信息(比如用md5算法hash后可以得到固定的128位的值),这样加密解密就会快很多。
    当然还有安全上的原因,这部分内容相对深一些,感兴趣的可以看这篇解答:crypto.stackexchange.com/a/12780

    怎么证明CA机构的公钥是可信的?
    你们可能会发现上文中说到CA机构的公钥,我几乎一笔带过,“浏览器保有它的公钥”,这是个什么保有法?怎么证明这个公钥是否可信?

    让我们回想一下数字证书到底是干啥的?没错,为了证明某公钥是可信的,即“该公钥是否对应该网站/机构等”,那这个CA机构的公钥是不是也可以用数字证书来证明?没错,操作系统、浏览器本身会预装一些它们信任的根证书,如果其中有该CA机构的根证书,那就可以拿到它对应的可信公钥了。

    实际上证书之间的认证也可以不止一层,可以A信任B,B信任C,以此类推,我们把它叫做信任链或数字证书链,也就是一连串的数字证书,由根证书为起点,透过层层信任,使终端实体证书的持有者可以获得转授的信任,以证明身份。

    另外,不知你们是否遇到过网站访问不了、提示要安装证书的情况?这里安装的就是跟证书。说明浏览器不认给这个网站颁发证书的机构,那么没有该机构的根证书,你就得手动下载安装(风险自己承担XD)。安装该机构的根证书后,你就有了它的公钥,就可以用它验证服务器发来的证书是否可信了。

    HTTPS必须在每次请求中都要先在SSL/TLS层进行握手传输密钥吗?
    这也是我当时的困惑之一,显然每次请求都经历一次密钥传输过程非常耗时,那怎么达到只传输一次呢?用session就行。

    服务器会为每个浏览器(或客户端软件)维护一个session ID,在TSL握手阶段传给浏览器,浏览器生成好密钥传给服务器后,服务器会把该密钥存到相应的session ID下,之后浏览器每次请求都会携带session ID,服务器会根据session ID找到相应的密钥并进行解密加密操作,这样就不必要每次重新制作、传输密钥了!

    总结
    可以看下这张图,梳理一下整个流程(SSL、TSL握手有一些区别,不同版本间也有区别,不过大致过程就是这样):
    在这里插入图片描述
    (出处:.extremetech.com)

    至此,我们已自下而上地打通了HTTPS加密的整个脉络以及核心知识点,不知你是否真正搞懂了HTTPS呢?
    找几个时间,多看、多想、多理解几次就会越来越清晰的!
    那么,下面的问题你是否已经可以解答了呢?

    为什么要用对称加密+非对称加密?

    为什么不能只用非对称加密?

    为什么需要数字证书?

    为什么需要数字签名?

    转载自知乎,文章作者:Ivan YGY。阅读原文

    展开全文
  • HTTPS加密机制详解 ...首先加密通信是一个什么样的机制?加密通信会根据某些规则对数据进行加密和解密,以便在互联网上...目前有两种加密方式用于加密数据。 公钥加密方式(PKI) 这是一种使用不同的密钥进行加密和...

    HTTPS加密机制详解

    以下内容由SSL盾小编整理发布,更多理论知识【www.ssldun.com】 网站安全之盾
    加密通信机制

    首先加密通信是一个什么样的机制?加密通信会根据某些规则对数据进行加密和解密,以便在互联网上进行数据交换而不会被第三方所窃取。从原文转变称密文称为加密,而从密文转换称原文被称为解密。目前有两种加密方式用于加密数据。

    公钥加密方式(PKI)

    这是一种使用不同的密钥进行加密和解密的方法。提前准备好一对密钥(公钥和私钥)分别用于加密和解密。当使用公钥进行加密后就只能使用私钥进行解密。

    HTTPS协议加密怎么进行的?HTTPS加密详解

    优点:公钥加密必须采用配对的私钥进行解密,只要保证私钥不被泄漏,就能保证数据的安全,这样管理密钥就会更加的容易,并且更加的安全。

    缺点:进行加密和解密时需要更多的时间。

    通用密钥加密方式

    使用相同的密钥进行加密和解密。

    HTTPS协议加密怎么进行的?HTTPS加密详解

    优点:加密解密的处理速度快。

    缺点:由于加密和解密使用同一个密钥,密钥存在泄漏的风险,导致数据存在被窃听和篡改的风险。

    使用SSL证书的HTTPS加密通信

    通常的互联网通信,是采用HTTP的明文通信协议。在这种通信协议下,信息会以明文的方式进行传输。这样就会存在被第三方窃取、篡改的风险。因此,我们采用HTTPS协议进行加密通信。

    HTTPS协议是采用加密的方式对数据进行传输,并且使用的是更适合互联网的公钥加密方式。互联网网站只要在服务器上安装部署上SSL证书,即可使网站实现HTTPS协议通信。

    HTTPS协议在通信时,首先会采用公钥加密的方式,把密钥进行公钥加密,然后传输给服务器,服务器使用私钥解密出密钥后,客户端和服务器即可建立起安全的访问通道。在接下来的通信就会采用速度更快的通用密钥的加密方式进行数据传输。

    这样HTTPS协议就既拥有公钥加密的安全性,同时也拥有了通用加密的高速的两个优点。HTTPS协议必然会取代HTTP成为日后互联网通信的主流通信协议。

    以上就是对HTTPS 机制详解了,那么https是什么你现在了解了吗?

    转载于:https://blog.51cto.com/14379936/2408262

    展开全文
  • 如何为网站启用HTTPS加密传输协议

    千次阅读 2017-12-27 00:00:00
    点击上方蓝字进行关注的都是靓仔和仙女呦前言当今时代对上网的安全性要求比以前更高,chrome和firefox也都大力支持...本文主要介绍一下什么是HTTPS,以及如何使用Let’s Encrypt免费证书为网站启用HTTPS加密传输协议
    点击上方蓝字进行关注的都是靓仔和仙女呦

    前言

    当今时代对上网的安全性要求比以前更高,chrome和firefox也都大力支持网站使用HTTPS,苹果也从2017年开始在iOS 10系统中强制app使用HTTPS来传输数据,微信小程序也是要求必须使用HTTPS请求,由此可见HTTPS势在必行。

    本文主要介绍一下什么是HTTPS,以及如何使用Let’s Encrypt免费证书为网站启用HTTPS加密传输协议。

    HTTPS简介

    HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。

    为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer) 。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

    http与https的几点区别:
    1、https协议需要到CA申请证书,一般是收费的。
    2、http协议运行在TCP之上,所有传输的内容都是明文,https运行在SSL/TLS之上,SSL/TLS运行在TCP之上,所有传输的内容都经过加密的。
    3、http与https是两种不同的链接方式,端口也不一样,http使用80端口,https使用443端口。
    4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

    HTTPS解决的问题

    信任主机的问题
    采用https的服务器必须从CA (Certificate Authority)申请一个用于证明服务器用途类型的证书。该证书只有用于对应的服务器的时候,客户端才信任此主机。

    通讯过程中的数据的泄密和被篡改
    由于http协议下传输的内容都是明文,在数据传输的整个链路中任意一个节点(路由器、WIFI热点、网络运营网等等)都可以拿到传输的数据从而进行窜改(比如强行插入广告)。

    HTTPS SSL证书的选择

    SSL证书,用于加密HTTP协议,也就是HTTPS。随着淘宝、百度等网站纷纷实现全站Https加密访问,搜索引擎对于Https更加友好,加上互联网上越来越多的人重视隐私安全,站长们给网站添加SSL证书似乎成为了一种趋势。

    如果是首次考虑为网站部署HTTPS,估计在选择证书上会有些头疼,查阅一些资料后发现这里要考虑的因素确实有很多,比如是否支持多域名、泛域名、保额、证书的价格还有浏览器上的小图标样式区别等等。
    目前主注的SSL证书主要分为DV SSL、OV SSL、EV SSL、还有自签名证书。

    DV SSL( Domain Validation SSL)

    DV SSL证书是只验证网站域名所有权的简易型(Class 1级)SSL证书,可10分钟快速颁发,能起到加密传输的作用,但无法向用户证明网站的真实身份。 目前市面上的免费证书都是这个类型的,只是提供了对数据的加密,但是对提供证书的个人和机构的身份不做验证。

    OV SSL (Organization Validation SSL)

    OV SSL,提供加密功能,对申请者做严格的身份审核验证,提供可信身份证明。 和DV SSL的区别在于,OV SSL 提供了对个人或者机构的审核,能确认对方的身份,安全性更高。 所以这部分的证书申请是收费的。

    EV SSL ( Extended Validation SSL Certificate)

    最安全、最严格EV SSL证书遵循全球统一的严格身份验证标准,是目前业界安全级别最高的顶级 (Class 4级)SSL证书。 金融证券、银行、第三方支付、网上商城等,重点强调网站安全、企业可信形象的网站,涉及交易支付、客户隐私信息和账号密码的传输。 这部分的验证要求最高,申请费用也是最贵的。

    以上证书在浏览器上都会显示红色小锁头的图标,例如:

    也可以通过浏览器来查看某个网站的证书信息来得知这个网站使用的是什么机构提供的证书。

    本文重点讲解免费DV证书的选择,一般个人网站或创业公司初期的网站都可以选用此类证书。

    Let’s Encrypt SSL证书


    1、Let’s Encrypt是国外一个公共的免费SSL项目,由 Linux 基金会托管,它的来头不小,由Mozilla、思科、Akamai、IdenTrust和EFF等组织发起,目的就是向网站自动签发和管理免费证书,以便加速互联网由HTTP过渡到HTTPS。
    2、Let’s Encrypt安装部署简单、方便,目前也已经有现成的安装脚本,可以很快的完成证书的申请及发放。
    3、目前Let’s Encrypt免费证书的有效期只有90天,由于Let’s Encrypt的证书属于自动签发的,所以我们也可以自己写脚本来实现定期自动更新Let’s Encrypt证书,达到一劳永逸的效果。

    StartSSL证书


    1、StartSSL是StartCom公司旗下的SSL证书,应该算是免费SSL证书中的“鼻祖”,最早提供完全免费的SSL证书并且被各大浏览器所支持的恐怕就只有StartSSL证书了。任何个人都可以从StartSSL中申请到免费一年的SSL证书。
    2、如果你有看新闻,也许已经知道了“Mozilla正式提议将停止信任 WoSign 和 StartCom 签发的新证书”,对于StartSSL请观察事态发展后再谨慎使用。

    Let’s encrypt证书安装


    利用脚本快速获取Let’s Encrypt SSL证书,官方推荐的自动化证书颁发和安装脚本是Certbot,所以这里也是采用这个脚本进行安装(执行脚本需要root权限 )。
    获取脚本:

    $ wget https://dl.eff.org/certbot-auto
    $ chmod a+x certbot-auto
    $ mv certbot-auto /usr/local/sbin/

    获取证书:

    $ cd /usr/local/sbin
    $ ./certbot-auto certonly

    获取证书过程中Let’s encrypt需要验证用户对域名的所有权,根据提示操作即可。

    选择第一个使用webroot方式进行身份验证


    输入你的邮箱


    Agree


    输入你的域名(以空格分割)domain.com www.domain.com


    输入并选择自己的站点根目录,也可以自己指定一个目录,要确保能够访问到,获取证书过程中Let’s encrypt会在站点目录下随机生成一个文件,并在外部访问,以验证你是否对这个域名有所有权。

    自定义目录,如下Nginx配置:

    location /.well-known/acme-challenge/ {
        root /var/www/challenges/;
    }

    验证过程及生成证书过程输出:

    以上图形安装步骤过程也可以统一使用一条命令指定参数来实现,直接在命令行中指定webroot目录以及需要获取证书的域名:

    $ ./certbot-auto certonly --webroot -w /var/www/challenges -d example.com -d www.example.com

    最终输出如下内容,表示证书已经获取成功:

    查看一下生成的证书等文件:


    如果网站是多台服务器集群,也不需要再重新执行以上步骤,直接拷贝这个证书目录/etc/letsencrypt到集群中另外的服务器即可,注意这里面有4个软链接需要重建。

    配置网站使用HTTPS访问,在Nginx中需要同时绑定两个Server分别监听80(HTTP)及443(HTTPS)端口。
    Nginx关键配置清单:

    server {
        listen  80;
        server_name  yourdomain.com www.yourdomain.com;
        ##80端口接收的请求直接重定向到HTTPS端口
        return 301 https://www.yourdomain.com$request_uri;
        ##....
    }
    server {
        listen 443 default ssl;
        ssl on;
        ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        server_name  yourdomain.com www.yourdomain.com;
        ##...
    }

    配置完成后重载入Nginx配置即可生效,再次通过浏览器访问你的网站就可以看到绿色小锁头的图标了。

    部分页面&请求配置HTTPS

    如果是只想部分页面使用HTTPS的话,则需要在两个server{}分别进行设置,监听80端口的server通过location来识别,如果是需要加HTTPS的请求路径,把这个请求rewrite到https(443),监听443端口的server通过location来识别,如果是不需要加HTTPS的请求时,把这个请求rewrite到http(80)。

    配置部分HTTPS略为麻烦一些,因为还要考虑到页面上加载的一些资源,加HTTPS的页面中引用的资源也要是HTTPS的,不然这个HTTPS就没有什么意义(其中引用的js脚本还是有被篡改的风险)。

    页面上如果引用了非https的资源,浏览器上的小图标就变成了不是绿色的,这时候需要自己逐步排查。

    如果是做微信的小程序开发或者APP开发时必需要用HTTPS请求,而对应网站又不想使用HTTPS时,使用此方案即可。

    假如想实现登录页使用HTTPS,其它页面仍然是HTTP,可参考如下,

    Nginx部分配置清单:

    server {
        listen  80;
        ##其它请求转到后端服务器处理
        location / {
            proxy_pass http://server_list;
            proxy_set_header X-Real-IP $remote_addr;
        }
        ##如果是登录页面请求,重定向到https
        location ^~ /login{
            rewrite ^ https://$server_addr$request_uri? permanent;
        }
        ##...
     }
    server {
        listen 443 ssl;
        ssl on;
        ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
        ##其它请求重定向到http端口进行处理
        location / {
            rewrite ^ http://$server_addr$request_uri? permanent;
        }
        ##如果是登录页面请求,转到后端服务器处理
        location ^~ /login{
            proxy_pass http://server_list;
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-Ip $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
        ##...
    }

    Let’s Encrypt 自动更新证书

    Let’s Encrypt 证书的有效期为90天,建议是每60天更新证书,以免有误差影响正常服务,证书自动更新可以通过运行certbot-auto来进行。
    为所有已安装证书的域名更新,运行如下命令:

    $ ./certbot-auto renew

    命令执行过程会检查证书的到期日期,如果证书还未到期会提示你的证书尚未到期,输出如下:

    Saving debug log to /var/log/letsencrypt/letsencrypt.log
    -------------------------------------------------------------------------------
    Processing /etc/letsencrypt/renewal/yourdomain.com.conf
    -------------------------------------------------------------------------------
    Cert not yet due for renewal
    The following certs are not due for renewal yet:
      /etc/letsencrypt/live/yourdomain.com/fullchain.pem (skipped)
    No renewals were attempted.

    注意:如果你创建了多个域名的证书,这里也只显示基本域名的信息,但证书更新会对证书包含的所有域名有效。
    为确保证书永不过期,需要增加一个cron的定期执行任务,由于更新证书脚本首先会检查证书的到期日期,并且仅当证书距离少于30天时才会执行更新,因此可以安全的创建每周甚至每天运行的cron任务。
    编辑crontab来创建一个定时调度任务(需要root权限),运行:

    $ sudo crontab -e

    添下以下代码:

    30 3 * * 1 /usr/local/sbin/certbot-auto renew >> /var/log/letsencrypt-renew.log
    40 3 * * 1 /usr/local/nginx/sbin/nginx -s reload

    以上代码为创建两个定时调度任务,先是在每周一的上午3:30执行certbot-auto renew命令来更新证书,然后是在每周一上午3:40时重新加载Nginx,以使用更新的证书,命令生成的log将通过管道输出到/var/log/letsencrypt-renew.log日志文件。
    至此,你的网站就已经开使用免费的Let’s Encrypt TLS/SSL证书来安全地提供HTTPS内容。

    总结

    整个过程配置完毕后发现HTTPS没有想像中那么难(中大型网站例外,要考虑的因素要多一些),配置HTTPS这部分工作一般是由运维部门的同事来进行,与开发同学的关系不是很大,了解即可。

    今天部落除了教大家

    如何为网站启用HTTPS加密传输协议外

    还会给大家介绍一个课题


     互联网安全必备技能  深入挖掘Https与Nginx技术完美实现集群安全

    从此

    再也不用担心你的隐私数据被别人偷窥


    就在今晚的8:30

    动脑学院的James老师


    将会在腾讯课堂

    动脑学院

    java高级免费试听课中


    给大家进行更详细的讲解


    而你只需要

    在今晚8:30准点

    点击最下方阅读原文即可


    或者进入腾讯课堂官网

    搜索动脑学院

    点击Java高级的免费试听课

    也可以进行观看呦



    推荐阅读


    高并发与分布式系统的基石--数据库读写分离实战

    这就是学编程的下场...

    论程序员与产品经理是怎么互掐起来的

    如何假装成为一名好的程序员

    2017年长沙互联网线上技术峰会

    来自部落的邀请

    Java框架 Spring 核心机制

    至程序员的情书

    Java高级部落送你ofo小黄车60天免费骑行,还不来?

    Facebook研发的Cassandra你用过吗?

    给 Java开发者的10个大数据工具和框架


    推荐程序员必备微信号 

    Java高级部落

    微信号:javagaojibuluo



    在部落里,将会分享程序员相关的的技术,职场生活,行业热点资讯....以及更多好玩的IT趣文和趣图都在此部落中.....这....只属于我们程序猿.....


     ▼长按下方↓↓↓二维码识别关注


    推荐学习资料获取微信号 

    长按下方二维码识别关注


    展开全文
  • 文章目录HTTPS VS HTTPHTTPS=HTTP+加密+证书+...由于其本身通信使用明文,没有进行加密,也没有确认通信方的一种机制,所以在互联网上近似于裸奔,很容易就会受到中间人攻击,导致安全存在问题。 通信时数据并没有进
  • 资信认证资信等级是AAA级还是CCC级这一点必须由银行提供证明我国开展企业资信等级的评定已有多年历史将这一工作网络化即可用于电子商务交易的认证这项认证可以由银行来做 (3) 税收认证我国企业税收资料历年积累完整...
  • 软件加密技术和注册机制

    千次阅读 2012-05-16 10:20:12
    本文是一篇软件加密技术的基础性文章,简要介绍了软件加密的一些基本常识和一些加密产品,适用于国内软件开发商或者个人共享软件开发者阅读参考。  1、加密技术概述  一个密码系统的安全性只在于密钥的保密性,...
  • 本文以总结的形式,先大体介绍TCP/IP协议整体组成,再择其应用层上的HTTP协议进行详细总结,继而拓展知识点讲解加密学,过渡到HTTPS协议的学习,除去网络知识必备掌握的三次握手、四次挥手,另需了解基于SSL/TLS的...
  • 去年3月,TLS 1.3协议正式批准问世,成为下一代传输层安全协议(TLS)版本!它将成为客户端和服务器之间通过HTTPS连接建立加密通信的最新标准。TLS 1.3既能提高互联网用户的访问速度,又能增强安全性,大大提升HTTPS...
  • SSL/TLS协议运行机制的概述

    千次阅读 2015-02-24 23:40:16
    SSL/TLS协议运行机制的概述作者: 阮一峰日期: 2014年2月 5日互联网的通信安全,建立在SSL/TLS协议之上。本文简要介绍SSL/TLS协议的运行机制。文章的重点是设计思想和运行过程,不涉及具体的实现细节。如果想了解...
  • 加密、签名和SSL握手机制细节

    千次阅读 2020-07-29 21:46:11
    1.1 背景知识 对称加密 :加密解密使用同一密钥,加解密速度快。随着人数增多,密钥数量急...单向加密 :不算是加密,也常称为散列运算,用于生成独一无二的校验码(或称为指纹、特征码)来保证数据的完整性和一致性,如MD
  • 在这封信中,我们提出了基于边界网关协议的耐打扰互联网定价机制(TRIP),其中涉及用于价格加密和分发的多种密码算法。 TRIP有效地完成了源身份验证和价格确认,并利用网络功能来实现带宽分配和计费。 我们通过...
  • 一、互联网安全协议概述1.1 互联网协议体系TCP/IP...1.2 互联网安全协议1、将安全机制放置在网络层:如IPSec协议,好处是对最终用户和应用程序透明。 2、将安全机制放置在运输层:如SSL协议,好处是对最终用户和应用
  • 计算机网络 互联网使用的安全协议

    千次阅读 2020-12-16 21:30:40
    网络层安全协议 IP 安全性很差: 没有为通信提供良好的数据源鉴别机制; 没有为数据提供强大的完整性保护机制; 没有为数据提供任何机密性保护; 在设计和实现上存在安全漏洞,使各种攻击有机可乘。例如:攻击者...
  • 互联网协议 — NTP 时间同步协议

    千次阅读 多人点赞 2021-01-31 00:57:21
    NTP 还支持加密认证(Authentication)机制,以防止中间人攻击。 NTP 的目的是在无序的 Internet 环境中提供精确且健壮的时间同步(校正)服务,在分布式时间敏感的系统至关重要。 NTP 的实现原理 在 Internet 中,...
  • 一、互联网安全协议概述1.1 互联网协议体系TCP/IP...1.2 互联网安全协议1、将安全机制放置在网络层:如IPSec协议,好处是对最终用户和应用程序透明。 2、将安全机制放置在运输层:如SSL协议,好处是对最终用户和应用
  • 互联网的通信安全,建立在SSL/TLS协议之上。 本文简要介绍SSL/TLS协议的运行机制。文章的重点是设计思想和运行过程,不涉及具体的实现细节。如果想了解这方面的内容,请参阅RFC文档。 一、作用 不使用SSL/TLS的HTTP...
  • SET协议的安全机制

    千次阅读 2005-12-06 13:16:00
    - 1 -二、加密技术... - 2 -1、对称加密技术... - 2 -2、非对称加密技术... - 3 -3、数字信封(Digital envelope)... - 4 -4、数字摘要... - 4 -5、数字签名... - 5 -三、本节总结进行实例的讨论。... - 5 -1....
  • 802.11协议wifi新加密方式WPA3介绍

    千次阅读 2019-12-04 19:40:43
    当今的wifi安全问题 802.11任务组于2001年开始应用wpa2。当是还没有wifi并且802.11的应用也不像今天一样普遍。这是技术上的第一大步并且wifi以网卡几口的方式嵌入笔记本...当802.11i协议尘埃落定,wifi启用wpa2规则...
  • 计算机通信协议是对那些计算机必须遵守以便彼此通信的规则的描述。 什么是 TCP/IP? TCP/IP 是供已连接因特网的计算机进行通信的通信协议。 TCP/IP 指传输控制协议/网际协议 (Transmission Control Protocol / ...
  • 【安全加密技术】非对称加密

    千次阅读 2015-07-08 23:35:11
    假如现在 你向支付宝 转账,即一些数据信息,为了保证信息传送的保密性、真实性、完整性和不可否认性,需要对传送的信息进行数字加密和签名,其传送过程为: 1.首先你要确认是否是支付宝的数字证书,如果确认为...
  • 加密算法总结

    万次阅读 多人点赞 2016-07-28 16:51:42
    加密算法总结, 对称加密,非对称加密,单向加密, MD5, MD5、SHA、HMAC、RIPE-MD、HAVAL、N-Hash、Tiger、DES、AES、IDEA、BlowFish、Twofish、RSA、DSA、ECC
  • 加密技术

    千次阅读 2010-05-28 14:45:00
    加密技术的要点是加密算法,加密算法可以分为对称加密、不对称加密和不可逆加密三类算法。 对称加密算法 对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥...
  • [网络] SSL/TLS协议的原理机制

    千次阅读 2020-07-19 10:58:21
    我们每天都在使用互联网,所有数据都要通过计算机网络进行传输,网络本身只具备传输数据的能力,并不能保证数据的安全性。 数据在公共网络中移动的时候,很容易被第三方截获、篡改,造成信息泄漏、中间人攻击等各种...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,377
精华内容 12,150
关键字:

互联网用于加密机制的协议是