SSL / TLS 공인 인증서 주문

IBM Cloud® Secrets Manager 을 사용하여 앱 또는 서비스에 사용할 수 있는 공개 SSL / TLS 인증서를 저장, 요청 및 생성할 수 있습니다.

SSL/TLS 인증서는 서버와 클라이언트 간의 통신 개인정보 보호를 설정하는 데 사용되는 일종의 디지털 인증서입니다. 인증서는 CA(인증 기관)디지털 인증서를 발급하는 신뢰할 수 있는 서드파티 조직 또는 회사입니다. 인증 기관은 일반적으로 고유한 인증서가 부여되는 개인의 ID를 확인합니다. 에서 발급하며 엔드포인트 간에 신뢰할 수 있고 안전한 연결을 만드는 데 사용되는 정보가 포함되어 있습니다. Secrets Manager 인스턴스에 인증서를 추가한 다음 이를 사용하여 클라우드 또는 사내 구축형 배치의 네트워크 통신을 보호할 수 있습니다. 인증서는 전용 Secrets Manager 서비스 인스턴스에 안전하게 저장되며, 라이프사이클을 중앙 집중식으로 관리할 수 있습니다.

Secrets Manager 에서 타사 인증 기관에서 Secrets Manager 을 통해 주문하는 인증서는 공인 인증서입니다. 서비스로 가져오는 인증서는 가져온 인증서 (imported_cert) 입니다. 개인용 인증 기관을 사용하여 작성하는 인증서는 개인용 인증서 (private_cert) 입니다.

시작하기 전에

시작하기 전에 필수 액세스 레벨이 있는지 확인하십시오. 시크릿을 작성하거나 추가하려면 작성자 서비스 역할 이상이 필요합니다.

인증서를 주문하기 전에 다음을 확인하십시오.

현재 서비스와 통합되지 않은 DNS 제공자에 대해 작업하려면 공용 인증서를 주문하기 위한 구성을 추가할 필요가 없습니다.

공용 인증서 주문

인스턴스에 대한 공개 인증서 엔진을 구성한 후 Secrets Manager 을 사용하여 Let's Encrypt에서 SSL / TLS 공개 인증서를 요청할 수 있습니다. 인증서를 사용자에게 발행하기 전에 Secrets Manager에서 도메인 유효성 검증을 사용하여 도메인의 소유권을 확인합니다. 인증서를 주문할 때 다음을 수행하십시오.

  • Secrets Manager는 사용자의 요청을 선택된 인증 기관으로 보냅니다. 요청이 처리되고 있음을 표시하기 위해 인증서의 상태가 사전 활성화로 변경됩니다.

  • 유효성 검증이 성공적으로 완료되면 인증서가 발행되고 해당 상태가 활성으로 변경됩니다.

  • 유효성 검증이 성공적으로 완료되지 않으면 인증서의 상태가 비활성화됨으로 변경됩니다. 시크릿 테이블에서 조치 아이콘 조치 아이콘 > 세부사항 보기를 클릭하여 인증서의 발행 세부사항을 확인할 수 있습니다.

  • 유효성 검증이 성공적으로 완료되지 않으면 인증서의 상태가 비활성화됨으로 변경됩니다. 시크릿 테이블에서 조치 아이콘 조치 아이콘 > 세부사항 보기를 클릭하여 인증서의 발행 세부사항을 확인할 수 있습니다.

  • 유효성 검증이 성공적으로 완료되지 않으면 인증서의 상태가 비활성화됨으로 변경됩니다. 시크릿 메타데이터 가져오기 API를 사용하여 인증서에 대한 발행 세부사항과 연관된 resources.issuance_info 필드를 확인할 수 있습니다.

  • 인증서가 발행되면 통합 애플리케이션에 배치하거나 다운로드하거나 순환 옵션을 수정할 수 있습니다.

UI에서 통합 DNS 제공자를 사용하여 공용 인증서 주문

