相比于现有实现,不需要安装任何第三方程序或者 C 扩展,所有依赖均为 Lua 和 FFI 实现。

安装

使用 opm:

opm install fffonion/lua-resty-acme

opm 中没有 luaossl 库,所以这种安装使用的是基于 FFI 的 Openssl 后端;需要 OpenResty 链接了大于等于 1.1 版本的 OpenSSL。

如果有完整的编译工具链,可以使用 luarocks 安装,需要安装 OpenSSL 的头文件:

luarocks install lua-resty-acme

使用

以 /etc/openresty 目录为例,如果目录不存在,请自行修改。

生成一个账户密钥

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:4096 -out /etc/openresty/account.key

生成一个默认证书

openssl req -newkey rsa:2048 -nodes -keyout /etc/openresty/default.pem -x509 -days 365 -out /etc/openresty/default.key

在 Nginx 配置的 http 节插入以下内容

resolver 8.8.8.8;

lua_shared_dict acme 16m;

lua_shared_dict autossl_events 128k;

init_by_lua_block {

require("resty.acme.autossl").init({

-- setting the following to true

-- implies that you read and accepted https://letsencrypt.org/repository/

tos_accepted = true,

-- uncomment following for first time setup

-- staging = true,

-- uncomment folloing to enable RSA + ECC double cert

-- domain_key_types = { 'rsa', 'ecc' },

account_key_path = "/etc/openresty/account.key",

account_email = "此处填写邮箱",

})

}

init_worker_by_lua_block {

require("resty.acme.autossl").init_worker()

}

# required to verify Let's Encrypt API

lua_ssl_trusted_certificate /etc/ssl/certs/ca-certificates.crt;

lua_ssl_verify_depth 2;

CentOS/Fedora 等系统的根证书在 /etc/ssl/certs/ca-bundle.crt ,请根据实际情况修改 lua_ssl_trusted_certificate。

首次配置时,建议将 init_by_lua_block 中的 staing = true 取消注释,以防错误过多触发限流;测试通过后再加回注释使用生产 API。

在需要使用证书的 server 节插入

server {

server_name example.com;

# fallback certs, make sure to create them before hand

ssl_certificate /etc/openresty/default.pem;

ssl_certificate_key /etc/openresty/default.key;

ssl_certificate_by_lua_block {

require("resty.acme.autossl").ssl_certificate()

}

location /.well-known {

content_by_lua_block {

require("resty.acme.autossl").serve_http_challenge()

}

}

}

配置完成后,reload nginx。

福利:

# RSA

echo q |openssl s_client -connect 随机子域名.acme.yooooo.us -port 8443 -cipher ECDHE-RSA-AES128-GCM-SHA256|openssl x509 -noout -text|grep -P "Public Key Algorithm|After"

# ECC

echo q |openssl s_client -connect 随机子域名.acme.yooooo.us -port 8443 -cipher ECDHE-ECDSA-AES128-GCM-SHA256|openssl x509 -noout -text|grep -P "Public Key Algorithm|After"

首次请求后等 10 秒钟,即可收到新证书加密的链接

欢迎讨论和提供建议!

