自学内容网 自学内容网

SSL证书自动申请脚本

介绍(直接翻译的)

PowerShell模块和ACME客户端,用于从具有 ACME 功能的证书颁发机构(例如Let’s Encrypt )创建公共信任的 SSL/TLS 证书。

特点

  • 支持多域 (SAN) 和通配符 (*.example.com) 证书
  • IP 地址证书(RFC 8738)(需要 ACME CA 支持)
  • 新证书的一体化命令,New-PACertificate
  • 轻松续订Submit-Renewal
  • 支持账户和证书的 RSA 和 ECDSA 密钥
  • 针对基于DNS 和 HTTP的挑战的内置验证插件。(欢迎提出请求)
  • 支持预先创建的证书请求 (CSR)
  • PEM 和 PFX 输出文件
  • 无需提升 Windows 权限(除非使用-Install交换机)
  • 跨平台 PowerShell 支持。(常见问题解答)
  • 帐户密钥滚动支持
  • OCSP Must-Staple支持
  • DNS 挑战CNAME 支持
  • 每个 ACME CA 支持多个 ACME 帐户
  • 为需要它的 ACME CA 提供外部账户绑定支持(指南)
  • 首选链支持使用替代 CA 信任链(指南)
  • PowerShell SecretManagement支持(指南)
  • 基于草案 04 的ARI(ACME 更新信息)支持。

准备

使用的是Powershell的一个模块,叫Posh-ACME,在使用前,如果电脑没有安装过,需要先安装该模块,该模块可以快速的帮助我们从Let's Encrypt那里申请为期90天的SSL/TLS证书,并且支持通配符。

设置Powershell脚本权限

这个没什么好描述的,就是一般系统默认不允许运行ps脚本代码,这里需要修改一下计算机脚本执行策略

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force

安装Posh-ACME

该操作只要执行一遍即可!!!
该操作只要执行一遍即可!!!
该操作只要执行一遍即可!!!

# install for all users (requires elevated privs)
Install-Module -Name Posh-ACME -Scope AllUsers

# install for current user
Install-Module -Name Posh-ACME -Scope CurrentUser

导入Posh-ACME模块

该操作只要执行一遍即可!!!
该操作只要执行一遍即可!!!
该操作只要执行一遍即可!!!

Import-Module Posh-ACME

设置Email

这里设置Email是方便后期,证书快要到期时,向你的邮箱发送过期提醒

# 本人真实email哦,别搞我😐
$email = 'admin@haozekang.com'

申请DNS操作权限

在域名托管商那里申请DNS操作API\Token\AK、SK,我的域名托管在阿里云那边,所以我使用的是账户的AK和SK。
具体支持哪些运营商,可以在DNS Plugins里查询,下面我将使用阿里云作为示范,使用example.com作为样例,各位宝宝🥰在使用的时候,记得替换。

给的模板脚本如下:

# 这里会让你手动输入SK,麻烦,我给改成String转SecureString
$secret = Read-Host "Secret" -AsSecureString
$pArgs = @{
    AliKeyId = 'asdf1234'
    AliSecret = $secret
}

我的:

# 这里是随便填写的,请替换成自己的
# 设置sk,并转换为SecureString类型
$secret = ConvertTo-SecureString "asdf1234asdf1234asdf1234111111" -AsPlainText -Force

# 这里是随便填写的,请替换成自己的
# 设置参数,后面要让Posh-ACME自动化操作你的DNS解析,帮你做TXT记录值验证工作
$pArgs = @{
    AliKeyId = 'asdf1234asdf1234asdf1234'
    AliSecret = $secret
}

在这里插入图片描述

生成证书

进入正题,一下命令就是开始申请证书的一些操作了!~

New-PACertificate '*.example.com','example.com' -AcceptTOS -Plugin Aliyun -PluginArgs $pArgs -Contact $email

输入上面命令后,默认会再操作好DNS后,睡眠120秒,等待安全厂商做TXT记录校验,执行完成后,会有如下界面
在这里插入图片描述

获取证书校验状态信息,这里的status就是状态的意思,如果这里不是valid,就代表没有校验通过!

Get-PAOrder '*.example.com'

在这里插入图片描述

完成证书订单

  • 完成特定订单
Get-PAOrder '*.example.com' | Complete-PAOrder
  • 完成当前订单
# 
Complete-PAOrder

查看证书位置

Get-PACertificate | Format-List

在这里插入图片描述

每个文件对应的解释如下:

  • cert.cer (Base64 encoded PEM certificate)

PS:基于PEM格式,Base64编码的证书文件,转pem直接修改文件后缀

  • cert.key (Base64 encoded PEM private key)

PS:基于PEM格式,Base64编码的证书密钥文件,转pem直接修改文件后缀

  • cert.pfx (PKCS12 container with cert+key)

PS:基于PKCS12格式,加密的证书文件,包含了证书+密钥

  • chain.cer (Base64 encoded PEM with the issuing CA chain)

PS:基于PEM格式,Base64编码的证书链文件,转pem直接修改文件后缀

  • chainX.cer (Base64 encoded PEM with alternate issuing CA - chains)

PS:懒得翻译,我也用不到

  • fullchain.cer (Base64 encoded PEM with cert+chain)

PS:基于PEM格式,Base64编码的文件,转pem直接修改文件后缀,包含了证书+证书链

  • fullchain.pfx (PKCS12 container with cert+key+chain)

PS:基于PKCS12格式,加密的证书文件,包含了证书+密钥+证书链

我们一般使用nginx作为HTTP服务器的话,只需要关注前两个cert.cercert.key即可,cer文件改后缀为pem,我一般会把两个文件改一下命名在上传到nginx使用。

使用方法我就不提供了,百度浪浪一层,我就不废话了!

效果

在这里插入图片描述


原文地址:https://blog.csdn.net/weixin_44448313/article/details/142596414

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!