API를 사용하여 DV 인증서를 주문할 때 많은 경우 인증서가 발급되기를 기다리면서 시간이 지나갑니다. 이 워크플로 가이드의 단계들을 따라서 DV 인증서 즉시 발급 기능을 이용하여 DV 인증서를 즉시 발급할 수 있어서 API 호출을 최대 70%까지 감소할 수 있습니다.
Encryption Everywhere DV 인증서를 요청하려면 이 단계를 따르고 계정에 대해 AuthKey를 구성해야 합니다. 그렇지 않은 경우, 요청을 제출할 때 auth_key_not_setup
오류를 받습니다.
즉시 발급을 이용하려면 DV 인증서 주문을 제출하기 전에 이 단계를 완료해야 합니다.
DV 인증서 주문을 제출할 때 모든 단계가 완료되면 즉시 DV 인증서를 발급하며 응답 본문에 포함하여 보냅니다. 건너뛴 단계가 있는 경우, 즉시 발급되지 않습니다.
먼저 CertCentral 계정에 대한 AuthKey를 만듭니다. 이 키를 사용하여 도메인에 대한 제어를 제공하기 위한 요청 토큰을 생성합니다. Create AuthKey 엔드포인트에 POST로 AuthKey를 만들 수 있습니다.
이 엔드포인트에 POST가 성공적이면 200 OK HTTP 응답이 반환됩니다. 응답 본문은 2개 정보를 포함합니다.
auth_key_id
- 만든 AuthKey의 고유한 ID입니다.auth_key
- CertCentral 계정에 대한 생성한 AuthKey입니다.CertCentral 계정에 단 한 개의 AuthKey만 존재할 수 있습니다. 계정에 이미 AuthKey가 있는 경우 Create AuthKey 엔드포인트는 auth_key_exists_for_account
오류와 함께 400 Bad Request HTTP 응답을 반환합니다. 이 오류가 발생하는 경우, AuthKey 상세 정보 엔드포인트를 사용하여 기존 AuthKey를 받을 수 있습니다.
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."
}
]
}
계정에 대한 AuthKey를 갖고 있으면 다음 단계는 인증서 주문에 대한 CSR을 만드는 것입니다. 요청 토큰을 생성하려면 CSR이 필요합니다. 인증서를 설치할 서버에서 CSR을 생성해야 합니다.
CSR을 만드는 데 도움이 필요하십니까? CSR(인증서 서명 요청) 만들기를 참조하십시오.
타임스탬프는 요청 토큰의 30일 유효 기간이 시작할 때를 결정합니다. 타임스탬프를 만들 때 결과로 나오는 유효 기간이 DV 인증서 주문을 제출할 때와 일치하게 합니다. 유효 기간 이전 또는 이후에 주문을 제출하는 경우, 즉시 발급은 발생하지 않습니다.
이후 날짜에 대한 타임스탬프를 만들 수 있습니다. 그렇지만 그 날짜 이전에 DV 인증서 주문을 제출하지 마십시오. 요청 토큰이 아직 "유효"하지 않기 때문에, 도메인을 유효성을 검사하는 데 사용될 수 없습니다.
요청 토큰의 유효 기간이 시작되는 시간을 결정한 후에 타임스탬프를 아래와 같은 형식으로 만드러야 합니다.
yyyyMMddhhmmss
예를 들어, October 21, 2019 1:30:12 PM
은(는) 20191021133012
이(가) 됩니다.
요청 토큰은 타임스탬프의 데이터에서 결정한 30일 유효 기간이 있습니다. 요청 토큰을 생성할 때 30일 타임스탬프 기간이 DV 인증서 주문을 제출할 때와 일치하게 합니다.
이제 AuthKey, CSR 및 타임스탬프가 있으므로 도메인에 대한 제어를 증명하는 요청 토큰을 생성할 준비가 되었습니다. 이 요청 토큰으로 인증서를 주문하기 전에 DNS TXT 레코드 또는 fileauth.txt 파일을 설정할 수 있습니다.
0
)을 추가합니다.이 예제 의사코드(pseudo-code)는 위 단계를 사용하여 요청 토큰을 생성하는 방법을 보여줍니다.
# 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 Value 필드에 요청 토큰을 붙여넣습니다.
인증서 주문 및 보호할 도메인에 따라서 Host 필드에 다음 중 한 개를 수행합니다.
레코드 유형 필드(또는 상응하는 필드)에서 TXT를 선택합니다.
TTL(Time-to-Live) 값을 선택하거나 DNS 공급자의 기본값을 사용합니다.
레코드를 저장합니다.
DV 인증서 주문을 제출하며, dcv_method
를 dns-txt-token
으로 설정합니다.
웹 사이트의 미리 결정된 위치에 요청 토큰을 포함하는 fileauth.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 인증서 주문을 제출할 준비가 되었습니다. 이것은 DV SSL 주문 엔드포인트에 POST로 수행합니다.
이 엔드포인트에 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>"
}
]
}