Secrets Manager UI를 사용하여 인증서를 주문할 수 있습니다.

  1. 콘솔에서 메뉴 아이콘 메뉴 아이콘 > 리소스 목록을 클릭하십시오.

  2. 서비스 목록에서 Secrets Manager의 인스턴스를 선택하십시오.

  3. 시크릿 표에서 추가를 클릭하십시오.

  4. 공인 인증서 주문 타일을 클릭합니다.

  5. 인증서를 쉽게 식별할 수 있도록 이름과 설명을 추가하십시오.

  6. 시크릿에 지정할 시크릿 그룹을 선택하십시오. 시크릿 그룹이 아직 없습니까? 시크릿 그룹 필드에서 작성을 클릭하여 새 그룹의 이름과 설명을 제공할 수 있습니다. 시크릿은 새 그룹에 자동으로 추가됩니다. 시크릿 그룹에 대한 자세한 정보는 시크릿 구성을 확인하십시오.

  7. 선택사항: 인스턴스에서 유사한 시크릿을 검색하는 데 도움이 되는 레이블을 추가하십시오.

  8. 선택사항: 시크릿 또는 시크릿의 특정 버전에 메타데이터를 추가하십시오. 파일을 업로드하거나 메타데이터 및 버전 메타데이터를 JSON 형식으로 입력하십시오.

  9. 다음 을 클릭하십시오.

  10. 인증 기관 구성을 선택하십시오.

    선택하는 구성에 따라 인증 서명 및 발행에 사용할 인증 기관이 결정됩니다. 인스턴스에 대해 정의된 구성을 보려면 시크릿 엔진 > 공용 인증서로 이동할 수 있습니다.

  11. 인증서의 공개 키를 생성하는 데 사용할 키 알고리즘을 선택하십시오.

선택하는 키 알고리즘은 키를 생성하고 인증서를 서명하는 데 사용할 암호화 알고리즘(RSA 또는 ECDSA) 및 키 크기를 판별합니다. 수명이 긴 인증서의 경우, 더 긴 키 길이를 사용하여 더 많은 암호화 보호를 제공하는 것이 좋습니다. 옵션에 RSA2048, RSA4096, ECDSA256ECDSA384이(가) 포함됩니다.

  1. 선택사항: 인증서의 고급 옵션을 사용하십시오.

  2. 발행된 인증서를 중간 인증서로 번들화하려면 번들 토글을 켜짐으로 전환하십시오. 인증서가 번들된 후에는 더 이상 번들되지 않을 수 있습니다. 인증서를 번들로 제공하지 않도록 선택하면 나중에 새 비밀을 만들어야만 변경할 수 있습니다.

  3. 인증서에 대해 자동 순환을 사용하려면 순환 토글을 켜짐으로 전환하십시오. 인증서가 만료되기 31일 전에 인증서가 순환됩니다.

  4. 각 로테이션마다 인증서로 새 개인 키를 요청하려면 다시 키 토글을 켜짐으로 전환합니다.

  5. DNS 제공자 구성을 선택합니다. 선택하는 구성에 따라 도메인의 소유권을 유효성 검증하기 위한 DNS 제공자가 결정됩니다. 인스턴스에 대해 정의된 구성을 보려면 시크릿 엔진 > 공용 인증서로 이동할 수 있습니다.

  6. 요청에 포함할 도메인을 추가하십시오.

  7. 도메인 선택을 클릭하십시오.

  8. 도메인 목록에서 인증서의 공통 이름을 선택하십시오.

    공통 이름은 선택 입력입니다. 공통 이름이 명시적으로 지정되지 않으면, Let's encrypt는 자동으로 64자 이하의 첫 번째 대체 이름을 공통 이름으로 지정합니다. 해당 대체 이름이 발견되지 않으면 공통 이름 없이 인증서가 발급됩니다.

    선택적으로 다음을 사용하여 유효한 도메인을 수동으로 추가할 수도 있습니다. 수동으로 도메인 추가 필드.

  9. 다음 을 클릭하십시오.

  10. 인증서의 세부사항을 검토하십시오.

  11. 추가 를 클릭하십시오.

인증서를 주문할 때 도메인 유효성 검증이 수행되어 선택한 도메인의 소유권을 확인합니다. 이 프로세스는 완료 시까지 몇 분이 소요될 수 있습니다. 인증서 세부사항을 제출하면 Secrets Manager가 선택한 인증 기관에 요청을 보냅니다. 인증서가 발행되면 통합 앱에 인증서를 배치하거나, 다운로드하거나, 수동으로 순환할 수 있습니다. SSL/TLS에 대한 개인 키는 Secrets Manager에서 직접 생성되어 안전하게 저장됩니다.

