一、Let's Encrypt、Certbot和Snap的关系

Let's Encrypt是一个免费、自动化和开放的证书颁发机构,由非营利的互联网安全研究小组(ISRG)为您提供。

Certbot使用EFF的Certbot在您的网站上自动启用HTTPS,部署Let's Encrypt证书。

Snap则是用于下载安装Certbot的包管理器。

所以,核心是Let's Encrypt证书,Snap和Certbot则是用于生成管理证书的工具。

二、官方Certbot安装(与nginx进行证书绑定)

官网地址:https://certbot.eff.org/

1、安装snapd

1.1、增加EPEL仓库
sudo yum -y install epel-release
1.2、安装snapd
sudo yum -y install snapd
1.3、启用snapd socket
systemctl enable --now snapd.socket
1.4、创建一个软连接 /snap 到 /var/lib/snapd/snap,安装软件需要在 /snap中。
sudo ln -s /var/lib/snapd/snap /snap

2、安装certbot

2.1、 确保snapd是最新版本
sudo snap install core;sudo snap refresh core
2.2、移除certbot-auto和任何Certbot OS包
sudo yum remove certbot
2.3、安装certbot
sudo snap install --classic certbot
2.4、准备Certbot命令
sudo ln -s /snap/bin/certbot /usr/bin/certbot
2.5、选择nginx运行方式
自动配置nginx
sudo certbot --nginx
手动配置nginx
sudo certbot certonly --nginx
2.6、自动续期
sudo certbot renew
2.7、签发证书

2.7.1使用dns方式(需在域名管理中配置_acme-challenge.<YOUR_DOMAIN>的TXT记录)

certbot certonly --email xxx@126.com --manual --preferred-challenges dns -d a.xxx.com

2.8、修改nginx配置文件
server {
    listen 443 ssl;
    listen [::]:443 ssl ipv6only=on;

ssl_certificate /etc/letsencrypt/live/your.domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your.domain.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/your.domain.com/chain.pem;

// ... other settings ...
}
2.9、配置好 Nginx 配置文件,重载使修改生效
sudo nginx -s reload
2.10、crontab -e的命令来启用自动任务,命令行:
sudo crontab -e
2.11、打开定时任务配置文件,我们可以按i进入编辑模式,然后输入:
0 23 28 * * /usr/bin/certbot renew  >> /var/log/le-renew.log
添加定时任务,每月28号23点执行脚本

三、Certbot命令用法

certbot [子命令] [选项] [-d 域名] [-d 域名] ...

获取, 安装, 更新证书:
    (默认) run       获取并安装证书到当前网页服务器
    certonly        获取或更新证书,但是不安装
    renew           更新已经获取但快过期的所有证书
   -d 域名列表        指定证书对应的域名列表,域名之间使用逗号分隔

--apache          使用Apache插件进行身份认证和安装
  --standalone      运行一个独立的网页服务器用于身份认证
  --nginx           使用Nginx插件进行身份认证和安装
  --webroot         把身份认证文件放置在服务器的网页根目录下
  --manual          使用交互式或脚本钩子的方式获取证书

-n               非交互式运行
  --test-cert       从预交付服务器上获取测试证书
  --dry-run         测试获取或更新证书,但是不存储到本地硬盘

四、常见问题

4.1 snap2.57.6-1.el7版本安装出现bug,出现go语言runtime stack错误。

解决方法:

①yum remove snapd

②yum remove snap-confine.x86_64

③yum remove snapd-selinux.noarch

④从 https://mirror.lt.ucsc.edu/epel/7/x86_64/Packages/s/ 下载2.54版本的snap。具体如下:

snapd-2.54.4-1.el7.x86_64.rpm,

snapd-selinux-2.54.4- 1.el7.noarch.rpm,

snap-confine-2.54.4-1.el7.x86_64.rpm

⑤yum本地安装

rpm yum localinstall snapd-2.54.4-1.el7.x86_64.rpm

rpm yum localinstall snapd-selinux-2.54.4- 1.el7.noarch.rpm

rpm yum localinstall snap-confine-2.54.4-1.el7.x86_64.rpm

4.2、具体错误内容如下