acmev2怎么用_lua-resty-acme: ACMEv2 客户端和 Let's Encrypt 证书的自动化管理相关推荐

  1. GDC服务器主机与证书不匹配,调用web服务soap时,错误https URL主机名与客户端信任库中服务器证书上的公用名(CN)不匹配...

    嘿,我想用SAAJ调用soap web服务 我用野蝇10 我试图将此系统属性添加到standalone.xml,但无法工作 20: 53:08208错误[stderr](默认任务-21),原因是:ja ...

  2. 使用 acme.sh 生成免费的泛域名证书

    原文发布在 不二博客 在 使用 acme.sh 为网站生成永久免费证书 一文中介绍了如何安装 acme.sh 以及如何生成证书,这篇文章就来说一说如何使用 acme.sh 来生成泛域名证书,即主域名和 ...

  3. 群晖使用acme自动申请Let‘s Encrypt证书脚本

    前言 最近做数据迁移,准备把一些自建服务都迁移到群晖上,但群晖自带的Let's Encrypt证书申请总是提示:命令运行失败,请重新登陆DSM再试一次 按提示多次尝试未果,没办法,那就自己动手吧. 说 ...

  4. 威联通QNAP使用acme.sh工具自动续签到期SSL证书

    文章目录 一.acme.sh工具介绍 二.部署准备 三.acme.sh安装 四.Shell脚本 五.Crontab定时任务 [高能!]部署坑点 威联通原先系统是自带Let's Encrypt SSL免 ...

  5. 使用 acme.sh 为网站生成永久免费证书

    原文发布在 不二博客 HTTP 2.0 时代几乎所有的网站都是 https 访问方式了,想要实现 https 访问,安全证书就是绕不过去的坎,域名服务商一般都会提供了免费证书注册,网上也可以搜索很多, ...

  6. Rocky(Centos)使用acme.sh申请安装Let‘s Encrypt泛域名ECC证书(阿里DNS)

    现代的浏览器开始有将 https 访问作为默认访问方式的倾向,因此需要将网站配置为https 访问. Let's Encrypt 组织提供免费的 TLS 加密证书,用于协助web服务器实现https协 ...

  7. linux与python客户端,《使用python进行unix和linux管理》§5网络 §5.1 网络客户端

    §5网络 2009-9-13 磁针石:xurongzhong#gmail.com §5.1网络客户端 §5.1.1 socket # python Python 2.6.2 (r262:71600, ...

  8. asp.net session 如何知道是哪个浏览器客户端_微服务下的分布式session管理

    享学课堂特邀作者:老顾转载请声明出处! 前言 今天老顾带着大家了解一下session会话在微服务架构中采用的技术方案,以及 企业应用中需要注意的问题. session作用 我们知道在web应用中,we ...

  9. acme.sh签发Let‘s Encrypt证书

    1.安装acme.sh curl https://get.acme.sh | sh 2.手动 dns 方式, 手动在域名上添加一条 txt 解析记录, 验证域名所有权 这种方式的好处是, 你不需要任何 ...

最新文章

  1. 脑电分析系列[MNE-Python-2]| MNE中数据结构Epoch及其创建方法
  2. ARP协议抓包分析 -- wireshark
  3. Splash 渲染引擎简介
  4. Redis缓存击穿和缓存雪崩、缓存穿透以及对应的解决方案
  5. IT架构的本质:工作12年,我的五点感悟
  6. 用面粉和醋洗头 让你的头发黑亮又浓密
  7. 浏览器访问pdf 的url怎么加密_怎么解决加密的pdf文件?
  8. 蜂鸟笔记本swift接口_蜂鸟Swift 5可清新文艺、又可尊贵典雅
  9. php 上传文件 例子,php上传文件实例
  10. 洛谷P3195 [HNOI2008]玩具装箱TOY——斜率优化DP
  11. termux安装java,android下的termux模拟器安装openJDK和运行springboot项目
  12. 零基础怎么学习平面设计
  13. 2022年AI领域有哪些重要突破?(附报告全文)
  14. UDS的19 04读取快照信息解析
  15. 【Python】Decision on buying cars COROLLA or LEVIN(数据分析技术实现过程之·2 data_analysis①)
  16. 固态硬盘,机械硬盘,交换内存,虚拟内存,物理内存,这些你要知道!!
  17. python 使用smtp发送群邮件
  18. Java Entry类详解
  19. 机械臂操作运动传送带上的物体
  20. ASEMI二极管A7参数,A7二极管规格书,A7二极管的封装

热门文章

  1. Java GUI编写一个简单的抽奖机
  2. 数学学习在计算机研究领域的作用和重要性
  3. C/S和B/S平滑模糊的时代----推荐:云计算时代的生命周期(吕建伟)
  4. 苹果电脑 开机密码 忘记了, 黑苹果系统
  5. Android开发--WIFI输入密码Dialog的实现
  6. mysql集群 MySQL Cluster
  7. 机器学习中【回归算法】详解
  8. zedboard运行linux,(转载)一步一步学ZedBoard Zynq(六):在ZedBoard上运行linux并编写linux下的应用程序HelloWorld...
  9. golang语言 []interface{}和interface{}
  10. 姓氏头像框一键制作小程序源码