免费为网站加上HTTPS

前言

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

HTTPS是什么?

相对于http,你会发现https 多了一个 S,没错这个S 表示的就是  Secure 安全的意思。为何要加入这个? 主要是因为HTTP是明文传输的,若是被不法相关人截取了能够直接看到。而且在现在互联网下面 不少人都很是在意隐私,因此HTTPS已是趋势化的要求了。html


HTTPS证书如何得到?

咱们所知道的这个东西是要收费的,目前不少云服务商打着第一年免费的噱头和主机一块儿作活动(第二年就会收费的)。今天咱们要来讲的是如何免费获取HTTPS证书。linux

 

免费的安全?

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


image.png


image.png



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


而咱们要说的这个免费的SSL证书颁发机构就是被浏览器认为安全的机构,因此不必定是免费的就必定不安全。git


letsencrypt

letsencrypt 就是咱们要说的免费SSL证书颁发商。我我的在不少地方都用这家免费的,惟一的缺点就是每3个月证书就过时,就须要从新签。3个月主要就是为了安全。而关于如何获取的  letsencrypt 不少大神都写了不少脚本,让咱们能够傻瓜式的获取的。这里面很是出名的就是 ACME:github

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


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

智能推荐

相关文章
相关标签/搜索