把网站免费从HTTP升级为HTTPS

使用 Let’s Encrypt的免费证书让网站升级为HTTPS,那么如何使用 Let’s
Encrypt的免费证书让网站升级为HTTPS呢?
或许你在一个博客上看到右下角,或者时不时的弹出广告,这种就是运营商劫持,你不想让它这样,这时候,HTTPS的价值就能表现出来了。HTTPS的好处还有很多,但仅此这一条,就够我们花心思去升级我们的博客系统了。

1 .来了解一下什么是Let’s Encrypt

  Let's Encrypt 就是一个 证书。如果要启用HTTPS,我们就需要从授权机构(以下简称CA) 处获取一个证书,而从 Let's Encrypt ,我们可以获得网站域名的免费的证书。

2 .Certbot 简介

     Certbot 是Let's Encrypt官方推荐的获取证书的客户端,可以帮我们自动获取免费的Let's Encrypt 证书。Certbot 是支持所有 Unix 内核的操作系统的,本文的例子是基于CentOS 7来讲解的。

3 获取免费证书

3-1 安装Certbot客户端

$ yum install certbot                          # CentOS
$ apt-get update && apt-get install certbot    # Ubuntu
$ apk add --no-cache certbot                   # 用Docker alpine:nginx构建的容器

3-2 获取证书

certbot certonly --webroot -w /var/www/html/awaimai -d awaimai.com -d www.awaimai.com

上面的这个命令行会为 awaimai.com 和 www.awaimai.com 这两个域名生成一个证书。使用–webroot 模式会在/var/www/awaimai中创建.well-known 文件夹。

此文件夹包含一些验证文件,certbot 会通过访问 example.com/.well-known/acme-challenge验证您的域有没有绑定到此服务器。

证书生成后,我们可以在/etc/letsencrypt/live/查看目录下域名对应的文件夹,里面存放了指向证书的一些快捷方式。

当然,我们也可以用–config-dir指定保存证书的路径:

certbot certonly --webroot -w /var/www/html/awaimai -d awaimai.com -d www.awaimai.com --config-dir /etc/nginx/conf.d/certs

certbot提供很多的参数可以用,可参考这里
https://certbot.eff.org/docs/using.html#configuration-file
3-3 standalone模式
在大多数情况下,这个命令都可以满足需求。
但是有时我们的某些服务没有根目录,例如一些微服务,这时候使用 --webroot 就走不通了。

certbot 还有另外一种模式–standalone , 此模式不需要指定网站根目录,它将自动启用服务器的端口443以验证域名的归属。

我们有其他例如nginx的服务,它占用了443端口,我们就要先停止这些服务,在生成证书完毕后,我们再启用这些服务。

certbot certonly --standalone -d example.com -d www.example.com

至此,我们的第一证书生成已完成。下一步是配置我们的Web服务器并启用HTTPS。

4 Nginx 配置启用 HTTPS

我的配置是使用的是Nginx 服务器来转发请求,这里贴一下我的Nginx配置。

server {listen 80;server_name www.awaimai.com awaimai.com;rewrite ^(.*) https://www.awaimai.com$1 permanent;
}server {listen       443 ssl;ssl          on;server_name  www.awaimai.com;root         /var/www/html/awaimai;index        index.php;ssl_certificate /etc/nginx/conf.d/certs/live/awaimai.com/fullchain.pem;ssl_certificate_key /etc/nginx/conf.d/certs/live/awaimai.com/privkey.pem;location ~ .php$ {try_files $uri =404;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}location ~ /.ht {deny all;}}

配置主要是监听 443 端口和启用 SSL,并配置了 SSL 的证书路径(公钥,私钥的路径),通过这些配置,我们就可以成功启用Https了。
你打开网站的时候就可以看到标有 安全 的字样。比如:

5 自动更新 SSL 证书

配置完这些后,我们的工作尚未完成。
Let’s Encrypt 提供的证书只有90天的有效期,我们必须在这些证书过期之前重新获得它们。有什么办法呢?

certbot 给我们提供了一个很方便的命令,那就是

certbot renew                                        # 使用【默认配置目录】的更新命令
certbot renew --config-dir /etc/nginx/conf.d/certs   # 使用【自定义配置目录】的更新命令

使用此命令,他将自动检查系统中的证书并自动更新它们。

注意:更新完成后需要重启Nginx:nginx -s reload。
我们可以运行这个命令测试一下

certbot renew --dry-run

如果运行的时候出现了这个错误:

Attempting to renew cert from /etc/letsencrypt/renewal/api.diamondfsd.com.conf produced an unexpected error: At least one of the required ports is already taken.. Skipping.
这是因为生成证书的时候使用的是 --standalone 模式。

这个模式在验证域名时,此模式需要启用端口443。此错误意味着要启用的端口已被占用。

这时候必须先关掉nginx,运行以下命令:

