使用 API 訂購您的 DV 憑證時,通常時間都只是花費在等待要發行的憑證。遵照此工作流程指南中的步驟可以運用我們的立刻發行 DV 憑證功能,讓您可以立刻發行您 DV 憑證,並且減少您的 API 呼叫高達 70%。
若要要求 Encryption Everywhere DV 憑證,您必須遵照這些步驟並設定您帳戶的驗證金鑰。如果您不想要遵照,您將在提交要求時收到 auth_key_not_setup
錯誤。
為了善用立刻發行,您必須在提交您的 DV 憑證訂單前完成這些步驟。
如果在提交您的 DV 憑證訂單時,這些步驟全都已完成,我們會立刻發行您的 DV 憑證,並將在回應本文中將其傳回。如果略過這些步驟的其中任一個,則無法進行立刻發行。
首先,您需要建立您的您的 CertCentral 帳戶的驗證金鑰。您將使用此金鑰產生證明有網域的控制權的要求權杖。您可以用到建立驗證金鑰端點的 POST 建立驗證金鑰。
此端點的成功 POST 傳回 200 OK HTTP 回應。回應本文包括兩項關鍵資訊:
auth_key_id
– 建立的驗證金鑰的唯一 ID。auth_key
– 針對您的 CertCentral 帳戶產生的驗證金鑰。您的 CertCentral 帳戶僅能存在一個驗證金鑰。如果您的帳戶已有驗證金鑰,「建立驗證金鑰」端點會傳回 400 Bad Request HTTP 回應並有 auth_key_exists_for_account
錯誤。如果您遇到此錯誤,您可以使用驗證金鑰詳細資料端點取得您現有的驗證金鑰。
curl -X POST \
https://www.digicert.com/services/v2/account/auth-key \
-H 'Content-Type: application/json' \
-H 'X-DC-DEVKEY: {{api_key}}'
{
"auth_key_id": "{{auth_key_id}}",
"auth_key": "{{auth_key}}"
}
{
"errors": [
{
"code": "auth_key_exists_for_account",
"message": "An error occurred while processing your request."
}
]
}
您一擁有您帳戶的驗證金鑰時,下一步就是建立憑證訂單的 CSR。您需要 CSR 以產生要求權杖。請確定在安裝憑證所在的伺服器上產生您的 CSR。
需要建立 CSR 的協助嗎?請參閱建立 CSR (憑證簽章要求)。
時間戳記決定要求權杖的 30 天有效期間何時開始。建立時間戳記時,確定結果最終有效時段是否符合您提交您的 DV 憑證訂單的時間。如果您的訂單在有效時段之前或之後提交,則不會立刻發行。
您可以建立將來日期的時間戳記。但請不要在該日期前提交 DV 憑證訂單。由於要求權杖仍未"有效",,因此無法用於驗證網域。
決定要求權杖的有效期間視窗應何時開始後,您需要如以下所示格式化時間戳記。
yyyyMMddhhmmss
例如,October 21, 2019 1:30:12 PM
會變成 20191021133012
。
要求權杖有由時間戳記中的資料決定的 30 天有效期間。產生要求權杖時,確定 30 天時間戳記視窗與您提交憑證訂單的時間相符。
現在您有您的驗證金鑰、CSR 和時間戳記,您已準備好產生用於證明有網域的控制權的要求權杖。此要求權杖允許您在下憑證訂單前,設定您網域的 DNS TX廿記錄或 fileauth.txt 檔案。
0
),直到長度有 50 個字元。此範例假碼顯示如何使用上述步驟產生要求代碼:
# Declare AuthKey, CSR, and timestamp
auth_key = 'certcentral_account_auth_key'
csr = 'pem_formatted_csr'
timestamp = 'yyyyMMddhhmmss'
# Construct secret to be hashed
secret = timestamp + csr
# Hash secret using HMAC-SHA256 and auth_key
hash = hmac.sha256(secret, auth_key)
# Convert hexadecimal hash to decimal
decimal_hash = convertToBase10(hash)
# Convert decimal_hash to base36
base36_hash = convertToBase36(decimal_hash)
# If base36_hash length is < 50, prepend with zeros
valid_hash = base36_hash.padStart(50, '0')
# Construct final request token
request_token = timestamp + valid_hash
關於 DV 憑證立刻發行,您必項在訂購憑證前,將要求權杖放在這些位置之一。
一放置要求權杖後,您即可以提交您的 DV 憑證訂單。
您可以建立包含要求權杖的 DNS TXT 記錄,證明在您的 DV 憑證訂單上有網域的控制權。一建立 DNS TXT 記錄後,您就可以要求您的 DV 憑證。
使用您的要求權杖的 DNS TXT 時,確定將 dcv_method
值設定為 dns-txt-token
。
請前往您的 DNS 提供者的網站,然後建立新的 TXT 記錄。
在 TXT 值欄位中,貼上要求權杖。
視您要保護安全的憑證訂單和網域而定,針對主機欄位執行這些之一:
在記錄類型欄位 (或同等欄位) 中,選擇 TXT。
選擇存留時間 (TTL) 值,或使用您的 DNS 提供者的預設值。
儲存記錄。
提交您的 DV 憑證訂單,確定將 dcv_method
設定為 dns-txt-token
.
您可以在您網站的預定位置,託管包含要求權杖的 fileautu.txt 檔案,以證明對 DV 憑證訂單上的網域有控制權。確定避免使用檔案證時的其中一些常見錯誤。
檔案在您的網站上可用時,您就可以要求您的 DV 憑證。
使用您的要求權杖的驗證檔案時,確定將 dcv_method
值設定為 http-token
。
開啟文字編輯器 (例如記事本),然後貼在要求權杖中。
將檔案另存為 fileauth.txt。
在您的網站上使檔案在此位置可用 (視需要建立目錄)。
http://
[domain.name]
/.well-known/pki-validation/fileauth.txt
在基於 Windows 的伺服器上,必須透過命令列建立 .well-known 資料夾。mkdir .well-known
提交您的 DV 憑證訂單,確定將 dcv_method
設定為 http-token
.
您一放置要求權杖後,表示您已準備好提交您的 DV 憑證訂單要求。使用 POST (公佈) 到訂購 OV/EV SSL 端點完成此操作。
到此端點的成功 POST 將會產生 201 Created HTTP 回應代碼。如果符合立刻發行的需求,完整憑證鏈在回應本文中傳回。
下您的 DV 憑證訂單時,確定 dcv_method
值與要求權杖的位置符合。
如果缺少任一個先決條件,無法進行立刻發行。除了接收完整憑證鏈外,您將會收到標準的訂單 DV SSL 回應本文。
curl -X POST \
'https://www.digicert.com/services/v2/order/certificate/{{dv_ssl_certificate_id}}' \
-H 'Content-Type: application/json' \
-H 'X-DC-DEVKEY: {{api_key}}' \
-d '{
"certificate": {
"common_name": "example.com",
"csr": "<csr>",
"server_platform": {
"id": 2
}
},
"validity_years": 1,
"dcv_method": "dns-txt-token"
}'
curl -X POST \
'https://www.digicert.com/services/v2/order/certificate/{{dv_ssl_certificate_id}}' \
-H 'Content-Type: application/json' \
-H 'X-DC-DEVKEY: {{api_key}}' \
-d '{
"certificate": {
"common_name": "example.com",
"csr": "<csr>",
"server_platform": {
"id": 2
}
},
"validity_years": 1,
"dcv_method": "http-token"
}'
{
"id": 112339,
"certificate_id": 132345,
"certificate_chain": [
{
"subject_common_name": "example.com",
"pem": "<pem_certificate>"
},
{
"subject_common_name": "DigiCert SHA2 Secure Server CA",
"pem": "<pem_certificate>"
},
{
"subject_common_name": "DigiCert Global Root CA",
"pem": "<pem_certificate>"
}
]
}