Nginx 通过 certbot 为网站自动配置 SSL 证书并续期

news/2024/5/10 2:17:04/文章来源:https://blog.csdn.net/wangzan18/article/details/89579427

一、背景知识

1.1、http 和 https 是什么?

简单来说,http 是一个传输网页内容的协议,比如你看到的 http 开头的网站 http://www.163.com ,其网页上的文字、图片、 CSS 、 JS 等文件都是通过 http 协议传输到我们的浏览器,然后被我们看到。

Nginx 通过 certbot 为网站自动配置 SSL 证书并续期

而 https 可以理解为“ HTTP over SSL/TLS ”,好端端的 http 为什么需要“ over SSL/TLS ”呢,因为 http 是明文传输的,通过 http 协议传输的内容很容易被偷看和篡改,为了安全(你肯定不想被人偷看或者篡改网页内容吧,比如网站银行密码什么的。)就为 http 协议再加上了一层 SSL/TLS 安全协议,所以就有了 https 。

1.2、SSL/TLS 是什么?

“ HTTP over SSL/TLS ”字面意思就是带”安全套接层”的 http 协议,内心纯洁的同学也可以理解为“带安全套的 http ”,因为带了安全套,所以当然会比较安全。其中 SSL 是“ Secure Sockets Layer ” 的缩写,是“安全套接层”的意思。 TLS 是 “Transport Layer Security” 的缩写,是 ” 传输层安全协议 ” 的意思。 SSL 和 TLS 是同一个东西的不同阶段,理解为同一个东西也行,都是安全协议就对了。

Nginx 通过 certbot 为网站自动配置 SSL 证书并续期

1.3、为什么要部署 https?

说到底,就是 https 更安全。甚至为了安全,一个专业可靠的网站, https 是必须的。 Firefox 和 Chrome 都计划将没有配置 SSL 加密的 http 网站标记为不安全(貌似 Firefox 50 已经这么干了),目前它们也正在联合其他相关的基金会与公司推动整个互联网 https 化,现在大家访问的一些主要的网站。如 Google 多年前就已经全部启用 https ,国内的淘宝、搜狗、知乎、百度等等也全面 https 了。甚至 Google 的搜索结果也正在给予 https 的网站更高的排名和优先收录权。

1.4、怎么部署 https 呢?

你只需要有一张被信任的 CA ( Certificate Authority )也就是证书授权中心颁发的 SSL 安全证书,并且将它部署到你的网站服务器上。一旦部署成功后,当用户访问你的网站时,浏览器会在显示的网址前加一把小绿锁,表明这个网站是安全的,当然同时你也会看到网址前的前缀变成了 https ,不再是 http 了。

Nginx 通过 certbot 为网站自动配置 SSL 证书并续期

1.5、怎么获得 SSL 安全证书呢?

理论上,我们自己也可以签发 SSL 安全证书,但是我们自己签发的安全证书不会被主流的浏览器信任,所以我们需要被信任的证书授权中心( CA )签发的安全证书。而一般的 SSL 安全证书签发服务都比较贵,比如 Godaddy 、 GlobalSign 等机构签发的证书一般都需要20美金一年甚至更贵,不过为了加快推广 https 的普及, EEF 电子前哨基金会、 Mozilla 基金会和美国密歇根大学成立了一个公益组织叫 ISRG ( Internet Security Research Group ),这个组织从 2015 年开始推出了 Let’s Encrypt 免费证书。这个免费证书不仅免费,而且还相当好用,所以我们就可以利用 Let’s Encrypt 提供的免费证书部署 https 了。那么怎么获得 Let’s Encrypt 安全证书,并且将它部署在自己的网站服务器上呢?这就是这篇文章要讲的内容了。

二、Let’s Encrypt 及 Certbot 简介

前面已经介绍过, Let’s Encrypt 是 一个叫 ISRG ( Internet Security Research Group ,互联网安全研究小组)的组织推出的免费安全证书计划。参与这个计划的组织和公司可以说是互联网顶顶重要的先驱,除了前文提到的三个牛气哄哄的发起单位外,后来又有思科(全球网络设备制造商执牛耳者)、 Akamai 加入,甚至连 Linux 基金会也加入了合作,这些大牌组织的加入保证了这个项目的可信度和可持续性。