nginx -s stop

运行这个命令,没有报错的话,也就是所有的证书都刷新成功。证书是90天才过期,我们只需要在过期之前执行更新操作就可以了。

当然,这种不用我们每次去更新,我们容易忘记的,可以用linux的定时任务来完成。用 crontab做一个定时任务就可以了

新建了一个文件 certbot-auto-renew-cron,写上 cron 计划:

15 2 * */2 * certbot renew --pre-hook "nginx -s stop" --post-hook "nginx -s start"  # standalone模式
15 2 * */2 * certbot renew --post-hook "nginx -s reload"

命令的意思就是:每隔 两个月的 凌晨 2:15 执行更新操作。

–pre-hook 表示执行更新操作之前要做的事情。

–standalone模式的证书需要停止 nginx 服务,解除端口占用。

–post-hook 表示执行更新操作完成后要做的事情,这里就恢复 nginx 服务的启用

最后我们用 crontab 来启动这个定时任务

crontab certbot-auto-renew-cron

至此,整个网站升级到HTTPS就完成了。

6 删除证书

删除所有证书:

$ sudo certbot delete

删除指定证书:

$ sudo certbot delete --cert-name example.com

删除指定目录下的指定证书:

$ certbot delete --cert-name example.com --config-dir /etc/nginx/conf.d/ssl

把网站免费从HTTP升级为HTTPS相关推荐

  1. 网站如何从http升级成https

    基本概念: HTTP: 是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准,用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少. HT ...

  2. 免费申请下载SSL证书与证书的安装部署教程,网站服务由网站由http协议升级为https协议

    文章目录 相关技术术语 SSL SSL证书 HTTPS 证书申请 证书安装 在Tomcat服务器安装SSL证书 示例使用 阿里云SSL证书服务 相关技术术语 SSL 安全套接层SSL(Secure S ...

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

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

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

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

  5. pfx证书密码怎么查询_网站是HTTP?10分钟变成HTTPS!域名免费添加配置SSL证书,变成https//环境...

    对于小程序request请求需要https域名.navigator.geolocation定位也需要在https环境下才可以生效等问题: 前端开发越来越需要https环境来来测试一下API接口和各类问 ...

  6. 永久免费http升级到https

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

  7. 3 年9.9元,网站从HTTP升级到HTTPS

    上一次,我们完成域名解析后,发现浏览器地址栏里的域名被提示为不安全,就是因为它还是个宝宝,没有升级为 HTTPS 证书. 那怎么升级为 HTTPS 证书呢?可以直接通过阿里云购买 SSL 证书,但特么 ...

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

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

  9. 网站HTTP升级为HTTPS

    文章目录 绪论 申请证书 安装证书 设置跳转 绪论 2019年11月2日,网站从http升级到https 以下为详细操作,主要有3个步骤. 申请证书 首先SSL证书有以下3中类型 DV(域名型):个人 ...

最新文章

  1. mac中flutter配置
  2. 富士通服务器 css灯亮,富士通空调指示灯故障含义-富士通空调指示灯代码
  3. 哪个更快:Java 堆还是本地内存
  4. java 中的访问修饰符
  5. C++ 标准库 书籍学习记录笔记 第5章
  6. unas基于_flunas
  7. windows vs编译环境 python_Python虚拟环境使用(Windows)
  8. ScrollView 里面捕获OnTouchMove事件
  9. Android模拟器安装apk应用程序
  10. android+抓取直播源,直播rtmp源地址抓取软件
  11. 终极算法——第五章:进化学派:自然的学习算法
  12. Adobe全系列软件介绍
  13. 最新版:如何到Redhat官网下载RedHat镜像及申请试用安装序号
  14. android expandablelistview横向,expandableListView 总结
  15. 64位java没有javaw.exe_javaw.exe路径错误导致eclipse无法启动
  16. ubuntu 9.10安装sopcast gmlive 成功(带文件下载)
  17. 深度学习之 梯度消失与爆炸原因公式推导
  18. Ubuntu 最好用的CHM阅读器KchmViewer
  19. Linux系统磁盘高级应用适合初学者
  20. 2021年全球望远镜收入大约1161.6百万美元,预计2028年达到1275百万美元

热门文章

  1. 工厂模式(简单工厂模式、工厂方法模式优缺点,使用场景)
  2. PBDB Data Service: Most prevalent taxa(最普遍的分类群)
  3. Kdevelop使用技巧总结
  4. cocos Creator键盘按键事件实现人物移动
  5. 在CSDN里怎样转发别人博客
  6. 2018最新传智播客黑马python15期
  7. VirtualBox虚拟机闪退后如何重新打开
  8. 关于计算机的英语演讲稿三分钟,关于计算机的英语演讲稿.doc
  9. kotlin coroutines 协程教程-入门用法
  10. 使用idea查看Java字节码