上一篇文章找了个 php 方式获取证书的脚本
http://happysoul.iteye.com/blog/2390306
这次再放上个 shell+python 不需要过多方式的脚本(全程需要访问互联网以及调用网站进行身份校验需确保能联网)
运行前本地有的文件
引用
letsencrypt.conf
letsencrypt.sh
执行代码log截取
root@localhost:~/acme_py# ./letsencrypt.sh letsencrypt.conf
Generate account key...
Generating RSA private key, 4096 bit long modulus
...........++
.........................++
e is 65537 (0x10001)
Generate domain key...
Generating RSA private key, 2048 bit long modulus
..........................+++
................+++
e is 65537 (0x10001)
Generate CSR...domain.csr
Parsing account key...
Parsing CSR...
Registering account...
Registered!
Verifying 隐藏.f3322.net...
隐藏.f3322.net verified!
Signing certificate...
Certificate signed!
New cert: domain.chained.crt has been generated
ls显示本地的文件
引用
account.key
acme_tiny.py
domain.chained.crt
domain.crt
domain.csr
domain.key
letsencrypt.conf
letsencrypt.sh
lets-encrypt-x3-cross-signed.pem
粘贴配置文件和运行文件
#!/bin/bash
# Usage: /etc/nginx/certs/letsencrypt.sh /etc/nginx/certs/letsencrypt.conf
CONFIG=$1
ACME_TINY="/tmp/acme_tiny.py"
DOMAIN_KEY=""
if [ -f "$CONFIG" ];then
. "$CONFIG"
DIRNAME=$(dirname "$CONFIG")
cd "$DIRNAME" || exit 1
else
echo "ERROR CONFIG."
exit 1
fi
KEY_PREFIX="${DOMAIN_KEY%%.*}"
DOMAIN_CRT="$KEY_PREFIX.crt"
DOMAIN_PEM="$KEY_PREFIX.pem"
DOMAIN_CSR="$KEY_PREFIX.csr"
DOMAIN_CHAINED_CRT="$KEY_PREFIX.chained.crt"
if [ ! -f "$ACCOUNT_KEY" ];then
echo "Generate account key..."
openssl genrsa 4096 > "$ACCOUNT_KEY"
fi
if [ ! -f "$DOMAIN_KEY" ];then
echo "Generate domain key..."
if [ "$ECC" = "TRUE" ];then
openssl ecparam -genkey -name secp256r1 | openssl ec -out "$DOMAIN_KEY"
else
openssl genrsa 2048 > "$DOMAIN_KEY"
fi
fi
echo "Generate CSR...$DOMAIN_CSR"
OPENSSL_CONF="/etc/ssl/openssl.cnf"
if [ ! -f "$OPENSSL_CONF" ];then
OPENSSL_CONF="/etc/pki/tls/openssl.cnf"
if [ ! -f "$OPENSSL_CONF" ];then
echo "Error, file openssl.cnf not found."
exit 1
fi
fi
openssl req -new -sha256 -key "$DOMAIN_KEY" -subj "/" -reqexts SAN -config <(cat $OPENSSL_CONF <(printf "[SAN]\nsubjectAltName=%s" "$DOMAINS")) > "$DOMAIN_CSR"
wget https://raw.githubusercontent.com/diafygi/acme-tiny/master/acme_tiny.py --no-check-certificate -O $ACME_TINY -o /dev/null
if [ -f "$DOMAIN_CRT" ];then
mv "$DOMAIN_CRT" "$DOMAIN_CRT-OLD-$(date +%y%m%d-%H%M%S)"
fi
DOMAIN_DIR="$DOMAIN_DIR/.well-known/acme-challenge/"
mkdir -p "$DOMAIN_DIR"
python $ACME_TINY --account-key "$ACCOUNT_KEY" --csr "$DOMAIN_CSR" --acme-dir "$DOMAIN_DIR" > "$DOMAIN_CRT"
if [ "$?" != 0 ];then
exit 1
fi
if [ ! -f "lets-encrypt-x3-cross-signed.pem" ];then
wget https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem --no-check-certificate -o /dev/null
fi
cat "$DOMAIN_CRT" lets-encrypt-x3-cross-signed.pem > "$DOMAIN_CHAINED_CRT"
if [ "$LIGHTTPD" = "TRUE" ];then
cat "$DOMAIN_KEY" "$DOMAIN_CRT" > "$DOMAIN_PEM"
echo -e "\e[01;32mNew pem: $DOMAIN_PEM has been generated\e[0m"
fi
echo -e "\e[01;32mNew cert: $DOMAIN_CHAINED_CRT has been generated\e[0m"
#service nginx reload
# only modify the values, key files will be generated automaticly.
ACCOUNT_KEY="account.key"
DOMAIN_KEY="domain.key"
DOMAIN_DIR="/www/"
DOMAINS="DNS:隐藏.f3322.net"
#ECC=TRUE
#LIGHTTPD=TRUE
如果有多个域名可以使用逗号分隔,举例
引用
DOMAINS="DNS:ww1.f3322.net,DNS:ww2.f3322.net,DNS:ww3.f3322.net"
后面就是配置nginx的证书了,见上一篇
最后提供脚本和内置下载的py和pem做参考
分享到:
相关推荐
通过阿里云 DNS 为 Let's Encrypt 签发证书提供验证的脚本工具。 功能 支持签发多域名证书 支持签发 ACMEv2 的通配符证书(配置开启 acme-version=v2) 如果此前使用了 ACMEv1 签发的证书,那么建议在升级前将 /...
描述: Let’s Encrypt 官方推荐的客户端工具,用于自动获取和管理 SSL 证书。支持获取通配符证书,但要求通过 DNS-01 挑战进行域名验证。 主要功能: 自动化证书请求、续期、配置;支持 DNS 插件,用于自动更新 DNS ...
Let's Encrypt免费证书客户端最简单的shell脚本。 纯粹用Shell编写,不依赖于python或官方的Let's Encrypt客户端。 只需一个脚本即可自动颁发,续订和安装证书。 不需要root/sudoer访问权限。 支持在Docker内使用,...
acme.sh 实现了 acme 协议,可以从 Let's Encrypt 生成免费的证书,内含完整源代码 生成证书 acme.sh 实现了 acme 协议支持的所有验证协议,有两种方式验证: http 验证 和 dns 验证。 1. http 方式 http 方式需要...
通过阿里云 DNS 为 Let's Encrypt 签发证书提供验证的脚本工具。 功能 支持签发多域名证书 支持签发 ACMEv2 的通配符证书(配置开启 acme-version=v2) 如果此前使用了 ACMEv1 签发的证书,那么建议在升级前将 /etc/...
使用“让我们加密SSL证书”安装私人Burp Collaborator的脚本。 应该在(Ubuntu 18.04)上工作: 带有或不带有弹性IP的Amazon AWS EC2 VM。 具有或不具有浮动IP的DigitalOcean VM。 天蓝色。 只要VM具有公共IP,...
Linux ACMesh,更准确地说是`acme.sh`,是一个基于Shell脚本的轻量级ACME客户端,用于从Let's Encrypt获取免费的TLS/SSL证书。Let's Encrypt是一个知名的非营利数字证书颁发机构(CA),它提供免费的SSL/TLS证书,以...
Let's Encrypt 是一个免费、自动化且开放的证书颁发机构,致力于促进互联网的安全和加密。 首先,我们需要理解 Ansible 角色的概念。在 Ansible 中,角色是一种组织相关任务、变量、文件、模板和默认值的方式,以便...
具有Let's Encrypt自动证书续订功能的Dockerized HAProxy 此容器为HAProxy实例提供启动时生成的“让我们加密”证书,并通过内部cron作业每周更新一次(如有必要)。 用法 从Docker Hub中提取: docker pull ...
1. 获取新的SSL证书:可以从权威的证书颁发机构(CA)购买,如Let's Encrypt。 2. 安装新证书:根据服务器类型和Web服务器软件(如Apache或Nginx),配置证书和私钥。 3. 验证并测试新证书:使用工具如Qualys SSL ...
随着Let's Encrypt等免费SSL证书颁发机构的出现,动态获取和更新SSL证书的需求也日益增加。本篇文章将详细介绍如何在Nginx服务器上实现动态SSL证书的配置,以提高网站的安全性和用户体验。 标题中的"nginx-dynamic-...
3. **Let's Encrypt证书**:Let's Encrypt是一个免费、自动化、开放的证书颁发机构,提供HTTPS证书,帮助网站实现加密连接。脚本可能包含自动申请和更新Let's Encrypt证书的流程。 4. **LDAP**:Lightweight ...
同时,为了安全,需要设置防火墙规则,仅允许必要的端口访问,并考虑使用Let's Encrypt获取免费的SSL证书。 以上就是使用Shell脚本自动化部署Nginx的基础流程。在实际操作中,可能需要根据服务器环境和特定需求进行...
标题 "脱水:将Let's Encrypt ACME客户端实现为Shell脚本" 提示我们这个项目是关于使用Shell脚本来实现Let's Encrypt的自动化证书获取。Let's Encrypt是一个免费、自动、开源的证书颁发机构(CA),它使用ACME...
Let's Encrypt是一个免费、自动化且开放的证书颁发机构,它提供了一种简单的方式来获取和自动更新SSL/TLS证书,以确保网站的安全。 在描述中提到,“Bash脚本和Let's Encrypt&Apache配置”是这个工具的核心部分。...
c-rieger.de-使用Shell安装Nextcloud ...self signed certificates or Let's Encrypt SSL UFW (22, 80, 443) 唯一的前提条件是使用Ubuntu 18.04 LTS 64Bit作为服务器操作系统。 至少(可选),您可以通过发出第
"可能是最简单的创建方法"暗示我们将讨论如何简便快捷地通过Let's Encrypt获取并部署SSL/TLS证书。 描述部分的“更新|部署证书”意味着我们将探讨如何更新已有的Let's Encrypt证书以及在Web服务器上正确安装和配置...
9. **acme-sh**:acme-sh是一个用于获取Let's Encrypt证书的shell脚本工具,简化了证书申请和自动更新的过程。在这个项目中,它可能与Let's Encrypt一起用于自动维护SSL证书的有效性。 10. **HomebridgeSmarty**:...
为了使用这个脚本,用户需要对基本的Shell脚本和命令行操作有一定的了解,同时需要在树莓派上安装必要的工具,如certbot(Let's Encrypt的客户端)和其他可能的依赖项。在运行脚本之前,用户应确保了解其工作原理,...