주문 상태를 확인해야 합니까? 시크릿 테이블에서 조치 아이콘 조치 아이콘 > 세부사항 보기를 클릭하여 인증서의 발행 세부사항을 확인할 수 있습니다.

CLI에서 통합 DNS 제공자를 사용하여 공용 인증서 주문

시작하기 전에 CLI 문서에 따라 API 엔드포인트를 설정하세요.

Secrets Manager CLI 플러그인을 사용하여 통합 DNS 제공자와 함께 공용 인증서를 주문하려면 ibmcloud secrets-manager secret-create command.For 예제를 실행하십시오. 다음 명령은 사용자가 지정하는 인증 기관에서 공용 인증서 시크릿을 요청합니다.

인증서를 주문할 때 도메인 유효성 검증이 수행되어 선택한 도메인의 소유권을 확인합니다. 이 프로세스는 완료 시까지 몇 분이 소요될 수 있습니다.

ibmcloud secrets-manager secret-create \
    --secret-name example-public-certificate \
    --secret-description "Extended description for this secret." \
    --secret-type public_cert \
    --secret-group-id bc656587-8fda-4d05-9ad8-b1de1ec7e712 \
    --secret-labels dev,us-south \
    --public-cert-dns dns_provider \
    --certificate-common-name cert_common_name \
    --certificate-alt-names alt_name1,alt_name2 \
    --public-cert-ca lets-encrypt-config \
    --public-cert-key-algorithm RSA2048 \
    --secret-rotation '{"auto_rotate": true, "rotate_keys": false}' \
    --secret-custom-metadata '{"anyKey": "anyValue"}' \
    --secret-version-custom-metadata '{"anyKey": "anyValue"}'

명령은 다른 메타데이터와 함께 시크릿의 ID 값을 출력합니다. 명령 옵션에 대한 자세한 정보는 ibmcloud secrets-manager secret-create의 내용을 참조하십시오.

API를 사용하여 통합 DNS 제공자와 함께 공용 인증서 주문

Secrets Manager API를 호출하여 프로그래밍 방식으로 인증서를 주문할 수 있습니다.

다음 예제는 인증서를 주문하는 데 사용할 수 있는 조회를 보여줍니다. API를 호출할 때 ID 변수와 IAM 토큰을 Secrets Manager 인스턴스에 고유한 값으로 바꾸십시오.

custom_metadataversion_custom_metadata 요청 매개변수를 사용하여 조직의 요구사항과 관련된 메타데이터를 저장할 수 있습니다. version_custom_metadata 의 값은 시크릿 버전에 대해서만 리턴됩니다. 시크릿의 사용자 정의 메타데이터는 최대 50개의 버전에 대해 다른 모든 메타데이터로 저장되며 기밀 데이터를 포함하지 않아야 합니다.

인증서를 주문할 때 도메인 유효성 검증이 수행되어 선택한 도메인의 소유권을 확인합니다. 이 프로세스는 완료 시까지 몇 분이 소요될 수 있습니다.

curl -X POST  
    -H "Authorization: Bearer {iam_token}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d '{
            "name": "example-public-certificate",
            "description": "Description of my public certificate",
            "secret_type": "public_cert",
            "secret_group_id": "bfc0a4a9-3d58-4fda-945b-76756af516aa",
            "labels": [
                "dev",
                "us-south"
            ],
            "common_name": "example.com",
            "alt_names": [
                "s1.example.com",
                "*.s2.example.com"
            ],
            "ca": "lets-encrypt-config",
            "dns": "cloud-internet-services-config",
            "rotation": {
                "auto_rotate": true,
                "rotate_keys": true
            },
            "bundle_certs": true,
            "custom_metadata": {
                "metadata_custom_key": "metadata_custom_value"
            },
            "version_custom_metadata": {
                "custom_version_key": "custom_version_value"
            }
        }' \
    "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets"

인증서 세부사항을 제출하면 Secrets Manager가 선택한 인증 기관에 요청을 보냅니다. 인증서가 발행되면 통합 앱에 인증서를 배치하거나, 다운로드하거나, 수동으로 순환할 수 있습니다. SSL/TLS에 대한 개인 키는 Secrets Manager에서 직접 생성되어 안전하게 저장됩니다. 필수 및 선택적 요청 매개변수에 대한 자세한 내용은 비밀 만들기를 참조하세요.

