Let's Encrypt 使用教程,免费的SSL证书,让你的网站拥抱 HTTPS

news/2024/5/10 13:36:18/文章来源:https://blog.csdn.net/weixin_34034670/article/details/91884306

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

这篇文章主要讲的就是如何让自己的网站免费从HTTP升级为HTTPS,使用的是 Let’s Encrypt的证书。实际上也就是一个Let’s Encrypt 免费证书获取教程 。 为什么要上HTTPS,说一个小故事。

从前有个网站,后来有个广告,没了

作为一个博客,自然不想让在被别人浏览的时候,出现莫名的广告(运营商劫持)。这时候,HTTPS的价值就体现出来了。 HTTPS的好处还有很多,但单单这一条,就够我花心思去升级了。 (其实主要目的是提升网站Biger :)

Let’s Encrypt 简介

如果要启用HTTPS,我们就需要从证书授权机构(以下简称CA) 处获取一个证书,Let’s Encrypt 就是一个 CA。我们可以从 Let’s Encrypt 获得网站域名的免费的证书。这篇文章也主要讲的是通过 Let’s Encrypt + Nginx 来让网站升级到HTTPS。

Certbot 简介

Certbot 是Let’s Encrypt官方推荐的获取证书的客户端,可以帮我们获取免费的Let’s Encrypt 证书。Certbot 是支持所有 Unix 内核的操作系统的,个人博客的服务器系统是CentOS 7,这篇教程也是通过在个人博客上启用HTTPS的基础上完成的。

获取免费证书

  1. 安装Certbot客户端
    yum install certbot
    
  2. 获取证书
    certbot certonly --webroot -w /var/www/example -d example.com -d www.example.com
    

    这个命令会为 example.com 和 www.example.com 这两个域名生成一个证书,使用 --webroot 模式会在 /var/www/example 中创建 .well-known 文件夹,这个文件夹里面包含了一些验证文件,certbot 会通过访问 example.com/.well-known/acme-challenge 来验证你的域名是否绑定的这个服务器。这个命令在大多数情况下都可以满足需求,

但是有些时候我们的一些服务并没有根目录,例如一些微服务,这时候使用 --webroot 就走不通了。certbot 还有另外一种模式 --standalone , 这种模式不需要指定网站根目录,他会自动启用服务器的443端口,来验证域名的归属。我们有其他服务(例如nginx)占用了443端口,就必须先停止这些服务,在证书生成完毕后,再启用。

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

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

这时候我们的第一生成证书已经完成了,接下来就是配置我们的web服务器,启用HTTPS。

