ACME.SH 申请SSL证书(免费、自动更新)

2023-05-16

1. 获取DNS密钥

(1)获取域名服务商AccessKey ID及AccessKey Secret

我使用的域名是阿里云,故需要去阿里云RAM管理平台获取:

其他服务商,可以去指定的服务商控制台获取。

阿里云参考文档:如何获取AccessKey ID和AccessKey Secret - 阿里云如何获取AccessKey ID和AccessKey Secret - 阿里云

记住APPID和APPSecret

2. 安装与申请

(1)安装ACME

curl https://get.acme.sh | sh

source ~/.bashrc

如果使用root用户进行安装,会生成文件夹.acme.sh。

文件夹地址:/root/.acme.sh

(2) 设置ACME自动更新

acme.sh --upgrade --auto-upgrade

3. 证书申请

        申请过程中,请先关闭nginx

(1)设置阿里云APPID 和阿里云APPKEY

##注:此处的APPID 和APPkey为第一步我们从阿里云RAM中获取的
export Ali_Key="Key_XXX"
export Ali_Secret="Secret_XXX"

 (2)申请证书(通配符)

acme.sh --issue --dns dns_ali -d abc.com -d *.abc.com

申请成功会在.acme.sh文件夹下面,生成abc.com文件夹 ,并且证书会存储在文件夹下

注:

1. 证书申请过程较慢,大概会持续1~2分钟左右,注意不要进行其他操纵。申请成功后会显示“success”.

2. 如SSH控制台操作卡顿,是正常现象,一会儿就好了,等一会。

3. 证书申请过程如果出现问题,记得查看文中“常见问题”,进行修正。

(3) 导出证书

##创建证书导出路径
mkdir /data/cert/abc.com/

##证书导出脚本
acme.sh --install-cert -d abc.com --cert-file /data/cert/abc.com/abc.com.crt --key-file /data/cert/abc.com/abc.com.key --fullchain-file /data/cert/abc.com/fullchain.crt

## 重启nginx
service nginx force-reload

# nginx  force-reload 报错替代方案
# service nginx stop
# service nginx start

注:

1. 记得修改脚本中的路径和证书名称。

2. 如果“service nginx force-reload”报错,可以查看“常见问题3”进行解决

4.Nginx 配置HTTPS证书

nginx安装步骤我就不做说明了,没有安装过的自己去看吧

nginx安装教程:

linux搭建nginx_svallll的博客-CSDN博客_linux搭建nginx

nginx安装SSL模块:

Nginx 的 SSL 模块安装_浮_雲的博客-CSDN博客_nginx安装ssl模块

nginx安装fair插件,进行多服务器负载均衡:(可选,非必要)

Nginx安装SSL证书_love_yu_er的博客-CSDN博客_nginx安装证书

注:由于https会使用到443端口,服务商安全组记得打开443端口

(一):编辑nginx.conf