주문 상태를 확인해야 합니까? 시크릿 메타데이터 가져오기 API를 사용하여 인증서에 대한 발행 세부사항에 대한 resources.issuance_info 필드를 확인하십시오.

Terraform을 사용하여 통합 DNS 제공자와 함께 공용 인증서 주문

다음 예는 공인 인증서를 주문하는 데 사용할 수 있는 구성을 보여줍니다.

    resource "ibm_sm_public_certificate" "sm_public_certificate" {
        instance_id = local.instance_id
        region = local.region
        name = "test-public-certificate"
        secret_group_id = "default"
        ca = ibm_sm_public_certificate_configuration_ca_lets_encrypt.my_lets_encrypt_config.name
        dns = ibm_sm_public_certificate_configuration_dns_cis.my_cis_dns_config.name
        rotation {
            auto_rotate = true
            rotate_keys = false
        }
    }

코드를 통해 인증서 수명 주기 관리를 처리하는 Secrets Manager 공인 인증서를 위한 Terraform IBM 모듈(TIM)로 공인 인증서 주문을 간소화하세요. 모범 사례를 보려면 Terraform IBM 모듈을 살펴보세요.

UI에서 자체 DNS 제공자를 사용하여 공용 인증서 주문

UI에서 수동 DNS 제공자를 사용하여 공용 인증서를 작성하려면 다음 단계를 완료하십시오.

  1. 콘솔에서 메뉴 아이콘 메뉴 아이콘 > 리소스 목록을 클릭하십시오.

  2. 서비스 목록에서 Secrets Manager의 인스턴스를 선택하십시오.

  3. 시크릿 표에서 추가를 클릭하십시오.

  4. 공인 인증서 주문 타일을 클릭합니다.

  5. 인증서를 쉽게 식별할 수 있도록 이름과 설명을 추가하십시오.

  6. 시크릿에 지정할 시크릿 그룹을 선택하십시오. 시크릿 그룹이 아직 없습니까? 시크릿 그룹 필드에서 작성을 클릭하여 새 그룹의 이름과 설명을 제공할 수 있습니다. 시크릿은 새 그룹에 자동으로 추가됩니다. 시크릿 그룹에 대한 자세한 정보는 시크릿 구성을 확인하십시오.

  7. 선택사항: 인스턴스에서 유사한 시크릿을 검색하는 데 도움이 되는 레이블을 추가하십시오.

  8. 선택사항: 시크릿 또는 시크릿의 특정 버전에 메타데이터를 추가하십시오. 파일을 업로드하거나 메타데이터 및 버전 메타데이터를 JSON 형식으로 입력하십시오.

  9. 다음 을 클릭하십시오.

  10. 인증 기관 구성을 선택하십시오. 선택하는 구성에 따라 인증 서명 및 발행에 사용할 인증 기관이 결정됩니다. 인스턴스에 대해 정의된 구성을 보려면 시크릿 엔진 > 공용 인증서로 이동할 수 있습니다.

  11. 인증서의 공개 키를 생성하는 데 사용할 키 알고리즘을 선택하십시오. 선택하는 키 알고리즘은 키를 생성하고 인증서를 서명하는 데 사용할 암호화 알고리즘(RSA 또는 ECDSA) 및 키 크기를 판별합니다. 수명이 긴 인증서의 경우, 더 긴 키 길이를 사용하여 더 많은 암호화 보호를 제공하는 것이 좋습니다. 옵션에 RSA2048, RSA4096, ECDSA256ECDSA384이(가) 포함됩니다.

  12. 선택사항: 인증서의 고급 옵션을 사용하십시오.

  13. 발행된 인증서를 중간 인증서로 번들화하려면 번들 토글을 켜짐으로 전환하십시오. 인증서가 번들된 후에는 더 이상 번들되지 않을 수 있습니다. 인증서를 번들로 제공하지 않도록 선택하면 나중에 새 비밀을 만들어야만 변경할 수 있습니다.

  14. 각 로테이션마다 인증서로 새 개인 키를 요청하려면 다시 키 토글을 켜짐으로 전환합니다.

  15. DNS 제공자로 수동 을 선택하십시오.

  16. 요청에 포함할 도메인을 추가하십시오.

