2.2.7.2. 레지스트리 콘솔 보안
기본적으로 레지스트리 콘솔 배포의 단계에 따라 레지스트리 콘솔에서 자체 서명 TLS 인증서를 생성합니다. 자세한 내용은 레지스트리 콘솔 문제 해결을 참조하십시오.
다음 단계를 사용하여 조직의 서명 인증서를 보안 볼륨으로 추가합니다. 이는 인증서를 oc
클라이언트 호스트에서 사용할 수 있다고 가정합니다.
인증서와 키가 포함된 .cert 파일을 만듭니다. 다음과 같이 파일을 포맷합니다.
- 서버 인증서 및 중간 인증 기관을 위한 하나 이상의 BEGIN CERTIFICATE 블록
BEGIN PRIVATE KEY 또는 키와 유사한 블록입니다. 키를 암호화할 수 없습니다
예를 들면 다음과 같습니다.
-----BEGIN CERTIFICATE----- MIIDUzCCAjugAwIBAgIJAPXW+CuNYS6QMA0GCSqGSIb3DQEBCwUAMD8xKTAnBgNV BAoMIGI0OGE2NGNkNmMwNTQ1YThhZTgxOTEzZDE5YmJjMmRjMRIwEAYDVQQDDAls ... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIDUzCCAjugAwIBAgIJAPXW+CuNYS6QMA0GCSqGSIb3DQEBCwUAMD8xKTAnBgNV BAoMIGI0OGE2NGNkNmMwNTQ1YThhZTgxOTEzZDE5YmJjMmRjMRIwEAYDVQQDDAls ... -----END CERTIFICATE----- -----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCyOJ5garOYw0sm 8TBCDSqQ/H1awGMzDYdB11xuHHsxYS2VepPMzMzryHR137I4dGFLhvdTvJUH8lUS ... -----END PRIVATE KEY-----
보안 레지스트리에는 다음 SAN(주체 대체 이름) 목록이 포함되어야 합니다.
두 개의 서비스 호스트 이름.
예를 들면 다음과 같습니다.
docker-registry.default.svc.cluster.local docker-registry.default.svc
서비스 IP 주소.
예를 들면 다음과 같습니다.
172.30.124.220
다음 명령을 사용하여 컨테이너 이미지 레지스트리 서비스 IP 주소를 가져옵니다.
oc get service docker-registry --template='{{.spec.clusterIP}}'
공개 호스트 이름.
예를 들면 다음과 같습니다.
docker-registry-default.apps.example.com
다음 명령을 사용하여 컨테이너 이미지 레지스트리 공개 호스트 이름을 가져옵니다.
oc get route docker-registry --template '{{.spec.host}}'
예를 들어 서버 인증서에는 다음과 유사한 SAN 세부 정보가 포함되어야 합니다.
X509v3 Subject Alternative Name: DNS:docker-registry-public.openshift.com, DNS:docker-registry.default.svc, DNS:docker-registry.default.svc.cluster.local, DNS:172.30.2.98, IP Address:172.30.2.98
레지스트리 콘솔은 /etc/cockpit/ws-certs.d 디렉터리에서 인증서를 로드합니다. 마지막 파일에는 .cert 확장자가 알파벳순으로 사용됩니다. 따라서 .cert 파일에는 OpenSSL 스타일로 포맷된 PEM 블록이 2개 이상 포함되어야 합니다.
인증서를 찾을 수 없는 경우,
openssl
명령을 사용하여 자체 서명된 인증서가 생성되고 0-self-signed.cert 파일에 저장됩니다.
시크릿을 생성합니다.
$ oc create secret generic console-secret \ --from-file=/path/to/console.cert
registry-console 배포 구성에 보안을 추가합니다.
$ oc set volume dc/registry-console --add --type=secret \ --secret-name=console-secret -m /etc/cockpit/ws-certs.d
이렇게 하면 레지스트리 콘솔의 새 배포가 트리거되어 서명된 인증서가 포함됩니다.