很多朋友对于Let#39;s Encrypt SSL 域名证书申请及配置和不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
卷曲https://get.acme.sh | sh -s email=my@example.com 执行命令后几秒钟内就会安装完毕。如果长时间没有响应,请按Ctrl+C重新执行命令。 acme.sh安装在~/.acme.sh目录下,并自动创建一个cronjob,每天自动检测0:00处的所有证书。如果它们即将过期,它们将自动更新。
安装后,理论上会自动添加一个acme.sh全局应用别名,但有时会找不到该命令。您需要手动执行以下命令:source ~/.bashrc 或source ~/.bash_profile,或者关闭终端并重新打开,然后继续下一步。
生成证书
acme.sh 实现了acme 协议支持的所有验证协议。验证方式一般有三种:HTTP方式、手动DNS方式、DNS API方式。推荐使用DNS API方式。
HTTP方式
HTTP方式需要在您的网站根目录下放置一个文件来验证您的域名所有权,完成验证后即可生成证书。
acme.sh –issue -d example.com –webroot /path/to/example.com/acme.sh 会自动生成验证文件并放置在网站根目录下,然后自动完成验证,并最后自动删除验证文件。
如果您使用Nginx服务器,acme.sh还可以从Nginx配置中智能自动完成验证。您不需要指定网站根目录。
acme.sh –issue -d example.com –nginx 需要注意的是,HTTP认证方式不支持生成通用域名证书。
手动DNS方法
该方法需要手动为域名添加TXT解析记录,以验证域名所有权。这种方法的优点是不需要任何服务器或公共IP。只需要DNS解析记录即可完成验证。
执行以下命令进行手动DNS 验证:
acme.sh –issue -d example.com -d ‘*.example.com’ –dns \–yes-I-know-dns-manual-mode-enough-go-ahead-please 到DNS 解析,添加一条新的TXT记录,域名前缀为_acme-challenge,记录值为终端输出的TXT值的值。然后再次执行:
acme.sh –renew -d example.com -d ‘*.example.com’ \–yes-I-know-dns-manual-mode-enough-go-ahead-please注意:这种方法的缺点是,如果您没有同时配置DNS API,则证书不会自动更新,每次都需要您手动重新解析并验证域名所有权。
DNS API方法
自动DNS验证方法需要使用域名解析服务提供商的DNS API。腾讯云(DNSPos)和阿里云均提供DNS API功能。
创建密钥后,使用以下命令将其Id 和Token 或Secret 放入环境变量中:
# 腾讯云导出DP_Id=’YourId’ 导出DP_Key=’YourToken’# 阿里云导出Ali_Key=’YourAccessKeyId’ 导出Ali_Secret=’YourAccessKeySecret’ 然后通过以下命令生成证书:
# 腾讯云acme.sh –issue –dns dns_dp -d example.com -d *.example.com# 阿里云acme.sh –issue –dns dns_ali -d example.com -d *.example.com注:这里第一个域名是顶级域名,后面一个是通用域名。此方法会自动为您的域名添加TXT 解析。验证成功后,该解析记录将被删除,对您无害。
安装证书
在~/.acme.sh/example.com/目录下生成的证书文件中,我们主要需要用到两个文件:fullchain.cer和example.com.key。我们以Nginx为例,看看如何安装证书。
1) 创建通用SSL 配置文件
在/etc/ginx/目录下创建SSL通用配置文件,名称为ssl-options.conf。内容如下:
ssl_协议TLSv1.2 TLSv1.3;ssl_密码ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM -SHA384333 60ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA -CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;ssl_prefer_server_ciphers关闭;ssl_session_cache共享:le_nginx_SSL:10m;ssl_session_timeout 12 00m;ssl_session _tickets on;ssl_stapling on;参数说明:
ssl_protocols:加密协议; ssl_ciphers:加密算法; ssl_prefer_server_ciphers:服务器端加密算法优先级; ssl_session_cache:会话缓存; ssl_session_timeout:用户会话缓存过期时间,安全要求高的网站需要减小该值; ssl_stapling:启用OCSP可以减少用户验证证书的时间; ssl_session_tickets:创建或加载票证密钥以供重用会话。 2)生成dhparam.pem
OpenSSL的dhparam用于生成和管理dh文件。 dh(Diffie-Hellman)是著名的密钥交换协议,可以保证通信双方安全地交换密钥。
使用以下命令生成dhparam.pem 文件:
openssl dhparam -out /etc/nginx/dhparam.pem 20483) 为Nginx 站点配置证书
打开对应的Nginx站点配置文件,例如:/etc/nginx/conf.d/example.com.conf,编辑其内容如下:
# /etc/nginx/conf.d/example.com.confserver { 监听80;服务器名称example.com www.example.com;返回301 https://$host$request_uri;}服务器{ 监听443 ssl;服务器名称example.com www.示例.com;服务器令牌关闭; # 禁用响应消息中的Nginx 版本信息ssl_certificate /etc/nginx/cert/example.com/fullchain.cer; ssl_certificate_key /etc/nginx/cert/example.com/example.com。钥匙;包括/etc/nginx/ssl-options.conf; ssl_dhparam /etc/nginx/dhparam.pem; if ($host !=’example.com’ ) { return 301 https://example.com$request_uri; } } 位置/{ proxy_pass http://127.0.0.1:3000; proxy_http_版本1.1; proxy_set_header 升级$http_upgrade; proxy_set_header 连接保持活动状态; proxy_set_header 主机$host; proxy_cache_bypass $http_upgrade; proxy_set_header 到$scheme; }}4) 证书的安装和自动续订
执行以下安装命令完成证书安装:
acme.sh –install-cert -d example.com \–key-file /etc/nginx/cert/example.com/example.com.key \–fullchain-file /etc/nginx/cert/example. com/fullchain.cer \–reloadcmd ‘systemctl force-reload nginx’ 这里指定的所有参数都会自动记录下来,以后证书自动更新后会再次自动调用。证书会在到期前自动续订,您无需执行任何操作。
更新 acme.sh
目前,由于acme 协议和Let’s Encrypt CA 更新频繁,acme.sh 也经常更新以保持同步。
手动升级acme.sh 到最新版本:
acme.sh –upgrade 如果不想手动升级,可以启用自动升级:
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/150109.html
用户评论
旧爱剩女
这个教程简直太棒了!让我轻松搞定LET'S ENCRYPT 的泛域名证书申请,之前一直在纠结怎么弄,浪费了好多时间。现在网站都自动https了,感觉安全系数飙升了!
有8位网友表示赞同!
一笑傾城゛
我尝试了这个方法,但是遇到了一些小问题,不知道是不是我的配置问题。希望作者能再详细点解释一下每一步操作,图文并茂会更方便理解啊。
有19位网友表示赞同!
有阳光还感觉冷
之前一直使用其他的SSL证书,这次尝试let’s encrypt 的泛域名证书以后感觉速度明显更快,资源占用也更低,真是个好东西!
有5位网友表示赞同!
桃洛憬
我感觉使用pan_dns 进行验证有点麻烦,而且需要配置多个子域名的记录,如果只申请一个域名的话倒还好说,但这样就有点复杂了。希望有更好的方案能出来解决这个问题。
有20位网友表示赞同!
十言i
这篇文章很详细,把证书申请和配置的过程都描述得很清楚,我跟着操作了一遍,顺利完成了!以前每次都要找人帮忙弄SSL证书,现在自己也可以搞定了,真是太开心了!
有12位网友表示赞同!
不识爱人心
虽然教程讲得比较详细,但我还是遇到了麻烦,不知道是不是我的系统版本问题或者软件冲突造成的,感觉这个过程有点复杂。希望能提供其他一些配置方案,方便选择不同的环境进行操作。
有18位网友表示赞同!
繁华若梦
使用LET'S ENCRYPT 提供的泛域名证书还是很有优势的,免去了购买付费证书的费用,而且自动续费机制也让人省心了好多。现在越来越多人开始重视网站安全了,这个免费证书确实是个福音!
有13位网友表示赞同!
我一个人
对于新手来说,这篇文章确实是一个很好的入门指南,但是需要一定的网络基础知识,如果完全没有接触过相关技术的话,可能还是比较难理解一些操作步骤。
有13位网友表示赞同!
冷嘲热讽i
希望文章能提供更多关于不同情况的解决方案或者解决常见问题的办法,例如一些报错信息该如何处理,这样可以让教程更完善,对用户更加实用
有18位网友表示赞同!
来瓶年的冰泉
感谢作者分享这个干货满满的文章!终于让我明白如何申请泛域名证书了! 以前总是感觉SSL证书太难搞,现在终于可以轻松使用了!
有15位网友表示赞同!
此生一诺
我一直使用Let’s Encrypt 的证书,但是最近发现了一些问题。比如证书过期提示的频率很高,感觉有点频繁。希望作者能在文章中解释一下该如何控制证书更新时间,避免每次都收到提醒。
有10位网友表示赞同!
忘故
这款泛域名证书确实很不错,能有效保护我的网站免受攻击,提高用户信任度。但是我发现申请过程需要有一定的技术门槛,如果能提供更友好的操作界面或者自动化脚本,那会更方便新手用户使用!
有20位网友表示赞同!
墨染年华
对于我们正在搭建网站的团队来说, 这个教程非常实用! 让我们可以轻松获取安全的泛域名证书,节省了大量的时间和精力。文章清晰易懂,也很有针对性!
有12位网友表示赞同!
你瞒我瞒
之前一直不知道怎么配置泛域名证书,浪费了很多时间。现在看了这篇教程,感觉自己终于掌握了一项技能! 以后再也不用担心SSL证书的问题了!
有18位网友表示赞同!
西瓜贩子
我对这种免费的证书感到很满意! 这样可以让我们在不增加成本的情况下提高网站的安全性和用户体验。相信随着越来越多人使用这个服务,未来我们的网络环境会变得更加安全!
有10位网友表示赞同!
青袂婉约
这篇教程的确解决了我的疑问,感谢作者的分享!希望以后还能看到更多关于网络安全技术的文章,帮助我们更好地保护自己的信息和数据。
有19位网友表示赞同!