최대 100개의 도메인, 하위 도메인 또는 와일드카드를 포함할 수 있습니다. 인증서의 공통 이름 또는 완전한 도메인 이름은 64자를 초과할 수 없습니다. 와일드카드를 공통 이름으로 선택할 수 있습니다.

  1. 공통 이름 섹션의 도메인 목록에서 인증서의 공통 이름을 선택하십시오.
  2. 다음 을 클릭하십시오.
  3. 인증서의 세부사항을 검토하십시오.
  4. 추가 를 클릭하십시오.
  5. 조치 아이콘 조치 아이콘 > 세부사항 보기를 클릭하여 인증서의 발행 세부사항을 확인하십시오.
  6. 확인 을 클릭하여 각 도메인과 연관된 TXT 레코드 이름 및 값에 액세스하십시오. 이러한 문제를 해결하기 위해서는 고객이 필요합니다.
  7. 도메인의 소유권을 유효성 검증하려면 각 도메인에 대해 제공된 TXT 레코드를 DNS 제공자 계정에 수동으로 추가하십시오. 만기 날짜 이전에 유효성이 검증되지 않은 인증 확인만 처리해야 합니다.

하위 도메인에 대한 인증서를 주문하는 경우 (예: sub1.sub2.domain.com) 등록된 도메인 domain.com 에 TXT 레코드를 추가해야 합니다.

  1. 도메인에 추가한 TXT 레코드가 전파되었는지 확인하십시오. DNS 제공자에 따라 완료하는 데 시간이 걸릴 수 있습니다.
  2. 레코드가 전파되었음을 확인한 후 유효성 검증 을 클릭하여 도메인에 대한 인증 확인을 유효성 검증하고 공용 인증서를 작성하도록 Let's Encrypt를 요청하십시오.

TXT 레코드가 성공적으로 전파되지 않아 오더가 실패하는 경우 계속하려면 새 오더를 시작해야 합니다.

  1. 인증서가 발행되면 DNS 제공자 계정의 도메인에서 TXT 레코드를 정리하고 제거하십시오.

API를 사용하여 자체 DNS 제공자로 공용 인증서 주문

