SSL / TLS 비공개 인증서 만들기

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

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

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

시작하기 전에

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

개인용 인증서를 작성하기 전에 다음을 확인하십시오.

비공개 인증서를 만들 때 템플릿을 선택해야 합니다. 선택하는 템플리트에 따라 개인 인증서에 대한 몇 가지 제한사항이 적용될 수 있습니다. 중간 CA에 대해 정의된 템플릿을 보려면 Secrets Manager UI에서 Secrets 엔진 > 비공개 인증서 페이지로 이동합니다. 비공개 인증서의 발급 기관으로 사용하려는 중간 CA의 행을 확장하고 템플릿을 클릭하여 사용 가능한 템플릿을 검토합니다.

개인 인증서 작성

인스턴스에 대해 개인 인증서 엔진을 구성한 후 Secrets Manager를 사용하여 Secrets Manager 서비스 인스턴스에 대해 이전에 구성된 내부 인증 기관을 사용하여 개인 인증서를 생성할 수 있습니다. 인증서를 사용자에게 발행하기 전에 Secrets Manager는 인증서 요청이 사용자가 선택한 인증서 템플리트에 대해 정의된 제한사항과 일치하는지 확인합니다. 인증서가 발행되면 인증서를 통합 앱에 배치하거나, 다운로드하거나, 폐기하거나, 수동으로 순환할 수 있습니다.

UI에서 개인 인증서 작성

Secrets Manager UI를 사용하여 개인 인증서를 작성할 수 있습니다.

  1. 콘솔에서 메뉴 아이콘 메뉴 아이콘 > 리소스 목록을 클릭하십시오.
  2. 서비스 목록에서 Secrets Manager의 인스턴스를 선택하십시오.
  3. 시크릿 표에서 추가를 클릭하십시오.
  4. 개인 인증서 작성 타일을 클릭하십시오.
  5. 다음 을 클릭하십시오.
  6. 인증서를 쉽게 식별할 수 있도록 이름과 설명을 추가하십시오.
  7. 선택사항: 인스턴스에서 유사한 시크릿을 검색하는 데 도움이 되는 레이블을 추가하십시오.
  8. 선택사항: 시크릿 또는 시크릿의 특정 버전에 메타데이터를 추가하십시오.
    1. 파일을 업로드하거나 메타데이터 및 버전 메타데이터를 JSON 형식으로 입력하십시오.
  9. 다음 을 클릭하십시오.
  10. 인증 기관 구성을 선택하십시오.

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

  1. 인증서 템플리트를 선택하십시오.

선택하는 템플리트는 생성된 인증서에 적용할 매개변수를 결정합니다. 선택한 인증 기관에 대해 정의된 인증서 템플리트의 세부사항을 보려면 시크릿 엔진 > 개인 인증서로 이동하십시오. 인증 기관 목록에서 개인 인증서의 발행 기관으로 사용할 CA의 행을 펼치고 템플리트를 클릭하십시오. 12. 선택사항: 인증서에 대해 자동 순환을 사용하도록 설정하십시오.

자동 순환을 사용하도록 설정하려면 순환 토글을 켜짐으로 전환하십시오. 스케줄된 순환 사이의 일 수를 지정하는 간격 및 단위를 선택하십시오.

다음 단계에서 선택하는 인증서 템플리트에 따라 개인 인증서의 순환 간격에 대한 몇 가지 제한사항이 적용될 수 있습니다. 예를 들어, 순환 간격은 템플리트에 정의된 TTL(Time-To-Live)을 초과할 수 없습니다. 자세한 정보는 인증서 템플리트를 참조하십시오.

  1. 필수입니다: 인증서의 일반 이름을 지정합니다.

선택하는 인증서 템플리트에 따라 공통 이름에 대한 몇 가지 제한사항이 적용될 수 있습니다. 선택한 인증서 템플리트의 세부사항을 보려면 시크릿 엔진 > 개인 인증서로 이동하십시오. 인증 기관 목록에서 개인 인증서의 발행 기관으로 사용할 CA의 행을 펼치고 템플리트를 클릭하십시오. 14. 인증서에 할당할 비밀 그룹을인스턴스의 포함 시크릿이 준수해야 하는 환경 및 제한조건입니다. 액세스 및 협업을 사용하기 위해 사용자를 시크릿 그룹과 연관시킬 수 있습니다. 선택합니다.

선택한 인증서 템플리트에서 인증서를 특정 시크릿 그룹에 추가할 수 있는 경우 허용된 그룹만 나열됩니다. 템플리트에 제한사항이 없는 경우 시크릿 그룹을 작성할 수 있습니다(아직 없는 경우). 인증서가 새 그룹에 자동으로 추가됩니다. 시크릿 그룹에 대한 자세한 정보는 시크릿 구성을 확인하십시오. 15. 선택사항: 인증서의 대체 이름을 지정하십시오.

대체 이름은 호스트 이름 또는 이메일 주소일 수 있습니다. 16. 다음 을 클릭하십시오. 17. 인증서의 세부사항을 검토하십시오. 18. 추가 를 클릭하십시오.

CLI에서 개인용 인증서 작성

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

Secrets Manager CLI 플러그인을 사용하여 개인 인증서를 작성하려면 ibmcloud secrets-manager secret-create 명령을 실행하십시오. 예를 들어, 다음 명령은 사용자가 지정하는 인증서 템플리트에서 개인용 인증서 시크릿을 작성합니다.

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

