http与https的区别

为了数据传输的安全,https在http的基础上加入了ssl协议,ssl协议依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。要想将http升级为https,只需要给http站点增加一个CA证书即可。

目前获取CA证书有两种途径:
1、 购买收费的CA证书
2、获取免费的证书

收费的CA证书各大服务提供商都有卖,如阿里云、腾讯云等。

收费的证书不便宜,从阿里云官方网站看,它的价格可以从几千元到上万元不等。

这对于小公司平台,甚至是个人站点来说,是一个不小的开支。
Letsencrypt是一个免费、自动化和开放的证书颁发机构,其颁发的证书一次有效期为三个月,但是只要能持续更新,基本可以永久使用。
关注公众号程序员小乐回复关键字“offer”获取算法面试题和答案。
今天推荐的这个脚本acme.sh,实现了 acme 协议, 可以帮你持续自动从Letsencrypt更新CA证书。下载地址如下:

https://github.com/Neilpang/acme.sh

安装 acme.sh

安装acme.sh很简单,一个命令即可:

curl https://get.acme.sh | sh

普通用户和 root 用户都可以安装使用。安装过程进行了以下几步:
1、把acme.sh安装到你的home目录下:

~/.acme.sh/

并创建 一个 bash 的 alias,方便你使用:alias acme.sh=~/.acme.sh/acme.sh
2、自动为你创建 cronjob,每天 0:00 点自动检测所有的证书。如果快过期了,需要更新,则会自动更新证书,安装过程不会污染已有的系统任何功能和文件,所有的修改都限制在安装目录中:~/.acme.sh/

生成证书

acme.sh 实现了 acme 协议支持的所有验证协议, 一般有两种方式验证:http 和 dns 验证。

http 和 dns 验证。
1、http 方式需要在你的网站根目录下放置一个文件, 来验证你的域名所有权,完成验证,然后就可以生成证书了。

acme.sh --issue -d mydomain.com -d
www.mydomain.com --webroot
/home/wwwroot/mydomain.com/

acme.sh 会全自动的生成验证文件, 并放到网站的根目录,然后自动完成验证。最后会聪明的删除验证文件,整个过程没有任何副作用。

如果你用的是apache服务器,acme.sh 还可以智能的从 apache的配置中自动完成验证,你不需要指定网站根目录:

acme.sh --issue -d mydomain.com --apache

如果你用的是nginx服务器,或者反代,acme.sh还可以智能的从 nginx的配置中自动完成验证,你不需要指定网站根目录:

acme.sh --issue -d mydomain.com --nginx

注意:无论是 apache 还是 nginx 模式,acme.sh在完成验证之后,会恢复到之前的状态,都不会私自更改你本身的配置。好处是你不用担心配置被搞坏,但也有一个缺点,你需要自己配置 ssl 的配置,否则,只能成功生成证书,你的网站还是无法访问https。但是为了安全,你还是自己手动改配置吧。

如果你还没有运行任何 web 服务,80 端口是空闲的, 那么 acme.sh 还能假装自己是一个webserver, 临时听在80 端口,完成验证:

acme.sh --issue -d mydomain.com --standalone

2、dns 方式,在域名上添加一条 txt 解析记录,验证域名所有权。
这种方式的好处是,你不需要任何服务器,不需要任何公网 ip,只需要 dns 的解析记录即可完成验证。不过,坏处是,如果不同时配置 Automatic DNS API,使用这种方式 acme.sh 将无法自动更新证书,每次都需要手动再次重新解析验证域名所有权。

acme.sh --issue --dns -d mydomain.com

然后,acme.sh 会生成相应的解析记录显示出来,你只需要在你的域名管理面板中添加这条 txt 记录即可。

等待解析完成之后, 重新生成证书:

acme.sh --renew -d mydomain.com

注意:第二次这里用的是 --renew

dns 方式的真正强大之处在于可以使用域名解析商提供的 api 自动添加 txt 记录完成验证。

acme.sh 目前支持 cloudflare, dnspod, cloudxns, godaddy 以及 ovh 等数十种解析商的自动集成。

copy/安装 证书

前面证书生成以后,接下来需要把证书 copy 到真正需要用它的地方。
注意:默认生成的证书都放在安装目录下:~/.acme.sh/,请不要直接使用此目录下的文件。例如,不要直接让 nginx/apache 的配置文件使用这下面的文件。这里面的文件都是内部使用,而且目录结构可能会变化。

正确的使用方法是使用 --installcert 命令,并指定目标位置,然后证书文件会被copy到相应的位置,例如:

acme.sh --installcert -d <domain>.com \--key-file /etc/nginx/ssl/<domain>.key \--fullchain-file /etc/nginx/ssl/fullchain.cer \--reloadcmd "service nginx force-reload"

一个小提醒,这里用的是 service nginx force-reload,不是 service nginx reload,据测试, reload并不会重新加载证书,所以用的 force-reload。

Nginx 的配置 ssl_certificate 使用 /etc/nginx/ssl/fullchain.cer,而非 /etc/nginx/ssl/.cer ,否则 SSL Labs 的测试会报 Chain issues Incomplete 错误。

–installcert命令可以携带很多参数,来指定目标文件。并且可以指定 reloadcmd, 当证书更新以后,reloadcmd会被自动调用,让服务器生效。

值得注意的是,这里指定的所有参数都会被自动记录下来,并在将来证书自动更新以后,被再次自动调用。

更新证书