수동 DNS 제공자를 사용하여 공용 인증서를 작성하려면 다음 단계를 완료하십시오.

  1. CA 구성 추가 에 정의된 단계에 따라 인증 기관 (CA) 구성을 작성하십시오.

  2. manual 를 DNS 구성으로 지정하여 새 공용 인증서를 작성하십시오.

     curl -X POST
         -H "Authorization: Bearer {iam_token}" \
         -H "Accept: application/json" \
         -H "Content-Type: application/json" \
         -d '{
                 "name": "example-public-certificate",
                 "description": "description of my public certificate",
                 "secret_type": "public_cert",
                 "secret_group_id": "bfc0a4a9-3d58-4fda-945b-76756af516aa",
                 "labels": [
                     "dev",
                     "us-south"
                 ],
                 "common_name": "example.com",
                 "alt_names": [
                     "s1.example.com",
                     "*.s2.example.com"
                 ],
                 "ca": "lets-encrypt-config",
                 "dns": "manual",
                 "rotation": {
                     "auto_rotate": true,
                     "rotate_keys": true
                 },
                 "bundle_certs": true,
                 "custom_metadata": {
                     "metadata_custom_key": "metadata_custom_value"
                 },
                 "version_custom_metadata": {
                     "custom_version_key": "custom_version_value"
                 }
                 }' \
             "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets"
    

    리소스 예:

    "metadata": {
       "collection_type": "application/vnd.ibm.secrets-manager.secret+json",
       "collection_total": 1
     },
    "resources": [
     {
       "alt_names": [
         "domain2",
         "domain3"
       ],
       "common_name": "domain1",
       "created_by": "User",
       "creation_date": "2022-09-13T06:21:33Z",
       "crn": "secret crn",
       "description": "Description for ordered certificate.",
       "downloaded": false,
       "id": "38747ae6-8c69-d745-5276-cdf3157b9021",
       "issuance_info": {
       "auto_rotated": false,
       "bundle_certs": false,
       "ca": "ca_config_name",
       "challenges": [
         {
             "domain": "domain1",
             "expiration": "2022-09-20T06:21:36Z",
             "status": "pending",
             "txt_record_name": "_acme-challenge.domain1.",
             "txt_record_value": "TA6J7fFYrwP3Jg-S_IAQSj2Ydqfw4Ycm4sMwlzuCcxk"
         },
             {
                "domain": "domain2",
                "expiration": "2022-09-20T06:21:36Z",
                "status": "pending",
                "txt_record_name": "_acme-challenge.domain2.",
                "txt_record_value": "qSDrCkFAViX4xANKuEPcMNairWm1PUtROm6kp9bmSS0"
             },
             {
                "domain": "domain3",
                "expiration": "2022-09-20T06:21:36Z",
                "status": "pending",
                "txt_record_name": "_acme-challenge.domain3.",
                "txt_record_value": "8dcgan91fW6aK3aIhPAVZRkHpbYEoMcCNPpVh1n4tSA"
             }
          ],
       "dns": "manual",
       "ordered_on": "2022-09-13T06:21:33Z",
       "state": 0,
       "state_description": "Pre-activation"
       },
       "key_algorithm": "RSA2048",
       "labels": [],
       "last_update_date": "2022-09-13T06:21:33Z",
       "locks_total": 0,
       "name": "my-public-certificate",
       "rotation": {
       "auto_rotate": false,
       "rotate_keys": false
       },
       "secret_type": "public_cert",
       "state": 0,
       "state_description": "Pre-activation",
       "versions": [],
       "versions_total": 1
       }
    ]
    
  3. 도메인의 소유권을 확인하기 위해 인증 확인에 지정된 TXT 레코드를 DNS 제공자 계정의 도메인에 추가하여 만료되기 전에 pending 로 표시된 인증 확인을 완료하십시오.

    서브도메인에 대한 인증서를 주문하는 경우 (예: sub1.sub2.domain.com) 등록된 도메인 domain.com 에 TXT 레코드를 추가해야 합니다.

  4. 추가한 TXT 레코드가 전파되었는지 유효성 검증하십시오. DNS 제공자에 따라 완료하는 데 시간이 걸릴 수 있습니다.

  5. 레코드가 전파된 후 Secrets Manager 시크릿 조치 작성 API를 호출하여 Let's Encrypt를 요청하여 도메인에 대한 인증 확인의 유효성을 검증하고 공용 인증서를 작성하십시오.

     curl -X POST
     --header "Authorization: Bearer {iam_token}"
     --header "Accept: application/json"
     --header "Content-Type: application/json"
     --data '{
         "action_type": "public_cert_action_validate_dns_challenge"
     }'\
     "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets/{id}/actions"
    

    나중에 인증서를 업데이트해야 하는 경우 시크릿 조치 작성 API를 사용할 수 있지만 rotate 조치를 사용할 수 있습니다. 그러나 Secrets Manager 에서 수동 DNS 공급자 인증서를 자동으로 회전할 수는 없습니다.

  6. 인증서가 발행되면 DNS 제공자 계정의 도메인에서 TXT 레코드를 정리하고 제거하십시오.

공용 인증서 작성을 자동화하시겠습니까? 도메인이 DNS 제공자를 통해 구성된 경우, 스크립트를 작성하여 인증 확인을 완료할 수 있습니다. 일부 DNS 제공자는 새 레코드가 완전히 전송되었는지 여부를 확인하는 API를 제공합니다. DNS 제공자가 이 옵션을 제공하지 않는 경우, 클라이언트가 지정된 시간 (때로는 최대 1시간) 동안 대기하도록 구성할 수 있습니다. Secrets Manager 에서 validate-dns-challenges 으로 전화한 후 인증서 메타데이터를 가져와서 인증서 발급 상태를 확인할 수 있습니다. 리턴된 IssuanceInfo.State 필드가 active 로 변경되면 인증서가 발행됩니다.

CLI를 사용하여 자체 DNS 제공자로 공용 인증서 주문

Secrets Manager CLI 플러그인을 사용하여 자체 DNS 제공자와 함께 공용 인증서를 주문하려면 ibmcloud secrets-manager secret-create 명령을 실행하십시오. 예를 들어, 다음 명령은 사용자가 지정하는 인증 기관에서 공용 인증서 시크릿을 요청합니다.