Nginx 配置启用 HTTPS

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

    server {server_name diamondfsd.com www.diamondfsd.com;listen 443;ssl on;ssl_certificate /etc/letsencrypt/live/diamondfsd.com/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/diamondfsd.com/privkey.pem;location / {proxy_pass http://127.0.0.1:3999;proxy_http_version 1.1;proxy_set_header X_FORWARDED_PROTO https;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Host $host;}}server {server_name api.diamondfsd.com;listen 443;ssl on;ssl_certificate /etc/letsencrypt/live/api.diamondfsd.com/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/api.diamondfsd.com/privkey.pem;location / {proxy_pass http://127.0.0.1:4999;proxy_http_version 1.1;proxy_set_header X_FORWARDED_PROTO https;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Host $host;}}

主要是监听 443 端口,启用 SSL,并配置 SSL 的证书路径(公钥,私钥的路径)。 通过这些配置 我们就已经成功的完成了 Https 的启用。 现在打开我的博客 https://diamondfsd.com 就可以看到标有 安全 的字样。

alt

自动更新 SSL 证书

配置完这些过后,我们的工作还没有完成。 Let’s Encrypt 提供的证书只有90天的有效期,我们必须在证书到期之前,重新获取这些证书,certbot 给我们提供了一个很方便的命令,那就是 certbot renew。 通过这个命令,他会自动检查系统内的证书,并且自动更新这些证书。 我们可以运行这个命令测试一下

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.

alt这是因为我的api.diamondfsd.com生成证书的时候使用的是 --standalone 模式,验证域名的时候,需要启用443端口,这个错误的意思就是要启用的端口已经被占用了。 这时候我必须把nginx先关掉,才可以成功。果然,我先运行 service nginx stop运行这个命令,就没有报错了,所有的证书都刷新成功。

证书是90天才过期,我们只需要在过期之前执行更新操作就可以了。 这件事情就可以直接交给定时任务来完成。linux 系统上有 cron 可以来搞定这件事情。 我新建了一个文件 certbot-auto-renew-cron, 这个是一个 cron 计划,这段内容的意思就是 每隔 两个月的 凌晨 2:15 执行 更新操作。

15 2 * */2 * certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start"

--pre-hook 这个参数表示执行更新操作之前要做的事情,因为我有 --standalone 模式的证书,所以需要 停止 nginx 服务,解除端口占用。 --post-hook 这个参数表示执行更新操作完成后要做的事情,这里就恢复 nginx 服务的启用

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

crontab certbot-auto-renew-cron

至此,整个网站升级到HTTPS就完成了。 总结一下我们需要做什么

  1. 获取Let’s Encrypt 免费证书
  2. 配置Nginx开启HTTPS
  3. 定时刷新证书

鸣谢 Let’s Encrypt 组织以及所有该组织的贡献者支持者 为我们提供 免费的安全证书。

参考: Certbot centosrhel7-nginx 参考: Let’s Encrypt getting-startd 参考: Archlinux cron 参考: Nginx configuring-https-servers

转载于:https://my.oschina.net/bobchow/blog/3052876

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_820746.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

著名网站系统架构设计

2019独角兽企业重金招聘Python工程师标准>>> http://www.eb163.com/club/redirect.php?tid2203 WikiPedia 技术架构学习分享 YouTube 的架构扩展 Internet Archive 的海量存储浅析 LinkedIn 架构笔记 Tailrank 网站架构 Twitter 的架构扩展: 100 倍性能提升 财帮子…

DNN7.0.5source 源码建站及调试步骤

1.下载DotNetNuke_Community_07.00.05_Source.zip2.解压到桌面DotNetNuke_Community_Source,3.重命名DotNetNuke_Community_Source/website 下的release.config为web.config4.我下载的这个source包是没有bin 文件夹的,非常奇怪,所以呢复制了一…

lvs+keepalived实现LB热备实现网站高可用

在lvs高负载中,LB节点(也就是常说的DR)会存在单点问题;这里使用了keepalived来解决单点问题;实现冗余;看图操作;LB1:eth0:192.168.182.133 (vip:eth0:0 192.168.182.200…

【转】为什么大型网站前端使用 PHP 后台逻辑用 Java?

2019独角兽企业重金招聘Python工程师标准>>> 转自http://blog.sina.com.cn/s/blog_6aa178410101ftvl.html 最近纠结了一下,如果开发一个大型的网站,我到底应该使用php还是jsp,后台到底使用php还是用java,我的选择要么…

国外经典设计:13个漂亮的插画网站设计案例

很多网页设计趋势都是过眼云烟,但插画始终保持着一定的地位,是给你的网站创造出独特的外观和风格的好方法。今天,我们拥有一组有效的使用插画来添加个性和抓住用户的注意力网站的一些美丽的例子。 从小型和微妙的细节插画到全屏的插画背景&am…

云服务器Windows Server2012 为IIS发布的网站颁布证书

一、先决条件 本文内容需要提前配置好IIS服务器并发布网站 可参考本人博客:http://blog.csdn.net/luchengtao11/article/details/72283237 二、添加角色和服务 1.添加角色和功能 2.勾选AD服务 4.角色服务勾选 三、证书创建和绑定 1.创建证书 2.随便给一个已经发…

腾讯云Linux服务器安装Wordpress,一键建站入门教程

一、环境 笔者用的是腾讯云服务器1核1G的配置,操作系统是centos7.2 二、安装lnmp 在lnmp官网(https://lnmp.org/download.html)里找到最新版的链接。 目前的版本为1.5,链接是http://soft.vpser.net/lnmp/lnmp1.5.tar.gz 然后在服务器中运行以下命令进行安…

12个学习 CSS3 网站布局设计的优秀案例

网络上有很多的 CSS 画廊站点供大家对各类网站作品进行打分和评论,每天有数以百计的优秀网站被推荐上面,这对于网页设计师来说是很好的灵感来源。今天,我们选择了15赢得 CSS 设计大奖的优秀作品,帮助你学习网站布局设计。enjoy! 您…

使用python验证码识别来爆破网站后台

使用python验证码识别来爆破网站后台 在我的上一篇博客中,讲解了我用python来识别验证码的原理,对于有些人来说,他可能并不想知道验证码识别的原理,只是想寻找方法去识别验证码从而使用脚本登录网站或者爆破网站的密码。 这几天…

优化网站设计系列文章总结和导读

摘自:http://www.cnblogs.com/chenxizhang/archive/2013/05/20/3088196.html 概述 其实想写这方面的文章由来已久,这个系列文章的想法是参照雅虎团队提供的35条性能优化的最佳实践(其实最早的时候是14条),再结合我自己…

SharePoint 2013 配置我的网站 图文引导

博客地址:http://blog.csdn.net/FoxDave 本篇我们来讲述一下关于SharePoint中我的网站(My Sites)相关的东西。 我的网站是SharePoint 2013中面向终端用户(End User)的平台,在2013版本中它是SharePoint功能中…

【大型网站技术实践】初级篇:借助Nginx搭建反向代理服务器

一、反向代理:Web服务器的“经纪人” 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请…

网络的四层架构与网站的数据库的用户信息表的设计

转载于:https://www.cnblogs.com/sengling/p/5222532.html

网站性能扩展案例:每天30-50亿请求,300K QPS是如何炼成的

网站性能扩展案例:每天30-50亿请求,300K QPS是如何炼成的 Reduce Data广告服务网站(http://reducedata.com)如何扩展到每天300K QPS请求?分享经验如下: 1. 为大规模而设计,广告服务平台从一开始增长就很惊人&#xff0…

文件设置索引_咻咻SEO:上线3个月迟迟未收录,找大神才知道网站地图是错的,如何设置robots、sitemap...

一、网站地图/sitemap制作流程:XML:主要针对搜索引擎制作,提高网站各页面收录率;HTML:主要针对用户制作,索引用户浏览网站内容。Sitemap:谷歌制定规则,100个网页链接地址。提高蜘蛛工…

程序员经常去的网站

收集了一些程序员平时经常去的网站,还希望大家集思广益,多做补充 csdn http://www.csdn.net/java 中文站 http://www.java-cn.com/博客园 http://www.cnblogs.com/开源中国社区 http://www.oschina.net/安卓巴士 http://www.apkbus.com/看…

浅谈SEO翻倍提升网站流量

本文是在简单了解并且熟悉SEO技术的基础上加上自己的总结归纳,对于SEO还是一个长期的工程不是一天就能一下优化排名第一。下面就是我对SEO的一些见解: 一、关键字选择 内容相关搜索次数多,竞争小主关键词不可太宽泛主关键词也不可太特殊商业价…

网站开发div在Jquery中的鼠标事件失去焦点

网站div在Jquery中的鼠标事件失去焦点,今天在做网站开发的时候遇到了个问题,就是我在用Jquery做导航的时候,用到了Jquery的鼠标事件mouseout,但问题出来了,我有两个div,A的div包含了B的div,本来…

使用C#实现网站用户登录

我们在写灌水机器人、抓资源机器人和Web网游辅助工具的时候第一步要实现的就是用户登录。那么怎么用C#来模拟一个用户的登录拉?要实现用户的登录,那么首先就必须要了解一般网站中是怎么判断用户是否登录的。 HTTP协议是一个无连接的协议,也就…

小网站架构优化:从100并发抗到4000并发

前言: 很久前,在512M内存Access的VPS里,写过了一个经典的秋色园技术原理解析系列。后来的某一天,换上了1G内存MSSQL2000,秋色园又跑过了一个多年头。之后,秋色园和 CYQ.Data,也在一直默默的优化…