目前证书在 60 天以后会自动更新,你无需任何操作。今后有可能会缩短这个时间,不过都是自动的,你不用关心。

更新 acme.sh

目前由于 acme 协议和 Letsencrypt CA 都在频繁的更新,因此 acme.sh 也经常更新以保持同步。

升级 acme.sh 到最新版 :

acme.sh --upgrade

如果你不想手动升级, 可以开启自动升级:

acme.sh --upgrade --auto-upgrade

之后, acme.sh 就会自动保持更新了。

你也可以随时关闭自动更新:

acme.sh --upgrade --auto-upgrade 0

出错怎么办:

如果出错, 请添加 debug log:

acme.sh --issue … --debug

或者:

acme.sh --issue … --debug 2

最后,本文并非完全的使用说明,还有很多高级的功能,更高级的用法请参看其他 wiki 页面。

地址:github.com/Neilpang/acme.sh/wiki

参考链接 :

我用一个脚本把系统升级到https,而且永久免费!​ :
https://mp.weixin.qq.com/s/g26LBvpTZfbNEQuQQa9mLQ

永久免费http升级到https相关推荐

  1. Pycharm社区版安装教程(永久免费,随时升级)

    首先进入JetBrain的官网(国内正常访问): https://www.jetbrains.com/ 第一眼看到的界面如下图所示: 然后找到我们的Pycharm专题页: 进入Pycharm的专题页面 ...

  2. CAD(dxf、dwg格式)文件的读取和显示,真正实现通过代码预览CAD文件,包含解析dwg、dxf文件,可以提取标注信息,可以转换为pdf、png、tiff、gif等6种格式的文件,可以永久免费实用

    真正实现通过代码预览CAD文件,包含解析dwg.dxf文件,可以提取标注信息,可以转换为pdf.png.tiff.gif等6种格式的文件,可以永久免费实用. 网上看了很多资料,不是缺这个就是少那个,反 ...

  3. 永久免费的pdf转换器

    pdfboss转换器(https://www.lihun360.com)是一个简单而强大的免费PDF转换器,可以用它把PDF转换成图片.文本等等. 假如你想找一个简单.快捷的选择,pdfboss转换器 ...

  4. http升级到https,永久免费

    现在很多站长都会考虑将自己的站点从http升级到https,不仅是基于安全的考虑,有的也是因为第三方平台的限制,如谷歌浏览器会将http站点标记为不安全的站点,微信平台要求接入的微信小程序必须使用ht ...

  5. 老板说“把系统升级到https”,我用一个脚本实现了,而且永久免费!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 现在很多站长都会考虑将自己的站点从http升级到https,不仅是 ...

  6. 完美,竟然用一个脚本就把系统升级到https了,且永久免费!

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 猿话 来源 | www.toutiao.com ...

  7. 漂亮!竟然用一个脚本就把系统升级到https了,且永久免费!

    基于安全的考虑,每个开发者或多或少都开发过Https的站点.但很不幸的是Hub哥还是一名编程新手的时候,入门Https,真的是绝望,起初浏览器一直提示服务拒载,等之后捣鼓通了接口,又提示证书过期,到底 ...

  8. 让你的网站从http免费升级为https

    一.问题 让网站(http://www.example.com )支持 https 协议,能正常访问( https://www.example.com)这个链接. 二.解决方案 https 其实就是通 ...

  9. 手把手教你 3 分钟搞定个人网站 http 免费升级到 https

    你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 推荐:https://www.xttblog.com/?p=5081 手把手教你 ...

最新文章

  1. 剖析Focal Loss损失函数: 消除类别不平衡+挖掘难分样本 | CSDN博文精选
  2. java 将3变为03,03 Java序列化引发的血案
  3. 通过Content Editor来增加页面的控制
  4. anaconda报错 ImportError: No module named conda.cli
  5. android so导致启动慢,谈谈Android NDK中动态链接库(.so文件)的优化
  6. python输出杨辉三角啊二维数组_用Python输出一个杨辉三角的例子
  7. 【翻译】What the f*ck JavaScript?(JavaScript你怎么这样啊???)
  8. arcgis面填充图案_如何将CAD里的图案填充导入ARCGIS中?
  9. 计算机页面格式和编排,论文开题格式
  10. IDEA 2021首个大版本发布,羊哥反手就是一个更新!附新亮点演示!
  11. PDF怎么转换成Word?教你两种简单有效的方法
  12. 关于网络营销基本理论的概述
  13. 微软ime日文输入法每次切换英文和假名输入状态时,画面中央总有图片提示,怎么消掉
  14. 2016php开发 饱和了吗,2016PHP程序员待遇和就业前景调查
  15. 计算时间差 html,计算时间差的公式
  16. 【Altium designer】PCB 各层简介
  17. Word中跨页表格都显示表头
  18. expected scalar type Long but found Int
  19. anaconda中安装PIV库
  20. codemirror 常见操作

热门文章

  1. Scrapy分布式、去重增量爬虫的开发与设计
  2. Python机器学习:逻辑回归算法以及多类分类
  3. ortools解决tsp_ortools系列:后话
  4. android开发复制文本,如何在Android应用中以编程方式复制文本?
  5. 解决Android log输出看不到的情况
  6. linux脚本解密,给shell脚本加密和解密的shell脚本
  7. 什么原数据更容易平稳_为什么老年人更容易患上艾滋病?
  8. 11.history命令历史
  9. ABP架构学习系列二:ABP中配置的注册和初始化
  10. CAN总线基础知识(二)