3장. 인증서 구성
3.1. 기본 수신 인증서 교체
3.1.1. 기본 수신 인증서 이해
기본적으로 OpenShift Container Platform에서는 Ingress Operator를 사용하여 내부 CA를 생성하고 .apps
하위 도메인의 애플리케이션에 유효한 와일드카드 인증서를 발급합니다. 웹 콘솔과 CLI도 모두 이 인증서를 사용합니다.
내부 인프라 CA 인증서는 자체 서명됩니다. 이 프로세스는 일부 보안 또는 PKI 팀에서는 나쁜 습관으로 인식할 수 있지만 위험이 거의 없습니다. 이러한 인증서를 암시적으로 신뢰하는 유일한 클라이언트는 클러스터 내의 다른 구성요소입니다. 기본 와일드카드 인증서를 컨테이너 사용자 공간에서 제공한 대로 이미 CA 번들에 포함된 공용 CA에서 발행한 인증서로 교체하면 외부 클라이언트가 .apps
하위 도메인에서 실행되는 애플리케이션에 안전하게 연결할 수 있습니다.
3.1.2. 기본 수신 인증서 교체
.apps
하위 도메인에 있는 애플리케이션의 기본 수신 인증서를 교체할 수 있습니다. 인증서를 교체한 후 웹 콘솔 및 CLI를 포함한 모든 애플리케이션에는 지정된 인증서에서 제공하는 암호화가 있습니다.
사전 요구 사항
-
정규화된
.apps
하위 도메인 및 해당 개인 키에 맞는 와일드카드 인증서가 있어야 합니다. 각각은 별도의 PEM 형식 파일이어야 합니다. - 개인 키는 암호화되지 않아야 합니다. 키가 암호화된 경우 OpenShift Container Platform으로 가져오기 전에 키의 암호를 해독합니다.
-
인증서에는
*.apps.<clustername>.<domain>
을 표시하는subjectAltName
확장자가 포함되어야 합니다. - 인증서 파일은 체인에 하나 이상의 인증서를 포함할 수 있습니다. 파일은 와일드카드 인증서를 첫 번째 인증서로 나열한 다음 다른 중간 인증서가 있는 다음 root CA 인증서로 끝나야 합니다.
- 루트 CA 인증서를 추가 PEM 형식 파일로 복사합니다.
-
----
END CERTIFICATE-----를
포함하는 모든 인증서가 해당 행 뒤에 하나의 반환으로도 종료되는지 확인합니다.
프로세스
와일드카드 인증서에 서명하는 데 사용되는 루트 CA 인증서만 포함하는 구성 맵을 생성합니다.
oc create configmap custom-ca \ --from-file=ca-bundle.crt=</path/to/example-ca.crt> \ -n openshift-config
$ oc create configmap custom-ca \ --from-file=ca-bundle.crt=</path/to/example-ca.crt> \
1 -n openshift-config
Copy to Clipboard Copied! - 1
</path/to/example-ca.crt>
는 로컬 파일 시스템에서 루트 CA 인증서 파일의 경로입니다. 예를 들어/etc/pki/ca-trust/source/anchors
.
새로 생성된 구성 맵으로 클러스터 전체 프록시 구성을 업데이트합니다.
oc patch proxy/cluster \ --type=merge \ --patch='{"spec":{"trustedCA":{"name":"custom-ca"}}}'
$ oc patch proxy/cluster \ --type=merge \ --patch='{"spec":{"trustedCA":{"name":"custom-ca"}}}'
Copy to Clipboard Copied! 참고클러스터에 대해 신뢰할 수 있는 CA만 업데이트하면 MCO는
/etc/pki/ca-trust/source/anchors/openshift-config-user-ca-bundle.crt
파일을 업데이트하고 노드를 재부팅할 필요가 없도록 신뢰할 수 있는 CA 업데이트를 각 노드에 적용합니다. 그러나 이러한 변경으로 인해 MCP(Machine Config Daemon)가 kubelet 및 CRI-O와 같은 각 노드에서 중요한 서비스를 다시 시작합니다. 이러한 서비스를 다시 시작하면 서비스가 완전히 다시 시작될 때까지 각 노드가NotReady
상태를 간략하게 입력합니다.openshift-config-user-ca-bundle.crt
파일(예:noproxy
)에서 다른 매개변수를 변경하면 MCO가 클러스터의 각 노드를 재부팅합니다.와일드카드 인증서 체인과 키를 포함하는 보안을 생성합니다.
oc create secret tls <secret> \ --cert=</path/to/cert.crt> \ --key=</path/to/cert.key> \ -n openshift-ingress
$ oc create secret tls <secret> \
1 --cert=</path/to/cert.crt> \
2 --key=</path/to/cert.key> \
3 -n openshift-ingress
Copy to Clipboard Copied! 새로 생성된 보안으로 Ingress Controller 구성을 업데이트합니다.
oc patch ingresscontroller.operator default \ --type=merge -p \ '{"spec":{"defaultCertificate": {"name": "<secret>"}}}' \ -n openshift-ingress-operator
$ oc patch ingresscontroller.operator default \ --type=merge -p \ '{"spec":{"defaultCertificate": {"name": "<secret>"}}}' \
1 -n openshift-ingress-operator
Copy to Clipboard Copied! - 1
<secret>
을 이전 단계에서 보안에 사용된 이름으로 교체합니다.
중요롤링 업데이트를 수행하기 위해 Ingress Operator를 트리거하려면 보안 이름을 업데이트해야 합니다. kubelet은 볼륨 마운트의 시크릿에 변경 사항을 자동으로 전파하므로 시크릿 콘텐츠를 업데이트해도 롤링 업데이트가 트리거되지 않습니다. 자세한 내용은 Red Hat 지식베이스 솔루션을 참조하십시오.