8.4. ACME 발행자를 사용하여 인증서 관리
cert-manager Operator for Red Hat OpenShift는 Let's Encrypt와 같은 ACME CA 서버 사용을 지원하여 인증서를 발행할 수 있습니다.
8.4.1. ACME 발행자 정보 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenShift용 cert-manager Operator의 ACME 발행자 유형은 ACME(Automated Certificate Management Environment) 인증 기관(CA) 서버를 나타냅니다. ACME CA 서버는 클라이언트 가 인증서가 요청되는 도메인 이름을 소유하고 있는지 확인하는 데 의존합니다. 문제가 성공하면 Red Hat OpenShift용 cert-manager Operator에서 인증서를 발행할 수 있습니다. 문제가 실패하면 Red Hat OpenShift용 cert-manager Operator에서 인증서를 발행하지 않습니다.
8.4.1.1. 지원되는 ACME 챌린지 유형 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenShift용 cert-manager Operator는 ACME 발급자에 대해 다음과 같은 챌린지 유형을 지원합니다.
- HTTP-01
HTTP-01 챌린지 유형을 사용하면 도메인의 HTTP URL 끝점에서 계산 키를 제공합니다. ACME CA 서버가 URL에서 키를 가져올 수 있는 경우 도메인의 소유자로 유효성을 검증할 수 있습니다.
자세한 내용은 업스트림 cert-manager 설명서의 HTTP01 을 참조하십시오.
- DNS-01
DNS-01 챌린지 유형을 사용하면 DNS TXT 레코드에서 계산 키를 제공합니다. ACME CA 서버에서 DNS 조회로 키를 가져올 수 있는 경우 도메인의 소유자로 유효성을 검증할 수 있습니다.
자세한 내용은 업스트림 cert-manager 설명서의 DNS01 을 참조하십시오.
8.4.1.2. 지원되는 DNS-01 공급자 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenShift용 cert-manager Operator는 ACME 발급자를 위한 다음 DNS-01 공급자를 지원합니다.
- Amazon Route 53
Azure DNS
참고Red Hat OpenShift용 cert-manager Operator는 Azure AD(Azure Active Directory) Pod ID를 사용하여 Pod에 관리형 ID를 할당하는 것을 지원하지 않습니다.
Google Cloud DNS
참고Red Hat OpenShift용 cert-manager Operator는 Google 워크로드 ID 페더레이션 사용을 지원하지 않습니다.
8.4.2. HTTP-01 문제를 해결하기 위해 ACME 발행자 구성 링크 복사링크가 클립보드에 복사되었습니다!
cert-manager Operator for Red Hat OpenShift를 사용하여 HTTP-01 문제를 해결하기 위해 ACME 발행자를 설정할 수 있습니다. 이 절차에서는 Let's Encrypt를 ACME CA 서버로 사용합니다.
사전 요구 사항
-
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다. -
노출하려는 서비스가 있습니다. 이 절차에서 서비스의 이름은
sample-workload
입니다.
절차
ACME 클러스터 발행자를 생성합니다.
ClusterIssuer
오브젝트를 정의하는 YAML 파일을 생성합니다.acme-cluster-issuer.yaml
파일 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
ClusterIssuer
오브젝트를 생성합니다.oc create -f acme-cluster-issuer.yaml
$ oc create -f acme-cluster-issuer.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
사용자 워크로드의 서비스를 노출하는 Ingress를 생성합니다.
Namespace
오브젝트를 정의하는 YAML 파일을 생성합니다.namespace.yaml
파일 예apiVersion: v1 kind: Namespace metadata: name: my-ingress-namespace
apiVersion: v1 kind: Namespace metadata: name: my-ingress-namespace
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Ingress의 네임스페이스를 지정합니다.
다음 명령을 실행하여
Namespace
오브젝트를 생성합니다.oc create -f namespace.yaml
$ oc create -f namespace.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ingress
오브젝트를 정의하는 YAML 파일을 생성합니다.ingress.yaml
파일 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Ingress 이름을 지정합니다.
- 2
- Ingress용으로 생성한 네임스페이스를 지정합니다.
- 3
- 생성한 클러스터 발행자를 지정합니다.
- 4
- Ingress 클래스를 지정합니다.
- 5
- Ingress 클래스를 지정합니다.
- 6
- &
lt;hostname
>을 인증서와 연결할 주체 대체 이름으로 바꿉니다. 이 이름은 인증서에 DNS 이름을 추가하는 데 사용됩니다. - 7
- 생성된 인증서를 저장할 보안을 지정합니다.
- 8
- <
;hostname>
;을 호스트 이름으로 교체합니다. <host_name>.<cluster_ingress_domain
> 구문을 사용하여*.<cluster_ingress_domain
> 와일드카드 DNS 레코드를 활용하고 클러스터에 대한 인증서를 제공할 수 있습니다. 예를 들어apps.<cluster_base_domain>을 사용할 수 있습니다
. 그렇지 않으면 선택한 호스트 이름에 대한 DNS 레코드가 있는지 확인해야 합니다. - 9
- 노출할 서비스 이름을 지정합니다. 이 예에서는
sample-workload
라는 서비스를 사용합니다.
다음 명령을 실행하여
Ingress
오브젝트를 생성합니다.oc create -f ingress.yaml
$ oc create -f ingress.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.4.3. DNS-01 문제를 해결하기 위해 ACME 발행자 구성 링크 복사링크가 클립보드에 복사되었습니다!
cert-manager Operator for Red Hat OpenShift를 사용하여 ACME 발행자를 설정하여 DNS-01 문제를 해결할 수 있습니다. 이 절차에서는 Let's Encrypt 를 ACME CA 서버로 사용하고 Amazon Route 53을 사용하여 DNS-01 문제를 해결하는 방법을 보여줍니다.
프라이빗 DNS 영역은 지원되지 않습니다.
사전 요구 사항
-
cluster-admin
역할의 사용자로 OpenShift Container Platform 클러스터에 액세스할 수 있습니다. Amazon Route 53에 대한 IAM 역할을 설정했습니다. 자세한 내용은 업스트림 cert-manager 설명서의 Route53 을 참조하십시오.
참고클러스터가 AWS STS(Security Token Service)를 사용하도록 구성되지 않은 경우 명시적
accessKeyID
및secretAccessKey
인증 정보를 제공해야 합니다. 클러스터가 AWS STS를 사용하는 경우 암시적 앰비언트 인증 정보를 사용할 수 있습니다.
절차
선택 사항: DNS-01 자체 검사의 네임서버 설정을 재정의합니다.
이 단계는 대상 퍼블릭 호스팅 영역이 클러스터의 기본 프라이빗 호스팅 영역과 겹치는 경우에만 필요합니다.
다음 명령을 실행하여
CertManager
리소스를 편집합니다.oc edit certmanager cluster
$ oc edit certmanager cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 덮어쓰기 인수를 사용하여
spec.controllerConfig
섹션을 추가합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 파일을 저장하여 변경 사항을 적용합니다.
선택 사항: 발급자에 대한 네임스페이스를 생성합니다.
Namespace
오브젝트를 정의하는 YAML 파일을 생성합니다.namespace.yaml
파일 예apiVersion: v1 kind: Namespace metadata: name: my-issuer-namespace
apiVersion: v1 kind: Namespace metadata: name: my-issuer-namespace
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 발행자의 네임스페이스를 지정합니다.
다음 명령을 실행하여
Namespace
오브젝트를 생성합니다.oc create -f namespace.yaml
$ oc create -f namespace.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 명령을 실행하여 AWS 인증 정보를 저장할 시크릿을 생성합니다.
oc create secret generic aws-secret --from-literal=awsSecretAccessKey=<aws_secret_access_key> \ -n my-issuer-namespace
$ oc create secret generic aws-secret --from-literal=awsSecretAccessKey=<aws_secret_access_key> \
1 -n my-issuer-namespace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- &
lt;aws_secret_access_key>
;를 AWS 시크릿 액세스 키로 교체합니다.
발급자를 만듭니다.
Issuer
오브젝트를 정의하는 YAML 파일을 생성합니다.issuer.yaml
파일 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 발행자의 이름을 지정합니다.
- 2
- 발행자를 위해 생성한 네임스페이스를 지정합니다.
- 3
- ACME 서버의
디렉터리
끝점에 액세스할 URL을 지정합니다. 이 예에서는 Let's Encrypt staging 환경을 사용합니다. - 4
- <
;email_address>
;를 이메일 주소로 바꿉니다. - 5
- &
lt;secret_private_key
>를 ACME 계정 개인 키를 저장할 시크릿 이름으로 교체합니다. - 6
- <
;aws_key_id>
;를 AWS 키 ID로 바꿉니다. - 7
- <
;hosted_zone_id>
;를 호스팅 영역 ID로 바꿉니다. - 8
- 생성한 보안의 이름을 지정합니다.
- 9
- AWS 시크릿 액세스 키를 저장하는 시크릿의 키를 지정합니다.
다음 명령을 실행하여
Issuer
오브젝트를 생성합니다.oc create -f issuer.yaml
$ oc create -f issuer.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
인증서를 생성합니다.
Certificate
오브젝트를 정의하는 YAML 파일을 생성합니다.certificate.yaml
파일 예Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
Certificate
오브젝트를 생성합니다.oc create -f certificate.yaml
$ oc create -f certificate.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow