当前位置:首页 > 技术文章 > 正文内容

一款免费签发Https证书的工具:Let's Encrypt

arlanguage3个月前 (02-01)技术文章28


前言

众所周知,因特网上应用最为广泛的网络传输协议是Http协议,但由于Http协议存在一些不足,比如,在通信过程中使用明文传输,同时未验证通讯双方身份信息,会导致传输数据被第三方窃取。

因此,为了提升安全性,衍生出了Https协议,该协议是在Http基础上增加了证书交换及加密传输等功能,使得Http访问、数据传输尽可能的安全。


那么问题来了,因为使用了Https需要证书交换,需要给我们的域名申请证书才能开启Https协议,但是我们不能使用自签证书(因为自签证书系统/浏览器不认),所以需要向第三方机构来申请公认的证书。

目前常用的CA有: 阿里云 , 腾讯云,Godaddy,AWS,Google 等, 但这些服务基本都是收费的, 且申请通配符(*.example.com)证书时价格更高。

为了解决证书问题,分享一款免费签发Https证书的工具:Let's Encrypt。

介绍

Let's Encrypt是一家免费、开放、自动化的证书颁发机构(CA),为公众的利益而运行(由非盈利组织互联网安全研究小组(ISRG)运营)。

Let's Encrypt的主要目标是推进网站的Https进程,截止到目前,已经为1.8亿个网站提供TLS证书。

(Let's Encrypt 只颁发域名验证型(DV)证书,不能颁发组织验证(OV)或扩展验证(EV))

同时 Let's Encrypt支持通配符证书(是不是被吸引到了)。

如何使用

1. 首先我们应该拥有一个域名, 而且拥有我们自己的服务器

假设我们在阿里云注册的域名是 example.com,登录到云解析DNS控制台



我们的服务器为CentOS7

然后我们就可以进行第二步啦

2. 证书签名

这个步骤就开始申请证书了。

因为Let's Encrypt 支持通配符证书(*.example.com) ,所以这里我们就使用Certbot的 ACME 方式申请通配符证书。

当然,Let's Encrypt 支持多域名签名,这样我们就可以把 *.example.com 和 example.com一起签名。

Let's Encrypt 支持3种域名认证方式,以下列出常用的2种:

1. 在 example.com 下配置DNS记录

2. 在 http://example.com/的已知URI下放置一个Http资源

但签通配符域名(*.example.com)只支持DNS记录认证

Web URI资源认证域名流程图:

(DNS认证与此类似,只是WebServer Admin Software换为了DNS Server,配置项换成了DNS Record)

签名步骤:

a. 首先下载certbot-auto及Python(CertBot依赖Python 2.7 or 3.5+)

安装文档:
https://certbot.eff.org/docs/install.html

$ wget https://dl.eff.org/certbot-auto

$ chmod +x certbot-auto

b. 执行certbot-auto

(此处执行需要root权限)

./certbot-auto certonly --no-bootstrap --email email@example.com -d *.example.com -d example.com --manual --preferred-challenges dns --server https://acme-v02.api.letsencrypt.org/directory

其中:

--preferred-challenges:域名所有权验证类型 ,值为http,dns或tls-sni ,这里我们使用dns

--email:用于注册的邮箱

-d:用于签名的域名,可配置多个-d 项,或将多个域名按","(逗号)分割

--manual :表示手动安装插件

--server:ACME V2版本协议目录, 为了实现通配符证书,Let’s Encrypt 对 ACME 协议的实现进行了升级,只有 v2 协议才能支持通配符证书。

执行后如图:

在出现 Please deploy a DNS TXT record under the name 提示时,按要求在阿里云DNS 管理控制台中配置 DNS TXT记录:


在等待10分钟后,或在服务器上使用dig命令检查域名解析是否生效,解析生效后,按回车继续进行下一个域名的配置。

在2次配置结束后,我们即可看到证书签名成功。

3. 为Nginx配置启用Https

这里我们使用Nginx 配置域名证书来开启Https。配置如下:

(注意运行权限需为root,其中的example.com为假设域名,需替换为真实的域名)

然后重启服务即可。

4. 以上步骤操作完成后,证书就配置成功了,让我们看下成果:

注意 Let's Encrypt CA颁发短期证书(90天)。确保在3个月内至少续订一次证书。当然, 我们可以做定时任务脚本自动完成证书续签。

最后:

通过以上步骤我们就能简单地为我们的网站开启Https了,大家快去试试吧。若有什么问题,可以点赞,留言,转发和小编一起交流学习。


参考:

Let's Encrypt 官网:

https://letsencrypt.org/

CertBot 使用文档:

https://certbot.eff.org/docs/

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/2041.html

分享给朋友:

“一款免费签发Https证书的工具:Let's Encrypt” 的相关文章

Nginx 解决error.log和access.log日志的改善总结

1. 介绍自从了解了error和access日志的重要性,并且学会阅读相关log文档之后。通过调整nginx配置,解决error中的大量报错提示。通过过滤js等静态资源减少大量的access日志记录内容。同时,经过使用阿里云安全组封禁大量国外ip地址的访问。我的access.log文件和error....

Nginx动静分离简单实现示例讲解

简述本文主要介绍如何实现Nginx动静分离。动静分离动静分离是根据一定规则把静态文件(html、css、js、jpg等)和动态文件(jsp,.do等)区分开来,采用静态文件和动态文件分开部署,以提高用户访问静态文件的速度,降低对后台应用的访问,提高服务器响应速度和性能。静态文件由Nginx服务器处理...

Nginx安装与调优部署文档(WinServer)

1. 安装环境准备1.1 部署规划软件安装路径 E:\nginx软件日志路径 E:\nginx\logs软件主配置文件路径 E:\nginx\conf软件子配置文件路径 E:\nginx\conf\conf.d软件站点配置路径 E:\nginx\html端口规划 802. Nginx安装部署2.1...

nginx命令——学习记录 nginx详细教程

nginx命令--学习记录查看80端口是否被占用netstat -ntlpnginx命令#/usr/local/nginx/sbin/nginx 启动命令#/usr/local/nginx/sbin/nginx -t 检测配置文件 #/usr/local/nginx/sbin/ngin...

Linux进程管理工具 Supervisor详解

Supervisor安装与配置(linux/unix进程管理工具) Supervisor(http://supervisord.org)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。它可以很方便的监听、启动、停止、...

nginx入门——nginx访问日志(六)

日志功能在ngx_http_log_module模块中定义,实现了以指定格式写入请求日志。我们先来看一个nginx配置文件:http { include mime.types; default_type application/octet-stream;...