Namesilo 域名+ acme.sh脚本实现免费SSL证书

编程教程 (101) 2024-11-26 09:27:52

环境说明

  • ubuntu
  • docker
  • docker-compose
  • acme.sh 3.0.7

Docker-compose scripts

services:
 acme.sh:
   image: neilpang/acme.sh:3.0.7
   container_name: acme.sh
   hostname: acme.sh
   restart: always
   command: daemon
   network_mode: host
   environment:
    - Namesilo_Key=your_namesilo_api_key
   volumes:
     - ./out:/acme.sh
     - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
   deploy:
     resources:
       limits:
         memory: 512M

Namesilo_Key 获取方法参考Namesilo API KEY 获取用于生成免费SSL证书-Xqlee's Blog

Start Scripts

deploy.sh

#!/bin/sh
work_path=$(dirname $0)
cd ${work_path}
work_path=$(pwd) 
echo $work_path
docker-compose --compatibility  build;docker-compose --compatibility down;docker-compose --compatibility up -d;docker image prune -f

 

执行脚本:

chmod 755 deploy.sh
./deploy.sh

 

SSL 证书生成脚本

install-key.sh

#!/bin/sh
#Use Auge
# sudo ./install.sh *.example.com >> ./acme.log

domain_name=$1
echo $domain_name
sudo docker exec acme.sh --register-account -m domain@example.com --server zerossl
#sudo docker exec acme.sh --set-default-ca --server letsencrypt  --issue --dns dns_namesilo -d $domain_name  --log
sudo docker exec acme.sh --issue --dns dns_namesilo -d $domain_name  

sudo docker exec acme.sh --install-cert -d $domain_name \
#    --key-file       /acme.sh/issue/$domain_name.key.pem  \
#    --fullchain-file /acme.sh/issue/$domain_name.cert.pem

 

执行脚本:

chmod install-key.sh
./install-key.sh
操作示例图-dc9088a2d011469482c8d06a48ffc03a.png

执行时间根据dns刷新时间而定,namesilo一般来说10分钟内搞定。搞定后证书存放主机的out目录

 

 

定时执行

将脚本 install-key.sh 添加到crontab 任务中。在执行crontab key任务一定时间后重载nginx配置

# m h  dom mon dow   command
#ssl get *.example.com
30 20 * * *  sudo sh /opt/docker/acme.sh/install-key.sh *.example.com>> /opt/docker/acme.sh/acme.log

# reload nginx , after ssl task
00 21 * * *  sudo nginx -s reload
#reload docker nginx 
#sudo docker exec -it nginx /bin/bash -c "nginx -s reload"

 

将out目录映射到docker nginx容器,或者主机nginx目录软链接out目录到nginx的conf.d下也可以。

操作示例图-681e4472eb5f449ebf0a781a9bb9fae7.png
Docker 挂在参考

nginx conf 配置部分

#blog.example.com
server {
    listen       80;
    server_name  blog.example.com;
	location / {
		#HTTPS 301
		rewrite ^(.*)$ https://blog.example.com/$1 permanent;
	}
}

#ssl blog.example.com
server {
    listen       443 ssl;
    server_name  blog.example.com;
	#ssl 
	ssl_certificate conf.d/ssl/*.example.com_ecc/fullchain.cer;
	ssl_certificate_key conf.d/ssl/*.example.com_ecc/*.example.com.key;

    location / {
		proxy_pass  http://example:8080/;
    }
}

 

acme 版本不同证书的目录不同,

有些版本是 *.exmple.com/fullchina.cer

新版本是:*.exmple.com_ecc/fullchina.cer

 

 

 


评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。
s
sumny 2024-11-23 13:35
Good Jobs !
A
Author 作者 2024-11-23 13:51
Thinks...

相关文章
环境说明ubuntudockerdocker-composeacme.sh 3.0.7Docker-compose scriptsservices: acme.
acme.sh说明acme.sh是一个Let's SSL证书颁发的官方推荐shell脚本开源免费安装acme.shcurl https://get.acme.sh | sh提示:普通用户和 ro...
acme.sh 安装证书使用解决Java证书无法验证问题acme.sh v3 换了ssl的证书签发机构,需要先注册一个邮箱acme.sh 注册邮箱acme.sh --register-accou...
acme.sh 获取let's encrypt免费ssl证书https
acme.sh脚本docker方式使用获取免费SSL证书环境docker构建version:"3.8"services:acme.sh:image:neilpang/acme.sh:3.0.4c...
阿里云(原万网)域名,配合acme.sh 脚本申请免费的泛型SSL证书,开启HTTPS时代。首先是创建阿里云的子账号赋予子账号域名DNS相关操作权限,参考:
要获取NamesiloAPIKEY首先要找到入口https://www.namesilo.com/account/api-manager打开页面后有几个地方需要setting
问题描述Jenkins pipeline 流水线 执行 sh命令/shell脚本遇到 exit code 1。主要是部分工具有特殊问题,例如grep工具,在找得
Docker MySQL数据库备份脚本参考 title(backup.sh)#!/bin/sh# useage# /path/to/backup.sh dbNa
Linux crontab常用表达式查看crontab任务crontab -l编辑crontab任务crontab -e每隔多少秒执行一次脚本* * * * * sleep 10; /bin/y...
该脚本主要用于检查tomcat进程是否在线,如果不在线就启动tomcat服务#!/bin/sh res=`ps -ef|grep /home/xqlee/tomcat/bin/bootstra...
安装docker群晖套件中心,找到ContainerManager,安装这个套件配置TUN群晖控制面板打开ssh登录然后通过xshell管理员账号登录上去依次按下面顺序执行命令切换到rootsu...
Android_开发_申请网络访问权限步骤一:配置允许HTTP明文访问xml文件在res的xml目录添加以下网络配置文件允许HTTP协议的明文访问(Androi
主要记录Linux系统中的shell脚本编程时。常遇到的一些语法用处记录。持续更新。
前置说明,项目配置了个全局PATH,估计是为了方便复杂环境单容器多项目部署用的老项目配置方式var PATH = [[${#httpServletRequest.getScheme() + ":...