zoukankan      html  css  js  c++  java
  • 免费为网站加上HTTPS

    前言

    最近有好几位同学直接微信赞助说快点更新文章。这个要和大家说声抱歉,的确很久没有写文章了。我们也不找借口,我会尽力保证多写文章。今天我们的主题来讲解 如何给自己的网站 加上HTTPS

    HTTPS是什么?

    相对于http,你会发现https 多了一个 S,没错这个S 表示的就是  Secure 安全的意思。为什么要加入这个? 主要是由于HTTP是明文传输的,如果被不法相关人截取了可以直接看到。并且在如今互联网下面 很多人都非常在乎隐私,所以HTTPS已经是趋势化的要求了。


    HTTPS证书如何获得?

    我们所知道的这个东西是要收费的,目前很多云服务商打着第一年免费的噱头和主机一起做活动(第二年就会收费的)。今天我们要来说的是如何免费获取HTTPS证书。

    免费的安全?

    其实https证书基本上都是安全的,因为现在的加密算法基本已经很难破解。这里面主要关注点应该在于 浏览器是否可以显示 绿标(或者安全锁)


    image.png


    image.png



    而这个安全锁的显示 是浏览器内置了很多 信誉比较好的 SSL证书机构,这些机构颁发的SSL证书 浏览器认为是安全的 就会显示这个 安全锁。


    而我们要说的这个免费的SSL证书颁发机构就是被浏览器认为安全的机构,所以不一定是免费的就一定不安全。


    letsencrypt

    letsencrypt 就是我们要说的免费SSL证书颁发商。我个人在很多地方都用这家免费的,唯一的缺点就是每3个月证书就过期,就需要重新签。3个月主要就是为了安全。而关于如何获取的  letsencrypt 很多大神都写了很多脚本,让我们可以傻瓜式的获取的。这里面非常出名的就是 ACME:

    https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E   。


    接下来我们就按照 官方的文档说法,来给我的 个人博客 添加 https证书。我这里所用的环境是linux ubuntu。

    Step1:安装 acme.sh 脚本

    #安装很简单,大家看我上面的链接文档就可以很清楚,我这里再给大家照本宣科下
    #执行了如下命令之后 会在 ~/.acme.sh/ 进行安装,并且会自动创建 alias acme.sh=~/.acme.sh/acme.sh 和 crontab
    curl  https://get.acme.sh | sh

    如下图大家可以看看

    image.png

    Step2:生成证书

    我这里直说一个方式,暴力简单方便 可以支持泛域名。由于我们说的这个大神脚本 指定 dnsapi,并且我也建议大家将域名解析放在dnspod 非常方便。

    如下命令非常简单


    export DP_Id="1234"
    export DP_Key="sADDsdasdgdsf"
    acme.sh --issue --dns dns_dp -d *.54php.cn --debug


    如何获取 DP_ID 和  DP_Key?


    image.png

    image.png


    执行过程大概需要1 ~ 5分钟,期间会在dnspod 自动通过api添加一条 txt记录的


    image.png


    image.png

    Step3:nginx 配置证书

    核心配置如下,其中里面的 ssl_certificate 和 ssl_certificate_key 可以看到就是我们上面截图的东西。配置好了就reload nginx 就好了

        listen 443 ssl;
        ssl_certificate /home/ubuntu/.acme.sh/*.54php.cn/fullchain.cer;
        ssl_certificate_key /home/ubuntu/.acme.sh/*.54php.cn/*.54php.cn.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA;
        ssl_session_cache shared:SSL:50m;


    效果展示

    大家可以访问 https://www.54php.cn 看看效果的


    image.png


    可以看到上图 我用绿色圈起来的地方就是 有效期 3月26日 到 6月24日。有同学可能发现 哎 为什么你的浏览器里面没有 安全锁,是因为我刚开始写博客的时候 很多图片用的就是http ,而如果在https 中混合使用 http 就会出现混合情况,就不会显示 安全锁。


    注意事项

    No1:网站要同时支持https和http ,nginx配置要当心

     listen 443 ssl;
     ssl on;

    主要区别就是上面的,如果配置了 ssl on  那么就会强制走https协议。所以一般我们是使用最上面第一行代码


    No2:微信小程序出现 request:fail ssl hand shake error

    在我们使用acme.sh 生产了很多 证书文件
    
    如果你使用如下配置就会不对(android 测试机器已经发现问题)
    ssl_certificate /home/ubuntu/.acme.sh/*.54php.cn/*.54php.cn.cer;
    ssl_certificate_key /home/ubuntu/.acme.sh/*.54php.cn/*.54php.cn.key;
    
    正确的是应该是
    
    ssl_certificate /home/ubuntu/.acme.sh/*.54php.cn/fullchain.cer;
    ssl_certificate_key /home/ubuntu/.acme.sh/*.54php.cn/*.54php.cn.key;


    大家对比下 就可以发现了。而具体原因还要分析下,肯定是缺少了中间证书导致的,后面我会发一篇文章专门来解答 每个证书到底是干什么的。


    原文地址:免费为网站加上HTTPS
    标签:https   免费   acme   http   54php   ssl   

    智能推荐

  • 相关阅读:
    enumerate函数和zip函数返回的对象,都需要用list()函数转换为列表
    zip函数
    列表和元组的互相转换
    元组和列表的区别
    帮小朋友写的第一个程序
    remove del pop的区别
    如何运用Linux进行查看tomcat日志
    Linux大全
    liunx中组合查询的命令
    常见的问题
  • 原文地址:https://www.cnblogs.com/apanly/p/10604530.html
Copyright © 2011-2022 走看看