Infograb logo
자체 서명된 인증서로 Teleport 실행하기

이 가이드는 TLS 인증서를 구성하지 않고 비프로덕션 환경에서 Teleport를 평가하는 방법을 설명합니다.
우리는 자체 서명된 인증서를 사용하여 Teleport를 실행하는 방법과 이 구성으로 인해 발생하는 문제를 해결하는 방법을 보여줄 것입니다.

Teleport 프록시 서비스는 TLS x509 인증서를 통해 클라이언트에 자신을 인증합니다.
프록시 서비스에 인증서가 구성되지 않으면 자체 서명된 인증서를 사용하게 되며, 클라이언트는 기본적으로 이를 신뢰하지 않습니다.
클러스터의 웹 UI를 방문할 때, 제시된 인증서는 브라우저에서 신뢰되지 않습니다. 이 경우 웹사이트가 신뢰되지 않는다는 경고 페이지를 보게 될 것입니다.

또한, 자체 서명된 인증서는 teleport, tsh, 그리고 tctl이 프록시 서비스에 연결하는 것을 방지할 수 있습니다.

운영 환경에서 자체 서명된 인증서를 사용하지 마십시오

클러스터를 자체 서명된 인증서를 신뢰하도록 구성하는 것은 공격자가 프록시 서비스와 클라이언트 간 통신을 가로채기 쉽게 만듭니다.
인증서의 진위를 확인하는 방법이 없기 때문입니다.
따라서, 운영 환경에서 Teleport를 사용할 때는 인증서를 올바르게 구성하는 것이 중요합니다.

필수 조건

  • 실행 중인 Teleport 클러스터. 이를 설정하는 방법에 대한 자세한 내용은 시작하기 가이드를 참조하세요 (TLS 인증서 설정은 건너뜁니다).

  • 인증서 또는 ACME 자동 인증서를 구성하지 않은 Teleport 프록시 서비스.
    예를 들어, 이 Teleport 프록시 서비스 구성은 자체 서명된 인증서를 사용합니다:

    proxy_service:
      enabled: "yes"
      # HTTPS 연결을 위한 TLS 인증서.
      https_keypairs: []
      # ACME를 사용하여 letsencrypt.org에서 자동 인증서를 가져옵니다.
      acme: {}
    
  • A: tctltsh 클라이언트 도구 버전 >= 16.2.0. 설치 방법에 대한 내용은 설치를 참조하세요.

    자세한 내용은 설치를 참조하세요.

  • 실행 중인 Teleport 클러스터. 이를 설정하는 방법에 대한 자세한 내용은 기업 시작하기 가이드를 참조하세요.

  • 인증서 또는 ACME 자동 인증서를 구성하지 않은 Teleport 프록시 서비스.
    예를 들어, 이 Teleport 프록시 서비스 구성은 자체 서명된 인증서를 사용합니다:

    proxy_service:
      enabled: "yes"
      # HTTPS 연결을 위한 TLS 인증서.
      https_keypairs: []
      # ACME를 사용하여 letsencrypt.org에서 자동 인증서를 가져옵니다.
      acme: {}
    
  • tctltsh 클라이언트 도구 버전 >= 16.2.0은
    귀하의 Teleport 계정을 방문하여 다운로드할 수 있습니다.

Teleport 바이너리 및 클라이언트에서 자체 서명된 인증서 사용 방법

teleport

teleport로 Teleport 서비스를 실행할 때, 시작하는 서비스가 Teleport 프록시 서비스 엔드포인트를 가리키도록 구성되어 있고 프록시 서비스가 자체 서명된 인증서를 사용하는 경우, teleport는 프록시 서비스 TLS 인증서 검증을 비활성화하기 위해 --insecure 플래그와 함께 실행해야 합니다.
이 경우는 다음과 같습니다:

  • Teleport 구성 파일의 proxy_server 설정이 프록시 서비스 엔드포인트로 설정된 경우:
    • proxy_server: "tele.example.com:443" 또는
    • proxy_server: "tele.example.com:3080"
  • Teleport가 --auth-server 플래그를 사용하여 프록시 서비스 엔드포인트를 가리키며 시작된 경우:
    • teleport [app | db] start --auth-server=tele.example.com:443 또는
    • teleport [app | db] start --auth-server=tele.example.com:3080

