免费为网站加上HTTPS
前言
最近有好几位同学直接微信赞助说快点更新文章。这个要和大家说声抱歉,的确很久没有写文章了。我们也不找借口,我会尽力保证多写文章。今天我们的主题来讲解 如何给自己的网站 加上HTTPS
HTTPS是什么?
相对于http,你会发现https 多了一个 S,没错这个S 表示的就是 Secure 安全的意思。为什么要加入这个? 主要是由于HTTP是明文传输的,如果被不法相关人截取了可以直接看到。并且在如今互联网下面 很多人都非常在乎隐私,所以HTTPS已经是趋势化的要求了。
HTTPS证书如何获得?
我们所知道的这个东西是要收费的,目前很多云服务商打着第一年免费的噱头和主机一起做活动(第二年就会收费的)。今天我们要来说的是如何免费获取HTTPS证书。
免费的安全?
其实https证书基本上都是安全的,因为现在的加密算法基本已经很难破解。这里面主要关注点应该在于 浏览器是否可以显示 绿标(或者安全锁)


而这个安全锁的显示 是浏览器内置了很多 信誉比较好的 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
如下图大家可以看看
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?


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


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 看看效果的

可以看到上图 我用绿色圈起来的地方就是 有效期 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
智能推荐
- Ubuntu Nginx下配置网站ssl实现https访问
- PAC 自动代理
- Jetbrains phpstorm pycharm 免费授权注册码
- Startssl 现在就启用 HTTPS,免费的!
- 【运维工具】logrotate 日志管理神器
免费为网站加上HTTPS的更多相关文章
- 记一次免费让网站启用HTTPS的过程
写在前面 个人网站运行将近2个月了,期间根据酷壳的一篇教程如何免费的让网站启用HTTPS做了一次,中间遇到问题就放下了.昨天孙三苗问我网站地址说要添加友链,出于好奇想看他网站长什么样,顺道也加一下友链 ...
- 给自己的网站加上HTTPS
前言 现在谷歌等厂商大力推行https协议,如果你的网站不支持https,在使用谷歌浏览器时,会被警告网站不安全.w(゚Д゚)w,不安全?哪里不安全了?OK,那我改成支持https好吧.关于http怎 ...
- 免费给自己的网站加 HTTPS
简介 本文是通过 Let's Encrypt 提供的免费证书服务,实现让自己的网站加上 HTTPS.我的网站 -- hellogithub,就是通过这种方式实现的 HTTPS,效果如下: Let's ...
- 如何免费的让网站启用https
本文源自酷壳:如何免费的让网站启用HTTPS 今天,我把CoolShell变成https的安全访问了.我承认这件事有点晚了,因为之前的HTTP的问题也有网友告诉我,被国内的电信运营商在访问我的网站时加 ...
- 分享一个免费SSL证书申请网站,给网站开启https协议 | 张戈博客
这些天,由于公司的业务需求,接触到了ssl证书和https协议.博客前几篇文章也分享了在WEB服务器上安装SSL证书,为网站开启https协议的教程,感兴趣的童鞋可以前往查看相关文章: <Lin ...
- IIS - 自动申请、部署Let's Encrypt的免费SSL证书(让网站实现HTTPS协议)
IIS - 自动申请.部署Let's Encrypt的免费SSL证书(让网站实现HTTPS协议) 2017-12-19发布:hangge阅读:161 一.HTTPS 协议介绍 1,什么是 HTTP ...
- web开发必看:你的网站支持https吗?
如果有一项技术可以让网站的访问速度更快.更安全.并且seo权重提升(百度除外),而且程序员不需要改代码就可以全站使用,最重要的是,不需要额外花钱,那有这么好的事情吗? HTTP通信协议是全球万维网ww ...
- 如何为网站启用HTTPS加密传输协议
前言 当今时代对上网的安全性要求比以前更高,chrome和firefox也都大力支持网站使用HTTPS,苹果也从2017年开始在iOS 10系统中强制app使用HTTPS来传输数据,微信小程序也是要求 ...
- 网站部署 HTTPS 中需要做的事情
这篇文章首发于我的个人网站:听说 - https://tasaid.com/,建议在我的个人网站阅读,拥有更好的阅读体验. 这篇文章与 博客园 和 Segmentfault 共享. 前端开发QQ群:3 ...
随机推荐
- 微信小程序 Button控件 点击传值给JavaScript
直接看例子吧: WXML:直接看Button,用“data-”(data-total)传值,后台如何获取,继续看下面JS代码. <view class="infothird" ...
- day01 进制转换与内存分布
今日重点: 1.进制之间的转换 进制:指的是进位的制度.进制主要有二进制.八进制.十六进制等,计算机底层运用的是二进制,为了方便阅读,通常会使用八进制或十六进制进行表示.在32位系统中,通常使用八进制 ...
- HDMI接口之HPD(热拔插)
HDMI (Pin 19)/DVI(Pin16)的功能是热插拔检测(HPD),这个信号将作为HDMI 源端(Source)是否发起EDID读,是否开始发送TMDS信号的依据.HPD是从HDMI显示器端 ...
- 【easy】349. Intersection of Two Arrays
找两个数组的交集(不要多想,考虑啥序列之类的,就是简单的两堆数求交集啊!!!最后去个重就好了) //LeetCode里用到很多现成函数的时候,苦手だな- //这个题的思路是,先sort,把两个vect ...
- 让CPU占用率曲线听你指挥
使用GetTickCount()和Sleep(): Code#include <stdio.h> #include <unistd.h> #include <time.h ...
- noj算法 踩气球 回溯法
描述: 六一儿童节,小朋友们做踩气球游戏,气球的编号是1-100,两位小朋友各踩了一些气球,要求他们报出自己所踩气球的编号的乘积.现在需要你编一个程序来判断他们的胜负,判断的规则是这样的:如果两人都说 ...
- Python-数据类型之列表
列表和元祖都属于序列类型,该序列内可以包含任意数据类型,且数据存储是有序的,索引从0到1 一:列表概述 1.1 如何定义一个列表 中括号,已逗号为分割符,可以放任意的数据类型,甚至是对象. li = ...
- Python学习(三十九)—— Django之Form组件
一.构建一个表单 假设你想在你的网站上创建一个简单的表单,以获得用户的名字.你需要类似这样的模板: <form action="/your-name/" method=&qu ...
- 咸鱼入门到放弃8--jsp<三>jsp内置对象
NO. 内置对象 类型 1 pageContext javax.servlet.jsp.PageContext 2 request javax.servlet.http.HttpServletRequ ...
- linux(CentOS)磁盘挂载数据盘
linux(CentOS)磁盘挂载数据盘:第一步:查看是否存在需要挂载的磁盘: sudo fdisk -l 第二步:为需要挂载的磁盘创建分区: sudo fdisk /dev/vdb 执行中:依次选择 ...
