zoukankan      html  css  js  c++  java
  • 如何将网站升级为HTTPS协议(整理)

    如何将网站升级为HTTPS协议(整理)

    一、总结

    一句话总结:

    获取证书(有免费有付费):证书是一个二进制文件,里面包含经过认证的网站公钥和一些元数据,要从经销商购买。

    安装证书:证书可以放在/etc/ssl目录(Linux 系统),然后根据你使用的Web服务器进行配置。

    修改链接:网页加载的 HTTP 资源,要全部改成 HTTPS 链接。因为加密网页内如果有非加密的资源,浏览器是不会加载那些资源的。

    301重定向:修改 Web 服务器的配置文件,使用 301 重定向,将 HTTP 协议的访问导向 HTTPS 协议。

    1、ssl证书有哪三种认证级别?

    • 域名认证(Domain Validation):最低级别认证,可以确认申请人拥有这个域名。对于这种证书,浏览器会在地址栏显示一把锁。
    • 公司认证(Company Validation):确认域名所有人是哪一家公司,证书里面会包含公司信息。
    • 扩展认证(Extended Validation):最高级别的认证,浏览器地址栏会显示公司名。

    2、http和https的区别是什么?

    HTTP: 是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准,用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

    HTTPS: 是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

    3、HTTPS的优缺点如何?

    网站升级HTTPS有利有弊,利当然是安全系数提升,降低劫持风险,弊端主要体现在速度上,由于证书验证、多次握手、CPU消耗等原因,https页面速度会被拖慢一点。

    谷歌、火狐等浏览器厂商也已经扛起HTTPS大旗,对于HTTP站点会提示不安全警告。而且像谷歌、百度等搜索引擎也早已相应HTTPS号召,都声称对HTTPS站点页面友好甚至优先抓取,排名靠前,当然具体实际实施情况就另当别论了,目前来看,谷歌做的要比百度更成熟一些。

    要让互联网站点都升级到HTTPS协议还需一段时间,但不可否认HTTPS是大势所趋。

    4、如何确保浏览器只在使用 HTTPS 时,才发送Cookie?

    网站响应头里面,Set-Cookie字段加上Secure标志即可。

    
    Set-Cookie: LSID=DQAAAK...Eaem_vYg; Secure

    5、什么是HTTP严格传输安全?

    “HTTP严格传输安全”(简称 HSTS)的作用,就是强制浏览器只能发出HTTPS请求,并阻止用户接受不安全的证书。

    它在网站的响应头里面,加入一个强制性声明。以下例子摘自维基百科

    
    Strict-Transport-Security: max-age=31536000; includeSubDomains
    

    上面这段头信息有两个作用。

    (1)在接下来的一年(即31536000秒)中,浏览器只要向example.com或其子域名发送HTTP请求时,必须采用HTTPS来发起连接。用户点击超链接或在地址栏输入http://www.example.com/,浏览器应当自动将http转写成https,然后直接向https://www.example.com/发送请求。

    (2)在接下来的一年中,如果example.com服务器发送的证书无效,用户不能忽略浏览器警告,将无法继续访问该网站。

    HSTS 很大程度上解决了 SSL 剥离攻击。只要浏览器曾经与服务器建立过一次安全连接,之后浏览器会强制使用HTTPS,即使链接被换成了HTTP

    该方法的主要不足是,用户首次访问网站发出HTTP请求时,是不受HSTS保护的。

    如果想要全面分析网站的安全程度,可以使用 Mozilla 的 Observatory

    二、HTTP 网站升级到 HTTPS 。

    为了升级到 HTTP/2 协议,必须先启用 HTTPS。如果你不了解 HTTPS 协议(学名 TLS 协议),可以参考我以前的文章。

    • 《HTTPS 协议概述》
    • 《图解 HTTPS 协议》
    • 《HTTPS 协议的七个误解》
    • 《HTTPS 协议的延迟有多大?》

    本文介绍如何将一个 HTTP 网站升级到 HTTPS 。

    一、获取证书

    升级到 HTTPS 协议的第一步,就是要获得一张证书。

    证书是一个二进制文件,里面包含经过认证的网站公钥和一些元数据,要从经销商购买。

    证书有很多类型,首先分为三种认证级别。

    • 域名认证(Domain Validation):最低级别认证,可以确认申请人拥有这个域名。对于这种证书,浏览器会在地址栏显示一把锁。
    • 公司认证(Company Validation):确认域名所有人是哪一家公司,证书里面会包含公司信息。
    • 扩展认证(Extended Validation):最高级别的认证,浏览器地址栏会显示公司名。

    还分为三种覆盖范围。

    • 单域名证书:只能用于单一域名,foo.com的证书不能用于www.foo.com
    • 通配符证书:可以用于某个域名及其所有一级子域名,比如*.foo.com的证书可以用于foo.com,也可以用于www.foo.com
    • 多域名证书:可以用于多个域名,比如foo.combar.com

    认证级别越高、覆盖范围越广的证书,价格越贵。

    还有一个免费证书的选择。为了推广HTTPS协议,电子前哨基金会EFF成立了 Let’s Encrypt,提供免费证书(教程工具)。

    拿到证书以后,可以用 SSL Certificate Check 检查一下,信息是否正确。

    二、安装证书

    证书可以放在/etc/ssl目录(Linux 系统),然后根据你使用的Web服务器进行配置。

    如果使用 Let’s Encrypt 证书,请使用自动安装工具 Certbot

    安装成功后,使用 SSL Labs Server Test 检查一下证书是否生效。

    三、修改链接

    下一步,网页加载的 HTTP 资源,要全部改成 HTTPS 链接。因为加密网页内如果有非加密的资源,浏览器是不会加载那些资源的。

    <script src="http://foo.com/jquery.js"></script>
    

    上面这行加载命令,有两种改法。

    <!-- 改法一 -->
    <script src="https://foo.com/jquery.js"></script>
    
    <!-- 改法二 -->
    <script src="//foo.com/jquery.js"></script>
    

    其中,改法二会根据当前网页的协议,加载相同协议的外部资源,更灵活一些。

    另外,如果页面头部用到了rel="canonical",也要改成HTTPS网址。

    <link rel="canonical" href="https://foo.com/bar.html" />
    

    四、301重定向

    下一步,修改 Web 服务器的配置文件,使用 301 重定向,将 HTTP 协议的访问导向 HTTPS 协议。

    Nginx 的写法

    
    server {
      listen 80;
      server_name domain.com www.domain.com;
      return 301 https://domain.com$request_uri;
    }
    

    Apache 的写法.htaccess文件)。

    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
    

    五、安全措施

    以下措施可以进一步保证通信安全。

    5.1 HTTP Strict Transport Security (HSTS)

    访问网站时,用户很少直接在地址栏输入https://,总是通过点击链接,或者3xx重定向,从HTTP页面进入HTTPS页面。攻击者完全可以在用户发出HTTP请求时,劫持并篡改该请求。

    另一种情况是恶意网站使用自签名证书,冒充另一个网站,这时浏览器会给出警告,但是许多用户会忽略警告继续访问。

    “HTTP严格传输安全”(简称 HSTS)的作用,就是强制浏览器只能发出HTTPS请求,并阻止用户接受不安全的证书。

    它在网站的响应头里面,加入一个强制性声明。以下例子摘自维基百科

    
    Strict-Transport-Security: max-age=31536000; includeSubDomains
    

    上面这段头信息有两个作用。

    (1)在接下来的一年(即31536000秒)中,浏览器只要向example.com或其子域名发送HTTP请求时,必须采用HTTPS来发起连接。用户点击超链接或在地址栏输入http://www.example.com/,浏览器应当自动将http转写成https,然后直接向https://www.example.com/发送请求。

    (2)在接下来的一年中,如果example.com服务器发送的证书无效,用户不能忽略浏览器警告,将无法继续访问该网站。

    HSTS 很大程度上解决了 SSL 剥离攻击。只要浏览器曾经与服务器建立过一次安全连接,之后浏览器会强制使用HTTPS,即使链接被换成了HTTP

    该方法的主要不足是,用户首次访问网站发出HTTP请求时,是不受HSTS保护的。

    如果想要全面分析网站的安全程度,可以使用 Mozilla 的 Observatory

    5.2 Cookie

    另一个需要注意的地方是,确保浏览器只在使用 HTTPS 时,才发送Cookie。

    网站响应头里面,Set-Cookie字段加上Secure标志即可。

    
    Set-Cookie: LSID=DQAAAK...Eaem_vYg; Secure
     
    参考:HTTP 网站升级到 HTTPS 。 - CSDN博客
    https://blog.csdn.net/liulangdeshusheng/article/details/52609958
     
     

    三、如何将网站升级为HTTPS协议?

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chanzhi2016/article/details/71706197

    基本概念:

    HTTP: 是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准,用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

     

    HTTPS: 是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

     

     

    很多用户目前对HTTPS持观望态度,当然网站升级HTTPS有利有弊,利当然是安全系数提升,降低劫持风险,弊端主要体现在速度上,由于证书验证、多次握手、CPU消耗等原因,https页面速度会被拖慢一点。

     

    谷歌、火狐等浏览器厂商也已经扛起HTTPS大旗,对于HTTP站点会提示不安全警告。而且像谷歌、百度等搜索引擎也早已相应HTTPS号召,都声称对HTTPS站点页面友好甚至优先抓取,排名靠前,当然具体实际实施情况就另当别论了,目前来看,谷歌做的要比百度更成熟一些。

     

     

     

    要让互联网站点都升级到HTTPS协议还需一段时间,但不可否认HTTPS是大势所趋。所以本文我们一起来了解下如何将网站升级到HTTPS协议。

     

    1.购买、下载SSL证书

    SSL证书有付费也有免费的,当然价格其实并不很高。之前我有整理过国内外几家知名的SSL商家,可供大家参考(http://blog.cnezsoft.com/blog/ssl-80138.html)。

     

    2.备份,备份,备份

    这是极其重要且必须的一步。即便你自认为技术深厚,对服务器熟悉也不要忽视升级前做好网站备份。

     

    3.安装证书

    不同厂家或都提供了相应的安装证书的解决方案,流程大同小异。这里我以免费SSL证书为例,在LAMP环境下给大家介绍如何安装证书。

     

    打开apache的配置文件httpd.conf,找到

    #LoadModule ssl_module modules/mod_ssl.so

    #Include conf/extra/httpd-ssl.conf

    删除行首的配置语句注释符号“#”

    保存退出。

     

     

    打开apache安装目录下conf/extra目录中的httpd-ssl.conf文件

    在配置文件中查找以下配置语句

    SSLCertificateFile conf/ssl.crt/server.crt 将服务器证书配置到该路径下

    SSLCertificateKeyFile conf/ssl.key/server.key 将服务器证书私钥配置到该路径下

    #SSLCertificateChainFile conf/ssl.crt/ca.crt 删除行首的“#”号注释符,并将中级CA证书 ca.crt配置到该路径下。

     

     

    添加SSL 协议支持语句,关闭不安全的协议和加密套件:

    SSLProtocol all -SSLv2 -SSLv3

     

     

    修改加密套件如下:

    SSLCipherSuite AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;

    保存退出,并重启Apache。检查HTTPS页面能否成功访问。

     

    4.301重定向

    考虑到SEO影响,须将之前的HTTP页面转为HTTPS。我们修改配置文件即可,这里我还是以LAMP环境为例,在.htaccess文件中加下面代码即可:

     

    RewriteEngine OnRewriteCond %{HTTPS} offRewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

     

     

    总结:

    本文向大家介绍了网站升级HTTPS时必要流程,具体细节或因服务器环境不同和SSL证书商家不同而存在一些差异,但总体大同小异。如过大家在网站升级HTTPS过程中遇到疑难困惑或有成功经验,欢迎一起分享交流。


    参考:如何将网站升级为HTTPS协议? - CSDN博客
    https://blog.csdn.net/chanzhi2016/article/details/71706197
     
     
     
     
     
  • 相关阅读:
    LR12_IE11报错,闪退
    loadrunner11无法启动IE9
    启动数据库失败
    测试代码
    python中的JSON(1)
    文件和异常(二)
    文件和异常(一)
    类(三)
    类(二)
    初识类(一)
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9641942.html
Copyright © 2011-2022 走看看