인증서를 주문할 때 도메인 유효성 검증이 수행되어 선택한 도메인의 소유권을 확인합니다. 이 프로세스는 완료 시까지 몇 분이 소요될 수 있습니다.

ibmcloud secrets-manager secret-create \
    --secret-name example-public-certificate \
    --secret-description "Extended description for this secret." \
    --secret-type public_cert \
    --secret-group-id bc656587-8fda-4d05-9ad8-b1de1ec7e712 \
    --secret-labels dev,us-south \
    --public-cert-dns manual \
    --certificate-common-name cert_common_name \
    --certificate-alt-names alt_name1,alt_name2 \
    --public-cert-ca lets-encrypt-config \
    --public-cert-key-algorithm RSA2048 \
    --secret-rotation '{"enabled": false, "rotate_keys": false}' \
    --secret-custom-metadata '{"anyKey": "anyValue"}' \
    --secret-version-custom-metadata '{"anyKey": "anyValue"}'

명령은 다른 메타데이터와 함께 시크릿의 ID 값을 출력합니다. 명령 옵션에 대한 자세한 정보는 ibmcloud secrets-manager secret-create의 내용을 참조하십시오.

Terraform을 사용하여 Akamai DNS 제공자와 함께 공용 인증서 주문

Akamai를 DNS 제공자로 사용하여 공용 인증서를 작성하려면 다음 단계를 완료하십시오.

  1. CA 구성 추가 에 정의된 단계에 따라 인증 기관 (CA) 구성을 작성하십시오.

  2. akamai 를 DNS 구성으로 지정하여 새 공용 인증서를 작성하십시오.

  3. 다음 Akamai 인증 방법 중 하나를 사용합니다. edgerc 파일을 사용하거나 Akamai 인증 신임 정보를 직접 제공할 수 있습니다. Akamai의 인증 신임 정보에 대해 자세히 알아보십시오.

    1. .edgerc 파일 및 관련 config_section 에 대한 경로를 제공하십시오.

      		resource "ibm_sm_public_certificate" "sm_public_certificate" {
      				instance_id = local.instance_id
      				region = local.region
      				name = "test-public-certificate"
      				secret_group_id = "default"
      				ca = ibm_sm_public_certificate_configuration_ca_lets_encrypt.my_lets_encrypt_config.name
      				dns = “akamai”
      				akamai {
      					edgerc {
      						path_to_edgerc = “/path/to/your/edgerc/file”
      						config_section = “default”
      					}
      				}
      				rotation {
      					auto_rotate = true
      					rotate_keys = false
      				}
      		}
      
             ```
      
      
    2. Akamai의 인증 자격 증명을 입력합니다.

      		resource "ibm_sm_public_certificate" "sm_public_certificate" {
      				instance_id = local.instance_id
      				region = local.region
      				name = "test-public-certificate"
      				secret_group_id = "default"
      				ca = ibm_sm_public_certificate_configuration_ca_lets_encrypt.my_lets_encrypt_config.name
      				dns = “akamai”
      				akamai {
      					config {
      						client_secret = “your_client_secret”
      						host = “your_host”
      						access_token = "your_access_token"
      						client_token = "your_client_token"
      					}
      				}
      				rotation {
      					auto_rotate = true
      					rotate_keys = false
      				}
      		}
               ```
      
      
      
      

Akamai의 관련 도메인에 있는 새로 생성된 TXT 레코드는 자동으로 삭제되지 않습니다.

