作者:猿话

链接:urlify.cn/bQZnYz

正文

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

那如何将一个http站点升级为https站点呢?

http与https的区别

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

目前获取CA证书有两种途径:

  1. 购买收费的CA证书

  2. 获取免费的证书

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

【系统架构】如何升级到https?一个脚本帮你搞定,且永久免费

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

【系统架构】如何升级到https?一个脚本帮你搞定,且永久免费

这对于小公司平台,甚至是个人站点来说,是一个不小的开支。

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 验证。

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 记录完成验证。

关注公众号【终端研发部】回复关键字“Java”获取Java面试题和答案。

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

回复 【idea激活】即可获得idea的激活方式

回复 【Java】获取java相关的视频教程和资料

回复 【SpringCloud】获取SpringCloud相关多的学习资料

回复 【python】获取全套0基础Python知识手册

回复 【2020】获取2020java相关面试题教程

回复 【加群】即可加入终端研发部相关的技术交流群

我从外包公司离职了…

最近面试Java后端开发的感受

Java 的 JSP 已经被淘汰了吗?

年前的一波内推,一个公司,两个职位!

淘宝为什么能抗住双 11 ?看完这篇文章你就明白了!

来,教你做个属于自己的 Markdown 编辑器

相信自己,没有做不到的,只有想不到的

在这里获得的不仅仅是技术!

喜欢就给个“在看

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

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

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

  2. 永久免费http升级到https

    http与https的区别 为了数据传输的安全,https在http的基础上加入了ssl协议,ssl协议依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密.要想将http升级为https,只 ...

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

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

  4. mysql批量修改http为https,墨涩网 - typecho系统升级全站https数据库批量替换网址/内容——墨涩网...

    我们的网站需要批量替换内容或者更换域名以及图床后,或者你和我一样就是为了升级全站HTTPS,需要大批修正一切文章的所用图片链接和一些文件链接地址,手动修正不太现实,因为一般这种连接比较多,难以准确查找 ...

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

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

  6. https 443 怎么改成80_阿里云购买免费https证书并用nginx配置代理详解(2020年9月)...

    现在各大网站都转型https协议了,连ios app上架都必须走https协议了,那么如何将我们普通的小网站统一变成https呢? 1.https证书购买及绑定域名 https证书都不便宜,现在服务器 ...

  7. 永久免费安装https方法

    假设运行环境为centos6.8,Web 服务器是 Nginx 1.12.0(因为我的生产环境是),python2.6.6 当前工作目录为 /root 获取certbot客户端 wget https: ...

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

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

  9. mitmproxy 安装,使用,抓取 HTTPS,以及python脚本编写

    mitmproxy 可以抓到非浏览器发起的请求,(很多别的抓包工具也可以,但是我平时图省事是只用浏览器开发者工具的) mitmproxy 能直接将抓到的http请求包引入到 python中 进行编辑, ...

  10. HTTPS成“新宠”,七牛云推出SSL证书免费申请 并宣布HTTPS调价

    HTTPS成为传输协议界的"新宠" 作为最大的流量入口,近年来,出于安全性的考虑,Google掀起了使用HTTPS的潮流,到目前为止Google全站已经有超过85%的链接启用了HT ...

最新文章

  1. USB鼠标失灵的解决办法
  2. Spring IOC 如何解决循环依赖?
  3. pycharm cant open file_PyCharm
  4. 一张正方形图片,伴随我一年半,敢问情绪的使用方法
  5. mysql 查询判断手机号
  6. 零编程基础的我是如何在 15 岁之前仅用 9 个月开发了 9 款 App?
  7. (转载)C语言中strlen()返回值类型为无符号数
  8. 第二篇: Silverlight -- 下载与安装
  9. 66. 查询分页数据
  10. 什么是App加壳,以及App加壳的利与弊
  11. 关于马尔科夫链的期望收益在matlab中的实现
  12. MacBook网络连接正常无法访问网页
  13. linux profiling 工具,高性能:LEP (LINUX EASY PROFILING) 工具介绍
  14. pytorch安装 镜像网站
  15. 微信小程序+百度AI OCR二代身份证识别
  16. 字符集编码(四):UTF
  17. 计算机无法识别相机,教您如果戴尔计算机无法检测到相机怎么办
  18. 书架:以书会友,以友博书,分享读书乐趣。
  19. 魔兽地图编辑器插件YDWE的使用与基本设置5 触发编辑器4 技能特效
  20. EffectCreator 6.1.0中文版 抖音短视频编辑工具

热门文章

  1. python实现合并多个excel中同名的sheet
  2. 麻省理工学院——人工智能公开课总结02
  3. 阜阳师范学院java,刘冬冬 - 阜阳师范学院 - 计算机与信息工程学院
  4. Ubuntu下设置开机启动项
  5. PPT修改尺寸(修改幻灯片大小)
  6. Android多功能视频播放器GSYVideoPlayer开发流程
  7. 每日哲学与编程练习3——无重复数字(Python实现)
  8. IDEA展示隐藏文件夹
  9. 达拉斯大学计算机硕士专业排名,德克萨斯大学达拉斯分校UTD计算机科学Computer Science专业排名第251-300位(2021年THE世界大学商科排名)...
  10. 一个华为人在华为工作十年的感悟