server {
		listen	443 ssl;
        server_name  www.abc.com;
		ssl_certificate /data/cert/abc.com/fullchain.crt;
		ssl_certificate_key /data/cert/abc.com/abc.com.key;
		ssl_trusted_certificate /data/cert/abc.com/fullchain.crt;
		ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
		ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
		ssl_prefer_server_ciphers on;
		ssl_session_cache shared:SSL:10m;
		ssl_session_timeout 10m;
		

        location / {
           # root   "/home/www/www.abc.com";
            root   html;
            index  index.html index.htm;
			proxy_pass http://127.0.0.1:37521/;
			proxy_set_header X-real-ip $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }
	
	
    ##80端口默认重定向到443端口
	server {
		listen	80;
        server_name  www.abc.com;
		# 核心代码
		rewrite ^(.*)$ https://${server_name}$1 permanent;
    }

注:以abc.com域名为例,acme.sh生成的文件包含abc.com.crt ; abc.com.eky ; fullchain.crt;

这里nginx配置ssl域名不要使用abc.com.crt作为密钥,否则会导致证书不全等异常,需要使用fullchain.crt

(二):设置防火墙放行443端口

以下脚本只针对于Centos7及以上,其他版本请查找其他放行方法:

##打开防火墙,如果已经打开了,就不用管了
systemctl start firewalld

##放行443端口
firewall-cmd --zone=public --add-port=443/tcp --permanent

##重启放获取
firewall-cmd --reload

5.ACME更新

此方法SSL证书默认有效期是90天,好处在于此方法默认是一个月更新一次证书。

但是由于ACME更新较快,所以记得更新ACME。

## acme.sh 更新
## 目前由于 acme 协议和 letsencrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步.
## 升级 acme.sh 到最新版 :

##手动升级。如果你不想, 可以开启自动升级:
acme.sh --upgrade

##自动更新:
##acme.sh 就会自动保持更新了.
acme.sh  --upgrade  --auto-upgrade

##关闭自动更新
acme.sh --upgrade  --auto-upgrade  0

6. 手动更新ACME证书(证书过期使用)

单域名更新方法

acme.sh --renew -d www.xxx.com --force

或 通配符更新方法

acme.sh --renew -d xxx.com -d *.xxx.com --force

注意过程可能再次出现DNS错误,这里可以查看常见问题二的解决方法

注意:这里要执行上面的renew来覆盖更新证书,而不是申请,别弄错了

证书更新玩后,需要重启nginx

nginx -s reload

7. 常见问题

以下是申请过程-常见错误说明:(未出现错误,跳过此段)

问题一:acme.sh --register-account -m my@example.com

“证书申请”过程中,出现如下错误:

acme.sh --register-account -m my@example.com

出现错误是因为没有注册acme账号需要执行脚本进行账号申请

解决办法:

##注意test@abc.com 为你的个人邮箱,记得替换
acme.sh  --register-account  -m test@abc.com --server zerossl

成功。然后再次执行证书申请代码。


 

问题二:Adding txt value......

“证书申请”过程中出现如下错误:

Adding txt value: W9IRKarSz7S1RKS8goMFDOK1dGDEjP4PLGuxNjXIUY4 for domain:  _acme-challenge.abc.com

 这是因为你的域名和DNS密钥不在一个服务商

解决办法:

重新执行part1,去你域名指定的服务商去查看,拿到后,再次执行下面代码

##注:此处的APPID 和APPkey为第一步我们从阿里云RAM中获取的
export Ali_Key="Key_XXX"
export Ali_Secret="Secret_XXX"

同时进入/root/.acme.sh目录,修改Ali_Key和ALI_Secret

vi account.conf

修改完记得wq保存。然后再次执行证书申请代码。

问题三:nginx 出现. env: /etc/init.d/redis: Permission denied

解决办法:env: /etc/init.d/redis: Permission denied_极客on之路-CSDN博客

问题四: Failed to reload-or-try-restart nginx.service: Unit not found

解决办法:添加 Nginx 为系统服务(service nginx start/stop/force-reload)_weixin_34279579的博客-CSDN博客

问题五:中间证书缺少,浏览器可以正常访问,接口PKI bulid faild,小程序电脑可以打开,手机打不开等等...

报错:PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilder.

报错:微信小程序服务端-电脑端可以访问,手机不能访问

检测:

检测SSL证书是否出现错误:中间证书缺少

检测地址:SSL服务器证书安装检查器_OPENSSL工具包_迅通诚信

解决办法:(nginx)

ssl_certificate /data/cert/abc.com/fullchain.crt;
ssl_certificate_key /data/cert/abc.com/abc.com.key;
ssl_trusted_certificate /data/cert/abc.com/fullchain.crt;

 注意:这里ssl_certificate 配置由原本的abc.com.crt 变成fullchain.crt了,同时配置ssl_trusted_certificate 信任证书

重启nginx

nginx -s reload

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ACME.SH 申请SSL证书(免费、自动更新) 的相关文章

随机推荐

  • 解决 Microsoft Edge Dev 版本中右上角的 bing 按钮消失的问题 让 New Bing 还能阅读分析文档!

    Microsoft Edge Dev 右上角的必应图标消失了 xff0c 使得无法用 New Bing 阅读分析文档 xff0c 到底什么原因呢 xff1f 针对 Microsoft Edge Dev 版本中右上角的发现按钮消失的问题 xf
  • OpenStack网络指南(7)防火墙即服务(Firewall-as-a-service)

    Firewall as a Service xff08 FWaaS xff09 插件将防火墙应用于OpenStack对象 xff0c 如项目 xff0c 路由器和路由器端口 OpenStack防火墙的核心概念是防火墙策略和防火墙规则的概念
  • OpenStack网络指南(14)DNS集成

    此页面作为如何使用网络服务的DNS集成功能的指南 描述的功能从两个角度涵盖DNS xff1a 网络服务提供的内部DNS功能及其与Compute服务的交互 将计算服务和网络服务与外部DNSaaS xff08 DNS即服务 xff09 集成 用
  • 2022年,立个Flag

    2021年在平静的生活中 xff0c 慢慢的从手指缝中划过 xff0c 新的一年已经都来 xff0c 我也立下几个flag xff0c 待明年末来验收 2022年我希望自己可以开始并坚持做一些事 xff1a 1 实现自己定义的目标 xff0
  • 零开始学习OpenWrt完美教程

    http zhidx com p 186 html 从零开始学习OpenWrt完美教程 Cisco Linksys在2003年发布了WRT54G这款无线路由器 xff0c 同年有人发现它的IOS是基于Linux的 xff0c 然而Linux
  • Sublime Text3使用总结

    写在前面的话 xff1a 平时做项目中在用eclipse和vs xff0c 但是对于一些小项目 xff0c 感觉没有必要搞那么大的一个工具使用 xff0c 比如写个小微商城 xff0c 搞个小脚本了什么 xff0c 所以就一直在用Subli
  • Gym 101028J 100541D

    Gym 100499I 这题当理解题意的时候就出现一个难题 xff0c 循环小数怎么转化为分数 xff0c 果断百度下 普及知识 xff1a 1 纯循环小数 小数点后有几位数 分母就有几个9 分子为一个循环节 如 0 345 345循环 6
  • Wayland与Weston简介

    xfeff xfeff 简单地说 xff0c Wayland是一套display server Wayland compositor 与client间的通信协议 xff0c 而Weston是Wayland compositor的参考实现 其
  • 什么是IaaS,PaaS和SaaS及其区别

    云计算的三种服务模式 xff1a IaaS xff0c PaaS和SaaS Infrastructure xff08 基础设施 xff09 as a Service xff0c Platform xff08 平台 xff09 as a Se
  • Backup for tire

  • 用QXDM获取log的方法说明

    用 QXDM 获取 log 的方法说明 对于获取 LOG 可能我们会有一些误解 测试人员害怕得到的 LOG 信息不全 而将所有的选项都选上 希望能够得到最全的 LOG 其实不然 受到手机及手机与 PC 的通讯限制 如果选择保存所有的 LOG
  • Python环境变量PYTHONPATH设置和easy_install简单使用

    1 把自己编写的 python模块添加到 PYTHONPATH上 要想让 python解释器找到自己编写的模块 xff0c 则该模块必须 PYTHONPATH上 xff0c 否则在导入该模块时会出现找不到该模块的错误 xff0c 因此必须把
  • 超级有用的git reset --hard和git revert命令

    很多时候 xff0c git新手容易误操作 xff0c 比如 xff0c 在levelIISZ 1 4 dev分支下 xff0c 运行了git pull idc cpp 1 0的结果 xff0c 这样做麻烦很大 xff0c 经常导致mave
  • android 为什么需要签名

    所有的Android应用程序都要求开发人员用一个证书进行数字签名 xff0c anroid系统不会安装没有进行签名的由于程序 平时我们的程序可以在模拟器上安装并运行 xff0c 是因为在应用程序开发期间 xff0c 由于是以Debug面试进
  • 高通平台工具使用

    OverView QPST 综合工具 传输文件 查看 device 的 EFS 文件系统 代码烧录 QRCT 测试RF QXDM 看log JTAG trace32调试 QPST QXDM的使用说明 xff0c 具体的可以看我上传到csdn
  • git创建与管理远程分支

    1 远程分支就是本地分支push到服务器上的时候产生的 比如master就是一个最典型的远程分支 xff08 默认 xff09 1 git push origin master 除了master之外 xff0c 我们还可以随便创建分支 xf
  • pthread_key_t和pthread_key_create()详解

    下面说一下线程中特有的线程存储 xff0c Thread Specific Data 线程存储有什么用了 xff1f 他是什么意思了 xff1f 大家都知道 xff0c 在多线程程序中 xff0c 所有线程共享程序中的变量 现在有一全局变量
  • 2016 Personal Training #11 Div.2 B G J

    UVALive 5963 题意 xff1a 给你n个数 xff0c 如果这n个数满足 xff1a 例如n 61 4第一个数前面有0个数后面有三个数那么这第一个位置数可以为0或者3 xff0c 第二个位置可以为1或2等等 给出的n个数满足则输
  • Ubuntu22.04安装CUDA11.8和CUDNN

    下载CUDA11 8 下载CUDA11 8 选择对应的系统 架构 OS 版本 逐步执行上图命令 编辑环境变量文件 sudo gedit bashrc 配置环境变量 export PATH 61 usr local cuda 11 8 bin
  • ACME.SH 申请SSL证书(免费、自动更新)

    1 获取DNS密钥 xff08 1 xff09 获取域名服务商AccessKey ID及AccessKey Secret 我使用的域名是阿里云 xff0c 故需要去阿里云RAM管理平台获取 xff1a 其他服务商 xff0c 可以去指定的服