Terraform을 사용하여 자체 DNS 제공자로 공용 인증서 주문

  1. CA 구성 추가 에 정의된 단계에 따라 인증 기관 (CA) 구성을 작성하십시오.

  2. manual 를 DNS 구성으로 지정하여 새 공용 인증서를 작성하십시오.

     resource "ibm_sm_public_certificate" "sm_public_certificate" {
         instance_id = local.instance_id
         region = local.region
         name = "test-public-certificate"
         secret_group_id = "default"
         ca = ibm_sm_public_certificate_configuration_ca_lets_encrypt.my_lets_encrypt_config.name
         dns = “manual”
         rotation {
             auto_rotate = true
             rotate_keys = false
         }
     }
    
    

    리소스 예:

    {
       "alt_names": [
         "domain2",
         "domain3"
       ],
       "bundle_certs": false,
       "ca": "ca_config_name",
       "common_name": "domain1",
       "created_by": "User",
       "creation_date": "2022-09-13T06:21:33Z",
       "crn": "secret crn",
       "description": "Description for ordered certificate.",
       "downloaded": false,
       "id": "38747ae6-8c69-d745-5276-cdf3157b9021",
       "issuance_info": {
           "auto_rotated": false,
           "challenges": [
             {
                 "domain": "domain1",
                 "expiration": "2022-09-20T06:21:36Z",
                 "status": "pending",
                 "txt_record_name": "_acme-challenge.domain1.",
                 "txt_record_value": "TA6J7fFYrwP3Jg-S_IAQSj2Ydqfw4Ycm4sMwlzuCcxk"
             },
                 {
                   "domain": "domain2",
                   "expiration": "2022-09-20T06:21:36Z",
                   "status": "pending",
                   "txt_record_name": "_acme-challenge.domain2.",
                   "txt_record_value": "qSDrCkFAViX4xANKuEPcMNairWm1PUtROm6kp9bmSS0"
                 },
                 {
                   "domain": "domain3",
                   "expiration": "2022-09-20T06:21:36Z",
                   "status": "pending",
                   "txt_record_name": "_acme-challenge.domain3.",
                   "txt_record_value": "8dcgan91fW6aK3aIhPAVZRkHpbYEoMcCNPpVh1n4tSA"
                 }
             ],
           "dns": "manual",
           "ordered_on": "2022-09-13T06:21:33Z",
           "state": 0,
           "state_description": "Pre-activation"
           },
       "key_algorithm": "RSA2048",
       "labels": [],
       "last_update_date": "2022-09-13T06:21:33Z",
       "locks_total": 0,
       "name": "my-public-certificate",
       "rotation": {
           "auto_rotate": false,
           "rotate_keys": false
        },
       "secret_type": "public_cert",
       "state": 0,
       "state_description": "Pre-activation",
       "versions": [],
       "versions_total": 1
    }
    
  3. 도메인의 소유권을 확인하기 위해 인증 확인에 지정된 TXT 레코드를 DNS 제공자 계정의 도메인에 추가하여 만료되기 전에 pending 로 표시된 인증 확인을 완료하십시오.

    서브도메인에 대한 인증서를 주문하는 경우 (예: sub1.sub2.domain.com) 등록된 도메인 domain.com 에 TXT 레코드를 추가해야 합니다.

  4. 추가한 TXT 레코드가 전파되었는지 유효성 검증하십시오. DNS 제공자에 따라 완료하는 데 시간이 걸릴 수 있습니다.

  5. 레코드가 전파된 후 도메인에 대한 인증 확인의 유효성을 검증하고 공용 인증서를 작성하기 위해 Let's Encrypt를 요청하십시오.

    이 작업은 Terraform의 ibm_sm_public_certificate_action_validate_manual_dns 리소스를 사용하면 됩니다:

     resource "ibm_sm_public_certificate_action_validate_manual_dns" "sm_public_certificate_action_validate_manual_dns_instance" {
         instance_id = local.instance_id
         region = local.region
         secret_id = ibm_sm_public_certificate.sm_public_certificate.secret_id
     }
    

    Terraform의 depends_on 메타 인수 를 사용하여 다음 지시사항에 표시된 대로 Terraform의 구성이 올바른 논리 순서로 작성되는지 확인할 수 있습니다.

    또는 Secrets Manager 시크릿 조치 작성 API를 호출하여 Let's Encrypt를 요청하여 도메인에 대한 인증 확인의 유효성을 검증하고 공용 인증서를 작성할 수 있습니다.

     curl -X POST
     --header "Authorization: Bearer {iam_token}"
     --header "Accept: application/json"
     --header "Content-Type: application/json"
     --data '{
        "action_type": "public_cert_action_validate_dns_challenge"
     }'\
     "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets/{id}/actions"
    
  6. 인증서가 발급된 후(상태가 active 인 경우), Terraform 명령 terraform apply 을 다시 실행하여 공개 인증서의 Terraform 리소스를 업데이트하고 새로 발급된 인증서를 사용해야 합니다.

  7. DNS 제공자 계정의 도메인에서 TXT 레코드를 정리하고 제거하십시오.