Nginx 通过 certbot 为网站自动配置 SSL 证书并续期

后来 ISRG 的发起者 EFF (电子前哨基金会)为 Let’s Encrypt 项目发布了一个官方的客户端 Certbot ,利用它可以完全自动化的获取、部署和更新安全证书。这真是非常容易、方便呀,所以我们就可以直接使用官方客户端,不需要再使用第三方的工具了。虽然第三方工具也可以使用,但是官方工具更权威,风险也更小,而且遇到问题也更容易解决,毕竟有官方的支持。何况 Certbot 确实非常方便,也比所有的第三方工具都更方便,何乐而不用呢?

2.1、Authenticators和Installers

Certbot支持两种类型的plugin,一种是用来获取和安装证书的,成为称为Authenticators;
另外一种是用来安装证书的,称为Installers。有的plugin支持一种,有的两种都支持,如nginx。
Authenticators plugin使用certonly命令来获取证书,而Installers plugin使用install命令来安装证书。

22、plugin说明

下面列举几个常用的plugin作简要说明:

  • Webroot:本地有运行webserver并且有能力修改其配置,就可以用该种方式(创建隐藏文件.well-known),获取证书时无需暂停webserver的运行。
  • Standalone:服务器未运行webserver可以使用该方式,要保持80或443端口开放。
  • Nginx:自动获取和安装证书(自动修改配置文件)。

三、Certbot 为 nginx 配置证书

3.1、安装certbot

Certbot 的官方网站是 https://certbot.eff.org/ ,打开这个链接选择自己使用的 web server 和操作系统,EFF 官方会给出详细的使用方法,以下以本网站域名( bbs.wzlinux.com )举例。

Nginx 通过 certbot 为网站自动配置 SSL 证书并续期

我们的系统环境为 CentOS 7,Web 服务器为 epel 源中的 nginx,只是为了掩饰安装证书,没有做什么网页,大家了解这个过程为主,我们使用下面命令进行安装 certbot。

yum install certbot python2-certbot-nginx

3.2、生成证书

我们在使用 certbot 生成证书之前,要把域名解析到当前的服务器,使用令生certbot --nginx成证书,并且会帮我们自动配置到 nginx 上面,过程中需要我们输入邮箱地址。

[root@lnmp-1 ~]# certbot --nginx
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): wangzan18@126.com
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Starting new HTTPS connection (1): supporters.eff.org
No names were found in your configuration files. Please enter in your domain
name(s) (comma and/or space separated)  (Enter 'c' to cancel): bbs.wzlinux.com
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for bbs.wzlinux.com
Waiting for verification...
Cleaning up challenges
Resetting dropped connection: acme-v02.api.letsencrypt.org
Deploying Certificate to VirtualHost /etc/nginx/nginx.confPlease choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Redirecting all traffic on port 80 to ssl in /etc/nginx/nginx.conf- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://bbs.wzlinux.comYou should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=bbs.wzlinux.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -IMPORTANT NOTES:- Congratulations! Your certificate and chain have been saved at:/etc/letsencrypt/live/bbs.wzlinux.com/fullchain.pemYour key file has been saved at:/etc/letsencrypt/live/bbs.wzlinux.com/privkey.pemYour cert will expire on 2019-07-25. To obtain a new or tweakedversion of this certificate in the future, simply run certbot againwith the "certonly" option. To non-interactively renew *all* ofyour certificates, run "certbot renew"- Your account credentials have been saved in your Certbotconfiguration directory at /etc/letsencrypt. You should make asecure backup of this folder now. This configuration directory willalso contain certificates and private keys obtained by Certbot somaking regular backups of this folder is ideal.- If you like Certbot, please consider supporting our work by:Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donateDonating to EFF:                    https://eff.org/donate-le

按照提示输入自己的信息即可,如果希望自己手动配置 nginx 证书,可以使用下面的命令。

certbot --nginx certonly

3.3、配置证书

目前已经自动帮我们配置证书了,我们可以看下配置的形式,后续可以自己配置。