[21:21:31 ERR] Connection id "0HMN066E9362B", Request id "0HMN066E9362B:00000002": An unhandled exception was thrown by the application.
System.InvalidOperationException: IDX20803: Unable to obtain configuration from: 'System.String'.
---> System.IO.IOException: IDX20804: Unable to retrieve document from: 'System.String'.
---> System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.
---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid because of errors in the certificate chain: NotTimeValid
at System.Net.Security.SslStream.SendAuthResetSignal(ProtocolToken message, ExceptionDispatchInfo exception)
at System.Net.Security.SslStream.CompleteHandshake(SslAuthenticationOptions sslAuthenticationOptions)
at System.Net.Security.SslStream.ForceAuthenticationAsync[TIOAdapter](TIOAdapter adapter, Boolean receiveFirst, Byte[] reAuthenticationData, Boolean isApm)
at System.Net.Http.ConnectHelper.EstablishSslConnectionAsync(SslClientAuthenticationOptions sslOptions, HttpRequestMessage request, Boolean async, Stream stream, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.ConnectHelper.EstablishSslConnectionAsync(SslClientAuthenticationOptions sslOptions, HttpRequestMessage request, Boolean async, Stream stream, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.AddHttp11ConnectionAsync(HttpRequestMessage request)
at System.Threading.Tasks.TaskCompletionSourceWithCancellation`1.WaitWithCancellationAsync(CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.GetHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
at Microsoft.IdentityModel.Protocols.HttpDocumentRetriever.GetDocumentAsync(String address, CancellationToken cancel)
--- End of inner exception stack trace ---
at Microsoft.IdentityModel.Protocols.HttpDocumentRetriever.GetDocumentAsync(String address, CancellationToken cancel)
at Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectConfigurationRetriever.GetAsync(String address, IDocumentRetriever retriever, CancellationToken cancel)
at Microsoft.IdentityModel.Protocols.ConfigurationManager`1.GetConfigurationAsync(CancellationToken cancel)
--- End of inner exception stack trace ---
at Microsoft.IdentityModel.Protocols.ConfigurationManager`1.GetConfigurationAsync(CancellationToken cancel)
at Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.HandleChallengeAsyncInternal(AuthenticationProperties properties)
at Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler.HandleChallengeAsync(AuthenticationProperties properties)
at Microsoft.AspNetCore.Authentication.AuthenticationHandler`1.ChallengeAsync(AuthenticationProperties properties)
at Microsoft.AspNetCore.Authentication.AuthenticationService.ChallengeAsync(HttpContext context, String scheme, AuthenticationProperties properties)
at Microsoft.AspNetCore.Authorization.Policy.AuthorizationMiddlewareResultHandler.HandleAsync(RequestDelegate next, HttpContext context, AuthorizationPolicy policy, PolicyAuthorizationResult authorizeResult)
at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Localization.RequestLocalizationMiddleware.Invoke(HttpContext context)
at NWebsec.AspNetCore.Middleware.Middleware.CspMiddleware.Invoke(HttpContext context)
at NWebsec.AspNetCore.Middleware.Middleware.MiddlewareBase.Invoke(HttpContext context)
at NWebsec.AspNetCore.Middleware.Middleware.MiddlewareBase.Invoke(HttpContext context)
at NWebsec.AspNetCore.Middleware.Middleware.MiddlewareBase.Invoke(HttpContext context)
at NWebsec.AspNetCore.Middleware.Middleware.MiddlewareBase.Invoke(HttpContext context)
at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.<Invoke>g__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task)
at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.HandleException(HttpContext context, ExceptionDispatchInfo edi)
at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.<Invoke>g__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)

解决方法:

安装服务端ca证书集。目录在/etc/ssl/certs。

如果未安装,请运行:yum install ca-certificates

安装完成,进行证书更新:update-ca-trust force-enable

