以下腳本是在Windows下用PowerShell的ACMESharp申請 let's encrypt的免費SSL證書(單證書簽多域名)
$domain1 = "www.domain.com"
$alias2 = "www$(get-date -format yyyyMMddHH)"
$domain2 = "us.domain.com"
$alias2 = "us$(get-date -format yyyyMMddHH)"
$multiNameCert = "multiNameCert$(get-date -format yyyyMMddHH)"
$certPassword = "pa$$word"
$mail = "lu@shaobin.cn"
$path = "D:\證書\path\"
#1 導入模塊
Import-Module ACMESharp
#2 初始化存儲證書和相關信息
Initialize-ACMEVault
#3 注冊用戶信息
New-ACMERegistration -Contacts mailto:$mail -AcceptTos
#4 創建域名
New-ACMEIdentifier -Dns $domain1 -Alias $alias1
#驗證域名所有權( 5.1 IIS驗證 和5.2 DNS驗證 方式選擇 一個就可以 )
#5.1.1 基於IIS驗證(IIS的站點名和驗證的域名要一致)
Complete-ACMEChallenge $alias1 -ChallengeType http-01 -Handler iis -HandlerParameters @{ WebSiteRef = '$domain1' }
#5.1.2 提交申請
Submit-ACMEChallenge $alias1 -ChallengeType http-01
#5.2.1 基於DNS 認證(需要添加一條TXT記錄)
Complete-ACMEChallenge $alias1 -ChallengeType dns-01 -Handler manual
#5.2.2 提交申請
Submit-ACMEChallenge <Mark> -ChallengeType dns-01
#5.2.3 驗證DNS
(Update-ACMEIdentifier $alias1 -ChallengeType dns-01).Challenges | Where-Object {$_.Type -eq "dns-01"}
#6 查看Let's Encrypt的驗證結果
Update-ACMEIdentifier $alias1
# 重復4-6流程 添加第2個域名
#7 創建證書(-AltRefs 多域名一起提交)
New-ACMECertificate $alias1 -Generate -AltRefs $alias1,$alias2 -Alias $multiNameCert
#8 提交證書
Submit-ACMECertificate $multiNameCert
#9 更新證書
Update-ACMECertificate $multiNameCert
#10 下載證書文件
#下載私鑰
Get-ACMECertificate $multiNameCert -ExportKeyPEM "$path$multiNameCert.key.pem"
#下載證書簽名請求(CSR)
Get-ACMECertificate $multiNameCert -ExportCsrPEM "$path$multiNameCert.csr.pem"
#下載LE證書
Get-ACMECertificate $multiNameCert -ExportCertificatePEM "$path$multiNameCert.crt.pem"
#下載CA中間證書
Get-ACMECertificate $multiNameCert -ExportIssuerPEM "$path$multiNameCert-issuer.crt.pem" -ExportIssuerDER "$path$multiNameCert-issuer.crt"
#下載IIS用的pfx文件
Get-ACMECertificate $multiNameCert -ExportPkcs12 "$path$multiNameCert.pfx" -CertificatePassword $certPassword
相關鏈接:
ACMESharp:https://github.com/ebekker/ACMESharp
參考文章:http://www.cnblogs.com/denny-duan/p/apply-free-ssl-ca-win7-powershell-letsencrypt.html