ibmcloud secrets-manager secret-create \
    --secret-name example-private-certificate \
    --secret-description "Extended description for this secret." \
    --secret-type private_cert \
    --secret-group-id bc656587-8fda-4d05-9ad8-b1de1ec7e712 \
    --secret-labels dev,us-south \
    --private-cert-template-name example-certificate-template \
    --certificate-common-name cert_common_name \
    --secret-rotation '{"enabled": false, "rotate_keys": false}' \
    --secret-custom-metadata '{"anyKey": "anyValue"}' \
    --secret-version-custom-metadata '{"anyKey": "anyValue"}' \
    --secret-expiration-date 2030-01-01T00:00:00Z

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

API를 사용하여 개인 인증서 작성

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-private-certificate",
        "description": "Description of my private certificate",
        "secret_type": "private_cert",
        "secret_group_id": "bfc0a4a9-3d58-4fda-945b-76756af516aa",
        "labels": [
            "dev",
            "us-south"
        ],
        "certificate_template": "test-certificate-template",
        "common_name": "localhost",
        "alt_names": [
            "alt-name-1",
            "alt-name-2"
        ],
        "ip_sans": "127.0.0.1",
        "uri_sans": "https://www.example.com/test",
        "ttl": "2190h",
        "rotation": {
            "auto_rotate": true,
            "interval": 1,
            "unit": "month"
        },
        "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"

고급 옵션을 사용하여 개인 인증서를 작성해야 합니까? 선택적 요청 매개변수를 사용하여 개인 인증서에 대한 고급 속성(예: SAN(Subject Alternative Name) 또는 TTL(Time-To-Live))을 지정할 수 있습니다. 이 선택적 매개변수를 생략하면 선택한 인증서 템플리트에 대해 정의된 속성이 적용됩니다. 자세한 정보는 API 참조 를 참조하십시오.

성공적인 요청은 인증서 템플리트에 의해 결정되는 다른 메타데이터와 함께 개인 인증서의 컨텐츠를 리턴하고 인증 기관을 발행합니다.

{
  "alt_names": [
    "s1.example.com",
    "*.s2.example.com"
  ],
  "certificate_authority": "test-intermediate-CA",
  "certificate_template": "test-certificate-template",
  "common_name": "example.com",
  "created_at": "2022-10-02T14:08:07Z",
  "created_by": "iam-ServiceId-e4a2f0a4-3c76-4bef-b1f2-fbeae11c0f21",
  "crn": "crn:v1:bluemix:public:secrets-manager:us-south:a/a5ebf2570dcaedf18d7ed78e216c263a:f1bc94a6-64aa-4c55-b00f-f6cd70e4b2ce:secret:cb7a2502-8ede-47d6-b5b6-1b7af6b6f563",
  "custom_metadata": {
    "metadata_custom_key": "metadata_custom_value"
  },
  "description": "Extended description for this secret.",
  "downloaded": true,
  "expiration_date": "2023-03-02T15:08:37Z",
  "id": "cb7a2502-8ede-47d6-b5b6-1b7af6b6f563",
  "issuer": "example.com",
  "key_algorithm": "RSA2048",
  "labels": [
    "dev",
    "us-south"
  ],
  "locks_total": 0,
  "name": "example-private-certificate",
  "next_rotation_date": "2022-03-02T14:08:07Z",
  "rotation": {
    "auto_rotate": false,
    "interval": 1,
    "unit": "month"
  },
  "secret_data": {
    "certificate": "-----BEGIN CERTIFICATE-----\nMIIE3jCCBGSgAwIBAgIUZfTbf3adn87l5J2Q2Aw+6Vk/qhowCgYIKoZIzj0EAwIw\n-----END CERTIFICATE-----",
    "issuing_ca": "-----BEGIN CERTIFICATE-----\nMIIE3jCCBGSgAwIBAgIUZfTbf3adn87l5J2Q2Aw+6Vk/qhowCgYIKoZIzj0EAwIw\n-----END CERTIFICATE-----",
    "ca_chain": [
      "-----BEGIN CERTIFICATE-----\nMIIE3jCCBGSgAwIBAgIUZfTbf3adn87l5J2Q2Aw+6Vk/qhowCgYIKoZIzj0EAwIw\n-----END CERTIFICATE-----"
    ],
    "private_key": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAqcRbzV1wp0nVrPtEpMtnWMO6Js1q3rhREZluKZfu0Q8SY4H3\n-----END RSA PRIVATE KEY-----"
  },
  "secret_group_id": "bc656587-8fda-4d05-9ad8-b1de1ec7e712",
  "secret_type": "private_cert",
  "serial_number": "03:e2:c6:e4:0b:7d:30:e2:e2:78:1b:b9:13:fd:f0:fc:89:dd",
  "signing_algorithm": "SHA256-RSA",
  "state": 1,
  "state_description": "active",
  "updated_at": "2022-03-02T14:08:37Z",
  "validity": {
    "not_before": "2022-03-02T15:08:37Z",
    "not_after": "2023-03-01T00:00:00Z"
  },
  "versions_total": 1
}

Terraform을 사용하여 개인용 인증서 작성

다음 예는 비공개 인증서를 만드는 데 사용할 수 있는 구성을 보여줍니다.

    resource "ibm_sm_private_certificate" "test_private_certificate" {  
        instance_id = local.instance_id
        region = local.region
        name = "test-private-certificate"
        common_name = "my.example.com"
        certificate_template = ibm_sm_private_certificate_configuration_template.test_ca_template.name
        ttl = "90d"
    }

인증서가 발행되면 통합 앱에 인증서를 배치하거나, 다운로드하거나, 수동으로 순환할 수 있습니다. 필수 및 선택적 요청 매개변수에 대한 자세한 정보는 API 참조를 확인하십시오.

비공개 인증서 생성 및 관리를 자동화하려면, 인프라를 위한 Secrets Manager 비공개 인증서를 위한 Terraform IBM 모듈(TIM)을 코드로 사용하세요. 구현 지침은 Terraform IBM 모듈을 참조하세요.