• Django + Nginx https部署实战(第二辑)


    如何使用Nginx把网站升级为Https?

    Https是Http协议的升级版,由于证书的引入,使得用户与网站之间的通讯变得更加安全。

    在使用https之前,我们必须了解的事情

    • 证书颁发机构
      证书颁发机构是一家知名且受信任的组织,它对网站进行验证以确保互联网更安全。访问者还可以了解他们正在访问安全的网站。证书颁发机构致力于使数字世界更加安全,重点在于保持互联网尽可能的安全。
      如果您不知道自己是否已连接到正版网站,您是否担心?网站的访问者必须了解他们正在访问的网站。仅当第三方验证与站点关联的组织时,才有可能。这就是证书颁发机构为您提供帮助的地方!
      它们仅在验证后才提供证书,并且数字证书包含有关拥有站点的实体的信息。站点的访问者可以快速检查证书的前提以及证书是否有效。如果不再认为该证书是可信任的,则CA也可以撤销该证书。有一个公共吊销列表,访问者可以在进入网站之前检查该列表。
    • 什么是数字证书?
      数字证书由可以将一对加密密钥与网站或组织相关联的文件组成。也可以假定它们是电子密码,可以使用公钥基础结构(PKI)技术确保通过Internet进行数据交换的安全。该技术可确保通过Internet进行安全的通信。
      密钥对由一个公共-私有密钥组成。私钥保持安全,公钥位于证书内。业务中的授权人员可以使用私钥对文档进行签名。公钥用于评估签名的有效性。
      这些证书的格式基于X.509标准。它由数字签名,公共密钥和建立实体身份的文档组成。还提到了证书颁发机构的信息。颁发的证书可用于代码签名,网站身份验证,文档签名等。
    • 证书颁发机构
      设备和浏览器信任多个证书颁发机构。要考虑的因素之一是运行的年数。尽管证书与几乎99%的浏览器兼容,但最好还是向后兼容。我们将在这里提供一些受信任的概述。
      DigiCert
      DigiCert成立于2003年,是PKI,SSL和IoT解决方案领域的知名品牌。他们还获得了2020年Frost&Sullivan年度全球TLS证书公司。
      该品牌提供采用最新技术的SSL证书,并支持2048位公共密钥加密(也提供3072位和4096位)。该产品还支持RSA公钥SHA-2算法和ECC公钥加密。
      RapidSSL
      RapidSSL是GeoTrust Inc的子公司,是受信任的证书颁发机构,成立于2003年。它以低成本和快速发布的标准和通配SSL证书而闻名​​,它拥有最新的加密标准和现代化的基础结构。
      它提供256位加密和99.9%的浏览器兼容性。您品牌的完美选择是受人尊敬的信任象征。
      GeoTrust
      GeoTrust是发起域验证证书的先锋CA,该证书如今在网络空间中占主导地位。Symantec在2010年从Symantec手中从Verisign手中收购了该公司,从而达到了开拓者的地位。
      它提供无与伦比的256位加密,SHA2和ECC支持,并在证书有效期内免费无限制地重新发行以及其他好处。它的低成本SSL选项为寻求增强安全性并改善SERP排名的企业主带来了福音。
      Thawte
      它成立于1995年,在南非成立,如今已在全球扎根,并颁发了945,000多个证书。它为您提供了很多好处,包括无限的服务器许可,免费的Thawte受信任的站点印章,完整的业务身份验证等等,而且价格低得惊人!
      科莫多
      Comodo提供了自由职业者可用于其博客网站和电子商务品牌的互联网安全解决方案。该产品提供256位加密,无限服务器许可和全面的客户支持。
      该品牌还因其世界一流的客户支持和创新产品而闻名。
      该品牌提供了全部TLS证书,并且已经提供了超过1亿个这样的证书。

    注意!申请证书的时候会让你验证域名,验证域名采用DNS的验证方法

    类似于:
    _dnsauth.auth.xxx(你的域名)
    解析为值xxxxxxx

    只把这项云解析之后,然后你的域名就可以认证成功了,这时候会发放一个证书压缩包在这里插入图片描述
    因为我项目本身要使用nginx作为Web框架,故我选择使用Nginx所需要的证书和key文件
    在这里插入图片描述
    然后我们便开始配置Nginx配置文件

    server {
      listen 443 ssl;
      server_name xxx; #用户服务器的域名
      ssl_certificate cert/serve.crt;  # 证书位置
      ssl_certificate_key cert/serve.key; # 用户key的位置
      ssl_session_timeout 5m;
      ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
      ssl_prefer_server_ciphers on;
      location / {
          proxy_pass xxx;  # 转发的地址
          ;
    }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在配置完成之后,一定不要忘了在服务器上打开443端口,否则网站将无法通过https方式进行访问。

    为了保证网站连接的安全,我们在80端口也开启监听设置转发,将对应域名的链接转发到443端口上。

    server {
        listen       80;
        server_name  xxx; # 域名
        return 301 xxx;  # https的地址
    } 
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这样,我们的一整套的http升级过程就完成了!

  • 相关阅读:
    在Windows上使用.NET部署到Docker 《让孩子们走出大坑》
    C++day4
    【LeetCode】1224. 最大相等频率
    Win11C盘变红怎么办?Win11C盘变红的清理方法
    【MySQL精通之路】MySQL的使用(9)-设置环境变量
    java 的抽象(abstract)和接口(interface)的区别
    搭建ELK+Filebead+zookeeper+kafka实验
    数组去重,数组去除空格
    ArcGIS JS API 4.23 Web服务器部署
    springboot实现SSE之牛刀小试
  • 原文地址:https://blog.csdn.net/ZYM66/article/details/127714559