https安全解决方案证书certbot教程相关推荐

  1. HTTPS 简介及使用官方工具 Certbot 配置 SSL 安全证书详细教程

    Homepage » 教程 » HTTPS 简介及使用官方工具 Certbot 配置 Let's Encrypt SSL 安全证书详细教程 HTTPS 简介及使用官方工具 Certbot 配置 Let ...

  2. 又拍云SSL证书全新上线,提供一站式HTTPS安全解决方案

    互联网快速发展,云服务早已融入每一个人的日常生活,而互联网安全与互联网的发展息息相关,这其中涉及到信息的保密性.完整性.可用性.真实性和可控性.又拍云上线了与多家国际顶级 CA 机构合作的数款OV & ...

  3. linux服务器证书安装教程,linux服务器使用certbot免费安装ssl证书

    这里介绍一个免费的生成https的网站: certbot的官方网站为:https://certbot.eff.org 打开这个链接选择自己使用的 web server 和操作系统,如下图: 选好系统后 ...

  4. 最新获取通配符SS证书的教程 安全守护网站

    我们通常都会拥有多个域名,而现在域名如果都要拿来做网站,必须要部署SSL证书,通配符证书的出现极大的提升了了部署多个域名的效率.来此加密,免费提供通配符证书的申请. 通配符证书只支持一级通配符,如:* ...

  5. Let's Encrypt 免费通配符 SSL 证书申请教程——但是也需要email,域名所有权等,如果是黑产用的话会这样用吗?会不会暴露自己身份???...

    Let's Encrypt 免费通配符 SSL 证书申请教程 from:https://blog.csdn.net/English0523/article/details/79608464 2018 ...

  6. 浅谈https\ssl\数字证书

    在互联网安全通信方式上,目前用的最多的就是https配合ssl和数字证书来保证传输和认证安全了.本文追本溯源围绕这个模式谈一谈. 名词解释 首先解释一下上面的几个名词: https:在http(超文本 ...

  7. Ubuntu虚拟机磁盘扩容+VM虚拟机开机多出1分30秒的解决方案(终极教程)

    详细步骤,请参考我电脑上的Word:[在用] Word:Ubuntu虚拟机磁盘扩容+VM虚拟机开机多出1分30秒的解决方案(终极教程) 扩容简单总结: 参考1:https://www.cnblogs. ...

  8. linux安装globalsign证书,GlobalSign 普通 OV 代码签名证书提取教程

    普通型代码签名证书分为软件证书和硬件 Token 证书,本例介绍软件证书提取过程,硬件证书提取可参考 EV 代码签名证书提取教程. 扩展阅读 第一部分:提取证书 a.必须使用 IE 浏览器访问提取链接 ...

  9. Android 实现HTTPS自签名证书(非常详细)

    1.HTTPS协议 HTTPS协议是由SSL+HTTP协议构建的可进行加密传输.身份认证的网络协议.简单来说, HTTP是超文本传输协议 ,信息是明文传输.SSL 是指安全套接字层,它是一项标准技术, ...

最新文章

  1. 为了进行差错控制,必须对传送的数据帧进行校验。在局域网中广泛使用的校验方法是循环冗余校验。当接收端发现错误后采取的措施是
  2. MFC中Mat实现打开本地图片
  3. c++七参数坐标转换_深度 | 扒一扒坐标转换之七参数
  4. java上传文件到ftp_java实现文件上传下载至ftp服务器
  5. 摆脱“空”检查的盛宴:使用JSON Patch正确执行PATCH
  6. win8开发中需要用到一些系统版本之类的统计信息,总结如下。
  7. iview select 怎么清空_如何解决iview 的select下拉框选项错位的问题,具体操作如下...
  8. java动态录音_java实现动态录音,声卡有声音进来就自动录音
  9. openjdk8之编译和debug
  10. 完全独立与IIS的后门
  11. Yii使用 case when 来模糊排序查询
  12. vue.js中在js获取指定日期到现在时间的天数
  13. 第1讲(数据库软件的配置与游戏数据库的搭建)
  14. scratch小猫钓鱼 电子学会图形化编程scratch等级考试四级真题和答案解析2021-9
  15. 翻译:如何成功How to be successful OpenAI CEO山姆奥特曼
  16. ClassNotFoundException,某种类的缺失
  17. win10的怎么调计算机亮度,win10电脑亮度怎么调
  18. Echarts中国地图与世界地图实战
  19. 【html】svg标签
  20. 通过谷歌chrome我们可以进行视频通话

热门文章

  1. QCC 单地址SDK 使用MDE debug时无log输出
  2. 汇总一下Intellij IDEA常用的牛逼插件
  3. 日历公历农历C语言大作业,C语言编写一个带农历的万年历
  4. C++使用Crow框架自定义的资源路径
  5. html语言q,HTML: q 标签
  6. DELL笔记本安装Ubuntu 14.04
  7. 自动关机shutdown命令
  8. 《网络安全工程师笔记》 第三章:进制转换
  9. 计算机一级有哪些快捷键,计算机一级Photoshop快捷键大全
  10. 二进制安装Kubernetes(k8s) v1.23.6