server {server_name bbs.wzlinux.com;   # managed by Certbotroot         /usr/share/nginx/html;# Load configuration files for the default server block.include /etc/nginx/default.d/*.conf;location / {}error_page 404 /404.html;location = /40x.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}listen [::]:443 ssl ipv6only=on; # managed by Certbotlisten 443 ssl; # managed by Certbotssl_certificate /etc/letsencrypt/live/bbs.wzlinux.com/fullchain.pem; # managed by Certbotssl_certificate_key /etc/letsencrypt/live/bbs.wzlinux.com/privkey.pem; # managed by Certbotinclude /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbotssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot}server {if ($host = bbs.wzlinux.com) {return 301 https://$host$request_uri;} # managed by Certbotlisten       80 ;listen       [::]:80 ;server_name bbs.wzlinux.com;return 404; # managed by Certbot}

3.4、更新证书

既然已经按照好了,我们可以查看一下证书的安装情况。

Nginx 通过 certbot 为网站自动配置 SSL 证书并续期
Nginx 通过 certbot 为网站自动配置 SSL 证书并续期

出于安全策略, Let’s Encrypt 签发的证书有效期只有 90 天,所以需要每隔三个月就要更新一次安全证书,虽然有点麻烦,但是为了网络安全,这是值得的也是应该的。好在 Certbot 也提供了很方便的更新方法。
我们可以在 www.ssllabs.com 测试证书是否正常。

Nginx 通过 certbot 为网站自动配置 SSL 证书并续期

  • 测试一下更新,这一步没有在真的更新,只是在调用 Certbot 进行测试。
certbot renew --dry-run

建议在服务器上面添加一个定时任务,让服务器定时请求进行更新。

0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew

最后祝愿我们所有的站点都升级为 https,让 https 人人都可以用得起。

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

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

相关文章

详细的图文介绍如何利用XAMPP本地建站的环境配置教程

WordPress 是一个简便快捷,用途广,人气旺的一个开源的博客建站程序。很有很多等您去发现。 简便快捷:在性能上易于操作、易于浏览; 用途广:可以建博客,可以建企业的官网等等。 人气旺:这个好处就…

php或js判断网站访问者来自手机或者pc端源码

很多时候也可以通过逻辑程序来进行判断,如PHP、JS是常用的两种识别访问设备类型的常用方法。 原理都是采用识别访问客户端的HTTP_USER_AGENT,然后进行关键字匹配进行确定设备类型,对于伪造HTTP头的就区分不出来了。 区分设备类型然后要做的就…

SQL注入全过程,含实例初步注入--绕过验证,直接登录安全较低公司网站登陆框如下:可以看到除了账号密码之外

SQL注入全过程,含实例 初步注入--绕过验证,直接登录 公司网站登陆框如下: 可以看到除了账号密码之外,还有一个公司名的输入框,根据输入框的形式不难推出SQL的写法如下:   SELECT * From Table WHERE NameXX and Pass…

使用libsvm对政府网站访问数据的分析和预测

创新性 选取题材,政府网站访问数据。想通过使用人工智能的方法,根据已有数据建立模型,对新的访问数据进行鉴别,区分网站访问是否为正常访问,从而进行一些业务处理。更进一步,预测哪些是危险访问&#xff0…

看透 Spring MVC 源代码分析与实践——网站基础知识

每天都会分享Java架构文章,喜欢的朋友关注我。ps:文末有彩蛋,惊喜等着你 网站架构及其演变过程 基础结构 网络传输分解方式: 标准的 OSI 参考模型TCP/IP 参考模型海量数据的解决方案 缓存和页面静态化缓存通过程序直接保存在内…

用户在电商网站中购买成功了,那么在微服务中经历了什么?

当我傻啊,用户在电商网站购买成功,还在微服务中,那肯定就是有一套微服务架构的电商系统。 设计一套电商系统还不简单 简单想象一下,既然是一个电商系统,有用户去购买,就肯定得有一个用户模块,…

JAVA爬取网站查询网络IP所在地

JAVA爬取网站查询网络IP所在地 网络中我们上网都是一个ip地址,在获取对象网络ip的时候,如果想查询他所在网络的地址怎么搞呢?上代码 1.写一个方法通过站长工具网站查询到你输入的ip的地址,需要用URL去爬取网站数据 /**ip就是需要…

建站技术是一锤子买卖,而建站服务则是长久性的共赢吗?

近年来,服务外包需要越来越多,业务也越来越多样化,特别是IT服务外包。随着资本市场的进入,人力成本的提升,素质教育与实际工作环境的脱钩,可谓是一将难求,所以很多公司或单位开始将目光关注到第…

手机微信小程序公众号交友平台网站定制开发,相亲网站系统建设,婚恋相亲网站制作

10几年的技术团队,专业定制交友网站开发,交友平台网站建设,婚恋网站平‌‌‌‌台开发建设,可仿百合网,世纪佳缘网,支持电脑版手机版微信版小程序版APP版,由10年的技术团队专业定制,需…

网站站内、站外链接优化技巧与作用

其实网站站内链接优化和站外链接优化一样重要,两者是相辅相成的,可能在对不同的搜索引擎的时候有些不一样,在相同条件下百度更加注重的是内容,谷歌更加注重的是链接,所以这两个都要同时做好才能让网站对搜索引擎更加友…

国际版云购网站代码开发实现案例

最近把之前的中文版元购夺宝网站做了改变,感觉还是比较不错的,算是高大上国际版云购网站代码开发实现案例,现在分享给大家看看。 预览效果图: function is_php($version 5.0.0){static $_is_php;$version (string)$version;if …

Google有三个.cn网站可以访问了,但它们只面向开发者

12 月 8 日,Google 在北京举办了一场规模空前的开发者活动,推出了三个不需科学上网就能访问的子站点。 developers.google.cn firebase.google.cn developer.android.google.cn 虽然 Google 早在 2010 年就正式退出了中国市场,但它在开发者…

Nginx之坑:完全理解location中的index,配置网站初始页

文章目录index指令的作用index指令详解基本内容(中文文档和官方文档都可见):核心内容(中文文档没有或一笔带过,而官方文档作详细解释):实例Nginx中文文档Nginx官方文档吐槽index指令的作用 在前…

2019fresco依赖_在2019年建立一个无依赖网站

我的新改进个人网站的屏幕截图 经过几年的基本无视后,我最近决定是时候刷新我的个人站点了 。 先前的迭代结合了Gulp和Bower,并结合了Susy(网格系统的Sass库)(版本2,而不是最新的版本3)。 我上一…

2007最牛X网站收集

50. 经典桌面 这个名叫东子的偏执狂不知花了多少工夫,mydeskcity.com的内容量达到了40G,很多图片都是站长本人在国外搜集后,自己进行加工的作品。 http://www.mydeskcity.com/ 49. 画猪头 在指定的对话框里面随便画一个猪头&#…

纯css实现网站导航条下拉效果

不用javascript效果实现导航条的下拉效果。 纯css属性实现&#xff0c;主要应用到绝对定位中的left&#xff1a;auto和 left&#xff1a;-9999px&#xff1b;来隐藏或者鼠标经过的时候显示下拉菜单。 下面是代码&#xff1a; <!DOCTYPE html> <html> <head&g…

网站右侧导航条的玩法

最近心情很不好&#xff0c;各种工作生活上面的事情&#xff0c;让我很是受伤&#xff0c;刚出来工作感觉程序员确实是个神奇的行业&#xff0c;一个个都觉得自己的智商挺高的&#xff0c;哎&#xff0c;每天起早贪黑的上下班&#xff0c;还天天受气&#xff0c;真是日了够了&a…

谷歌浏览器调试网站技巧教程

1.样式的调试&#xff0c;盒子模型。 2找到hover样式 3 4.样式所对应的标签&#xff0c;所在文件名

mouseover事件,鼠标移上去数据出不来且数据错乱

我要做如下的效果&#xff0c;就是鼠标移上去有一个信息提示框 但是我用mouseover一直就是鼠标移上去第一下&#xff0c;直接位置那里是空的&#xff0c;然后再次移动之后&#xff0c;数据一直都是错乱的&#xff0c;比如&#xff0c;从第一个人移动到第二个人那里&#xff0c;…

MySQL在大型网站的应用架构演变

可扩展性 架构的可扩展性往往和并发是息息相关&#xff0c;没有并发的增长&#xff0c;也就没有必要做高可扩展性的架构&#xff0c;这里对可扩展性进行简单介绍一下&#xff0c; 常用的扩展手段有以下两种&#xff1a; Scale-up : 纵向扩展&#xff0c;通过替换为更好的机器…