TLS 인증서 검증 비활성화 방법은 Teleport를 실행하는 방식에 따라 다릅니다: teleport CLI를 통해, Helm 차트를 사용하여, 또는 systemd를 통해:

명령줄에서 teleport를 실행할 때 --insecure 플래그를 전달하여 TLS 인증서 검증을 비활성화합니다. 예:

$ sudo teleport start -c /etc/teleport.yaml --insecure
$ sudo teleport app start -c /etc/teleport.yaml --insecure
$ sudo teleport db start -c /etc/teleport.yaml --insecure

--insecure 플래그 없이 실행하면, x509: "tele.example.com" 인증서가 신뢰되지 않음과 같은 오류 메시지를 보게 됩니다.

teleport-cluster Helm 차트를 사용하는 경우, extraArgs를 설정하여 추가 인수 --insecure를 포함합니다:

extraArgs:
- "--insecure"
--set "extraArgs={--insecure}"

teleport-kube-agent 차트를 사용하는 경우, insecureSkipProxyTLSVerify 플래그를 true로 설정합니다:

insecureSkipProxyTLSVerify: true
--set insecureSkipProxyTLSVerify=true

Teleport에 대한 systemd 유닛 파일(teleport.service라고 함)을 찾으려면 다음 명령어를 실행합니다:

$ systemctl status teleport

다음과 유사한 출력을 보게 되며, 시스템 데몬 구성에 적용되는 유닛 파일의 경로(/lib/systemd/system/teleport.service)가 포함됩니다:

● teleport.service - Teleport 서비스 Loaded: loaded (/lib/systemd/system/teleport.service; disabled; vendor preset: enabled) Active: inactive (dead)

Teleport 유닛 파일을 편집하여 ExecStart 줄에 --insecure를 포함합니다. 예:

ExecStart=/usr/local/bin/teleport start --pid-file=/run/teleport.pid --insecure

유닛 파일을 저장한 후, 변경 사항을 적용하려면 데몬을 다시 로드해야 합니다:

$ sudo systemctl daemon-reload
$ sudo systemctl restart teleport.service

tctl

Teleport 프록시 서비스를 통해 tctl을 원격으로 실행할 때, 프록시 서비스가 자체 서명된 인증서를 사용하는 경우, tctl은 프록시 서비스의 인증서를 신뢰하지 않습니다.
인증서 검증을 비활성화하려면, tctl 명령 실행 시 --insecure 플래그를 사용하세요.

tctl은 다음과 같은 여러 방법으로 인증 서비스에 연결 방법을 결정합니다:

  • tsh로 로그인한 후 로컬 프로필에서 구성 로드
  • 인수로 전달된 구성 파일에서 로드: tctl -c /etc/teleport.yaml
  • --auth-server 플래그를 직접 전달:
    • tctl --auth-server=tele.example.com:443 또는
    • tctl --auth-server=tele.example.com:3080

이 방법들이 Teleport 프록시 서비스를 통해 연결을 시도할 때 프록시 서비스가 자체 서명된 인증서를 사용하고 있다면, tctl은 프록시 서비스의 인증서를 신뢰하지 않으며, --insecure 플래그가 전달되지 않는 한 신뢰되지 않거나 잘못된 인증서에 대한 오류 메시지를 받게 됩니다.

예: tctl status --insecure

tsh

tsh를 실행할 때는 tsh가 연결할 Teleport 프록시 서비스 주소를 지정해야 합니다.
만약 Teleport 프록시 서비스가 자체 서명된 인증서를 사용하는 경우, tsh는 프록시 서비스 인증서를 신뢰하지 않습니다.
이 경우 --insecure 플래그를 사용해야 합니다.

예: tsh login --proxy=tele.example.com:443 --user=alice --insecure

Teleport Connect

Teleport Connect는 TLS 인증서 검증을 건너뛰게 해주는 --insecure 플래그를 사용할 수 있습니다.

추가 자료

Teleport 원문 보기