此儲存庫包含 PowerShell 腳本,用於自動化從 ZeroSSL 獲取和管理 SSL 憑證的過程。
graph TD
    A[開始憑證請求] --> B[建立憑證請求];
    B --> C[取得 CNAME 驗證資訊];
    C --> D[使用者確認 DNS 記錄已生效];
    D --> E[驗證 CNAME 記錄];
    E --> F{等待驗證完成};
    F --> |未簽發| F{等待驗證完成};
    F --> |簽發| G[下載憑證包];
    G --> H[儲存憑證檔案];
    | 情境描述 | 腳本名稱 | 
|---|---|
| 開始憑證請求 | new-zerossl-certificate.ps1 | 
| 建立憑證請求 | create-zerossl-certificate.ps1 | 
| 取得 CNAME 驗證資訊 | get-zerossl-cname-challenge-info.ps1 | 
| 驗證 CNAME 記錄 | verify-zerossl-cname-validation.ps1 | 
| 等待驗證完成 | wait-zerossl-validation-completion.ps1 | 
| 下載憑證包 | download-zerossl-certificate-bundle.ps1 | 
| 儲存憑證檔案 | save-zerossl-certificate-files.ps1 | 
- new-zerossl-certificate.ps1: 協調整個 ZeroSSL 憑證請求過程。它接受 API 金鑰、CSR 檔案路徑、網域清單和輸出路徑作為參數。它呼叫其他腳本來建立憑證、取得 CNAME 驗證資訊、驗證 CNAME 記錄、等待驗證完成、下載憑證包,並將憑證檔案儲存到指定的路徑。
- create-zerossl-certificate.ps1: 使用 ZeroSSL API 和提供的 CSR 檔案,為指定的網域建立新的憑證。它將憑證請求提交到 ZeroSSL API 並傳回憑證 ID。
- get-zerossl-cname-challenge-info.ps1: 使用 ZeroSSL API 和提供的憑證 ID 檢索 CNAME 驗證資訊。它向 ZeroSSL API 發出請求並傳回每個網域的 CNAME 驗證資訊,包括目標主機和目標記錄。
- verify-zerossl-cname-validation.ps1: 通知 ZeroSSL API 執行 CNAME 驗證。它接受 API 金鑰和憑證 ID 作為參數。它向 ZeroSSL API 發出請求,以使用 CNAME_CSR_HASH 方法驗證憑證。
- wait-zerossl-validation-completion.ps1: 輪詢 ZeroSSL API,直到頒發憑證或達到最大重試次數。它接受 API 金鑰和憑證 ID 作為參數。它定期向 ZeroSSL API 發出請求,以檢查憑證狀態。
- download-zerossl-certificate-bundle.ps1: 使用 ZeroSSL API 和提供的憑證 ID 下載憑證包。它向 ZeroSSL API 發出請求並傳回憑證包的內容。
- save-zerossl-certificate-files.ps1: 將憑證檔案儲存到指定的路徑。它接受憑證資料(包含憑證和 CA 鏈)和輸出路徑作為參數。它建立輸出資料夾(如果不存在)並將主憑證和 CA 鏈儲存為- .crt檔案。
- 
安裝 OpenSSL。 
- 
執行以下指令,它應該會要你打一些資訊,視你情境去輸入。 openssl req -nodes -newkey rsa:2048 -sha256 -keyout example.key -out example.csr 
- 
產生出來的 example.key請保管好。
- 
產生出來的 example.csr拿來作為 CSR 檔案輸入。
.\new-zerossl-certificate.ps1 -ApiKey <key> -CsrPath <csrpath> -Domains @("example.com") -OutputPath ".\cert"- Email 驗證
- CNAME 驗證
- File 上傳驗證
目前僅支援 CNAME 驗證。