1.2. 보안 경로
보안 경로는 여러 유형의 TLS 종료를 사용하여 클라이언트에 인증서를 제공하는 기능을 제공합니다. 다음 섹션에서는 사용자 정의 인증서를 사용하여 재암호화 에지 및 패스스루 경로를 생성하는 방법을 설명합니다.
공용 끝점을 통해 Microsoft Azure에서 경로를 생성하는 경우 리소스 이름에 제한이 적용됩니다. 특정 용어를 사용하는 리소스를 생성할 수 없습니다. Azure에서 제한하는 용어 목록은 Azure 설명서의 예약된 리소스 이름 오류 해결을 참조하십시오.
1.2.1. 사용자 정의 인증서를 사용하여 재암호화 경로 생성 링크 복사링크가 클립보드에 복사되었습니다!
oc create route
명령을 사용하여 사용자 정의 인증서로 TLS 종료를 재암호화하는 보안 경로를 구성할 수 있습니다.
이 절차에서는 사용자 정의 인증서를 사용하여 Route
리소스를 생성하고 TLS 종료를 재암호화합니다. 다음 예에서는 인증서/키 쌍이 현재 작업 디렉터리의 tls.crt
및 tls.key
파일에 있다고 가정합니다. Ingress 컨트롤러에서 서비스의 인증서를 신뢰하도록 하려면 대상 CA 인증서도 지정해야 합니다. 인증서 체인을 완료하는 데 필요한 경우 CA 인증서를 지정할 수도 있습니다. tls.crt
, tls.key
, cacert.crt
, ca.crt
(옵션)에 실제 경로 이름을 사용하십시오. frontend
에는 노출하려는 서비스
리소스 이름을 사용합니다. www.example.com
을 적절한 호스트 이름으로 바꿉니다.
사전 요구 사항
- PEM 인코딩 파일에 인증서/키 쌍이 있고 해당 인증서가 경로 호스트에 유효해야 합니다.
- 인증서 체인을 완성하는 PEM 인코딩 파일에 별도의 CA 인증서가 있을 수 있습니다.
- PEM 인코딩 파일에 별도의 대상 CA 인증서가 있어야 합니다.
- 노출하려는 서비스가 있어야 합니다.
암호로 보호되는 키 파일은 지원되지 않습니다. 키 파일에서 암호를 제거하려면 다음 명령을 사용하십시오.
openssl rsa -in password_protected_tls.key -out tls.key
$ openssl rsa -in password_protected_tls.key -out tls.key
프로세스
재암호화 TLS 종료 및 사용자 정의 인증서를 사용하여 보안
Route
리소스를 생성합니다.oc create route reencrypt --service=frontend --cert=tls.crt --key=tls.key --dest-ca-cert=destca.crt --ca-cert=ca.crt --hostname=www.example.com
$ oc create route reencrypt --service=frontend --cert=tls.crt --key=tls.key --dest-ca-cert=destca.crt --ca-cert=ca.crt --hostname=www.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 생성된
Route
리소스는 다음과 유사합니다.보안 경로의 YAML 정의
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 자세한 옵션은
oc create route reencrypt --help
를 참조하십시오.
1.2.2. 사용자 정의 인증서를 사용하여 엣지 경로 생성 링크 복사링크가 클립보드에 복사되었습니다!
oc create route
명령을 사용하면 엣지 TLS 종료와 사용자 정의 인증서로 보안 경로를 구성할 수 있습니다. 엣지 경로를 사용하면 Ingress 컨트롤러에서 트래픽을 대상 Pod로 전달하기 전에 TLS 암호화를 종료합니다. 이 경로는 Ingress 컨트롤러가 경로에 사용하는 TLS 인증서 및 키를 지정합니다.
이 절차에서는 사용자 정의 인증서 및 엣지 TLS 종료를 사용하여 Route
리소스를 생성합니다. 다음 예에서는 인증서/키 쌍이 현재 작업 디렉터리의 tls.crt
및 tls.key
파일에 있다고 가정합니다. 인증서 체인을 완료하는 데 필요한 경우 CA 인증서를 지정할 수도 있습니다. tls.crt
, tls.key
, ca.crt
(옵션)에 실제 경로 이름을 사용하십시오. frontend
에는 노출하려는 서비스 이름을 사용합니다. www.example.com
을 적절한 호스트 이름으로 바꿉니다.
사전 요구 사항
- PEM 인코딩 파일에 인증서/키 쌍이 있고 해당 인증서가 경로 호스트에 유효해야 합니다.
- 인증서 체인을 완성하는 PEM 인코딩 파일에 별도의 CA 인증서가 있을 수 있습니다.
- 노출하려는 서비스가 있어야 합니다.
암호로 보호되는 키 파일은 지원되지 않습니다. 키 파일에서 암호를 제거하려면 다음 명령을 사용하십시오.
openssl rsa -in password_protected_tls.key -out tls.key
$ openssl rsa -in password_protected_tls.key -out tls.key
프로세스
엣지 TLS 종료 및 사용자 정의 인증서를 사용하여 보안
Route
리소스를 생성합니다.oc create route edge --service=frontend --cert=tls.crt --key=tls.key --ca-cert=ca.crt --hostname=www.example.com
$ oc create route edge --service=frontend --cert=tls.crt --key=tls.key --ca-cert=ca.crt --hostname=www.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 생성된
Route
리소스는 다음과 유사합니다.보안 경로의 YAML 정의
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 추가 옵션은
oc create route edge --help
를 참조하십시오.
1.2.3. 패스스루 라우팅 생성 링크 복사링크가 클립보드에 복사되었습니다!
oc create route
명령을 사용하면 패스스루 종료와 사용자 정의 인증서로 보안 경로를 구성할 수 있습니다. 패스스루 종료를 사용하면 암호화된 트래픽이 라우터에서 TLS 종료를 제공하지 않고 바로 대상으로 전송됩니다. 따라서 라우터에 키 또는 인증서가 필요하지 않습니다.
사전 요구 사항
- 노출하려는 서비스가 있어야 합니다.
프로세스
Route
리소스를 생성합니다.oc create route passthrough route-passthrough-secured --service=frontend --port=8080
$ oc create route passthrough route-passthrough-secured --service=frontend --port=8080
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 생성된
Route
리소스는 다음과 유사합니다.패스스루 종료를 사용하는 보안 경로
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 대상 Pod는 끝점의 트래픽에 대한 인증서를 제공해야 합니다. 현재 이 방법은 양방향 인증이라고도 하는 클라이언트 인증서도 지원할 수 있는 유일한 방법입니다.
1.2.4. 외부 관리 인증서를 사용하여 경로 생성 링크 복사링크가 클립보드에 복사되었습니다!
경로 API의 .spec.tls.externalCertificate
필드를 사용하여 타사 인증서 관리 솔루션으로 OpenShift Container Platform 경로를 구성할 수 있습니다. 비밀을 통해 외부에서 관리되는 TLS 인증서를 참조할 수 있으므로 수동으로 인증서를 관리할 필요가 없습니다. 외부에서 관리되는 인증서를 사용하면 오류가 줄어들어 인증서 업데이트가 보다 원활하게 진행되고, OpenShift 라우터가 갱신된 인증서를 즉시 제공할 수 있습니다.
외부 관리 인증서는 에지 경로와 재암호화 경로 모두에 사용할 수 있습니다.
사전 요구 사항
-
RouteExternalCertificate
기능 게이트를 활성화해야 합니다. -
routes/custom-host
하위 리소스에 대한생성
권한이 있는데, 이 권한은 경로를 생성하고 업데이트하는 데 사용됩니다. -
kubernetes.io/tls
유형의 PEM 인코딩된 유효한 인증서/키 쌍이 포함된 비밀이 있어야 하며, 여기에는tls.key
및tls.crt
키가 모두 포함됩니다. - 보호하려는 경로와 동일한 네임스페이스에 참조된 비밀을 배치해야 합니다.
프로세스
다음 명령을 실행하여 라우터 서비스 계정에 읽기 액세스를 허용하기 위해 비밀과 동일한 네임스페이스에
역할을
만듭니다.oc create role secret-reader --verb=get,list,watch --resource=secrets --resource-name=<secret-name> \ --namespace=<current-namespace>
$ oc create role secret-reader --verb=get,list,watch --resource=secrets --resource-name=<secret-name> \
1 --namespace=<current-namespace>
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 비밀과 동일한 네임스페이스에
역할 바인딩을
만들고 다음 명령을 실행하여 라우터 서비스 계정을 새로 만든 역할에 바인딩합니다.oc create rolebinding secret-reader-binding --role=secret-reader --serviceaccount=openshift-ingress:router --namespace=<current-namespace>
$ oc create rolebinding secret-reader-binding --role=secret-reader --serviceaccount=openshift-ingress:router --namespace=<current-namespace>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 시크릿과 경로가 모두 있는 네임스페이스를 지정합니다.
다음 예를 사용하여
경로를
정의하고 인증서가 포함된 비밀번호를 지정하는 YAML 파일을 만듭니다.보안 경로의 YAML 정의
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 비밀번호의 실제 이름을 지정하세요.
다음 명령을 실행하여
경로
리소스를 만듭니다.oc apply -f <route.yaml>
$ oc apply -f <route.yaml>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 생성된 YAML 파일 이름을 지정합니다.
비밀이 존재하고 인증서/키 쌍이 있는 경우, 모든 전제 조건이 충족되면 라우터는 생성된 인증서를 제공합니다.
참고.spec.tls.externalCertificate가
제공되지 않으면 라우터는 기본으로 생성된 인증서를 사용합니다..spec.tls.externalCertificate
필드를 사용하는 경우.spec.tls.certificate
필드나.spec.tls.key
필드를 제공할 수 없습니다.