https安全解决方案证书certbot教程

这篇具有很好参考价值的文章主要介绍了https安全解决方案证书certbot教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、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://www.toymoban.com/news/detail-493384.html

到了这里,关于https安全解决方案证书certbot教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 安卓高版本安装系统证书 HTTPS 抓包 - 终极解决方案

    要抓App的包,首先需要App信任抓包软件的证书。 不过从Android 从 7.0 开始,系统不再信任用户 CA 证书,所以你需要把 CA 证书安装到系统 CA 证书目录。 如果你是用Magisk越狱的话,这个工作就比较简单了,只需要安装一个模块 Move Certificates。 不过今天的故事从我刷了一个新ro

    2024年02月01日
    浏览(42)
  • Certbot免费的HTTPS证书

    一般的 SSL 安全证书签发服务都需要付费,且价格昂贵,不过为了加快推广 https 的普及, EEF 电子前哨基金会、 Mozilla 基金会和美国密歇根大学成立了一个公益组织叫 ISRG ( Internet Security Research Group ),这个组织从 2015 年开始推出了 Let’s Encrypt 免费证书。这个免费证书不仅

    2024年02月08日
    浏览(47)
  • 局域网安全的https协议解决方案

    我们在有域名、有公网ip的情况下通常直接在域名管理中可以申请ssl证书,利用nginx可以做到安全的https协议,有时候我们需要将局域网内的服务地址也要做成https协议,如果直接利用nginx转发443端口,访问时会告警,提示不安全的地址,需要手动点一下才能进入网站,非常不方

    2024年02月14日
    浏览(37)
  • 【SSL】用Certbot生成免费HTTPS证书

    服务器:CentOS7.x 示例域名: www.example.com 域名对应的web站点目录: /usr/local/openresty/nginx/html 注意,示例域名 www.exanple.com在certbot机器上一定要解析在公网ip,而不是解析在内网ip,否则会报错无法解析: Let’s Encrypt需要验证网站的所有权才能颁发证书, 官方称之为challenge(挑战

    2024年02月08日
    浏览(63)
  • 使用certbot申请https通配符证书【阿里云篇】

    解决阿里云 DNS 不能自动为通配符证书续期的问题 当我们使用 certbot 申请 通配符 证书时,需要手动添加 TXT 记录。每个 certbot 申请的证书有效期为 3 个月,虽然 certbot 提供了自动续期命令,但是当我们把自动续期命令配置为定时任务时,我们无法手动添加新的 TXT 记录用于

    2024年02月19日
    浏览(40)
  • 关于IIS安全设置http能访问https不能访问的解决方案

    最近折腾IIS,发现网站的http能访问但是https不能访问。 我确认所有关于HTTPS的配置我都配置正确了,结果还是不能访问,一番折腾发现,服务器本身的防火墙和阿里云服务器的安全组规则不是一回事。改完防火墙也没有用,重要的是阿里云平台里改服务器的安全规则。 只需要

    2024年02月17日
    浏览(52)
  • nginx处理cros跨域遇到的各种问题及解决方案,以及https配置和浏览器https不安全问题处理

    提示:本人在生产部署服务时遇到一系列跨域问题和https配置问题,特此做以下记录: 跨域是指a页面想获取b页面资源,如果a、b页面的协议、域名、端口、子域名不同,或是a页面为ip地址,b页面为域名地址,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了

    2024年02月02日
    浏览(64)
  • 了解单域名证书和通配符证书的区别,选择合适的SSL证书解决方案

    随着互联网的不断发展,网站安全性问题一直备受关注,在保护网站数据安全的过程中,SSL证书一直发挥着至关重要的作用。而在选择SSL证书时,单域名证书和通配符证书是两种常见的选择。本文将详细介绍 单域名证书和通配符证书的区别 ,以便于选择适合您网站的SSL证书

    2024年02月06日
    浏览(49)
  • 解决方案:解决https页面加载http资源报错

    HTTPS页面加载HTTP资源会报错的原因是出于安全性考虑。 HTTPS(HyperText Transfer Protocol Secure)是一种通过使用SSL/TLS加密通信来保护数据传输的协议,它确保了客户端和服务器之间的安全连接。 当HTTPS页面尝试加载非加密的HTTP资源时,存在以下问题: 混合内容警告:浏览器会发出

    2024年02月07日
    浏览(47)
  • KubeSphere 镜像构建器(S2I)服务证书过期解决方案

    目前 KubeSphere 所有 3.x.x 版本,如果开启了 DevOps 模块并使用了镜像构建器功能(S2I)都会遇到证书过期问题。 已开启 DevOps 模块 下载这个更新 S2I 服务证书压缩包,上传到任一可以访问 K8s 集群的节点; 把上传的压缩包解压 进入解压后的目录 执行更新证书的脚本 ./update-s2i

    2024年02月22日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包