Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

5.2. TLS 및 SSL을 통한 원격 관리

TLS 및 SSL을 사용하여 가상 머신을 관리할 수 있습니다. TLS 및 SSL은 향상된 확장성을 제공하지만 ssh보다 더 복잡할 수 있습니다( 5.1절. “SSH를 사용한 원격 관리”참조). TLS 및 SSL은 웹 브라우저에서 보안 연결을 위해 사용하는 것과 동일한 기술입니다. libvirt 관리 연결은 x509 인증서를 기반으로 안전하게 암호화되고 인증된 들어오는 연결에 대한 TCP 포트를 엽니다. 다음 절차에서는 TLS 및 SSL 관리를 위한 인증 인증서 생성 및 배포에 대한 지침을 제공합니다.

절차 5.1. TLS 관리를 위한 인증 기관(CA) 키 생성

  1. 시작하기 전에 certtool 유틸리티가 설치되었는지 확인합니다. 그렇지 않은 경우:
    # yum install gnutls-utils
  2. 다음 명령을 사용하여 개인 키를 생성합니다.
    # certtool --generate-privkey > cakey.pem
  3. 키가 생성되면 다음 단계는 서명 파일을 작성하여 키를 자체 서명할 수 있도록 하는 것입니다. 이렇게 하려면 서명 세부 정보가 있는 파일을 생성하고 이름을 ca.info 로 지정합니다. 이 파일에는 다음이 포함되어야 합니다.
    # vim ca.info
    cn = Name of your organization
    ca
    cert_signing_key
    
  4. 다음 명령을 사용하여 자체 서명 키를 생성합니다.
    # certtool --generate-self-signed --load-privkey cakey.pem --template ca.info --outfile cacert.pem
    파일이 생성되면 rm 명령을 사용하여 ca.info 파일을 삭제할 수 있습니다. 생성 프로세스에서 발생하는 파일의 이름은 cacert.pem 입니다. 이 파일은 공개 키(certificate)입니다. 로드된 파일 cakey.pem 은 개인 키입니다. 이 파일은 공유 공간에 보관해서는 안 됩니다. 이 키를 비공개로 유지합니다.
  5. /etc/pki/CA/cacert.pem 디렉터리의 모든 클라이언트 및 서버에 cacert.pem 인증 인증 인증서 파일을 설치하여 CA에서 발급한 인증서를 신뢰할 수 있도록 합니다. 이 파일의 내용을 보려면 다음을 실행합니다.
    # certtool -i --infile cacert.pem
    이는 CA를 설정하는 데 필요한 모든 것입니다. 클라이언트 및 서버의 인증서를 발급하려면 CA의 개인 키를 안전하게 보관해야 합니다.

절차 5.2. 서버 인증서 발급

다음 절차에서는 서버 호스트 이름으로 X.509 CN(CommonName) 필드를 설정하여 인증서를 발급하는 방법을 설명합니다. CN은 클라이언트가 서버에 연결하는 데 사용할 호스트 이름과 일치해야 합니다. 이 예에서 클라이언트는 URI: qemu://mycommonname/system 을 사용하여 서버에 연결하므로 CN 필드가 동일해야 합니다.
  1. 서버에 대한 개인 키를 만듭니다.
    # certtool --generate-privkey > serverkey.pem
  2. server.info .info라는 템플릿 파일을 먼저 생성하여 CA의 개인 키 서명을 생성합니다. CN이 서버의 호스트 이름과 동일하게 설정되어 있는지 확인합니다.
    organization = Name of your organization
    cn = mycommonname
    tls_www_server
    encryption_key
    signing_key
    
  3. 다음 명령을 사용하여 인증서를 생성합니다.
    # certtool --generate-certificate --load-privkey serverkey.pem --load-ca-certificate cacert.pem --load-ca-privkey cakey.pem \ --template server.info --outfile servercert.pem
  4. 그러면 두 개의 파일이 생성됩니다.
    • serverkey.pem - 서버의 개인 키
    • servercert.pem - 서버의 공개 키
    개인 키의 위치를 비밀로 유지합니다. 파일의 내용을 보려면 다음 명령을 수행합니다.
    # certtool -i --inifile servercert.pem
    이 파일을 열 때 CN= 매개변수는 이전에 설정한 CN과 동일해야 합니다. 예를 들면 mycommonname 입니다.
  5. 다음 위치에 두 파일을 설치합니다.
    • serverkey.pem - 서버의 개인 키입니다. 이 파일을 다음 위치에 배치합니다. /etc/pki/libvirt/private/serverkey.pem
    • servercert.pem - 서버의 인증서입니다. 서버의 다음 위치에 설치합니다. /etc/pki/libvirt/servercert.pem

절차 5.3. 클라이언트 인증서 발급

  1. 모든 클라이언트(예: virt-manager와 같은 libvirt에 연결된 모든 프로그램)의 경우 X.509 Distinguished Name(DN)을 적절한 이름으로 설정해야 합니다. 이는 기업 차원에서 결정해야 합니다.
    예를 들어 다음 정보가 사용됩니다.
    C=USA,ST=North Carolina,L=Raleigh,O=Red Hat,CN=name_of_client
    이 프로세스는 절차 5.2. “서버 인증서 발급” 와 매우 유사하지만 다음과 같은 예외가 명시되어 있습니다.
  2. 다음 명령을 사용하여 개인 키를 만듭니다.
    # certtool --generate-privkey > clientkey.pem
  3. 먼저 client.info .info라는 템플릿 파일을 생성하여 CA의 개인 키 서명을 생성합니다. 파일에는 다음 내용이 포함되어야 합니다(지역/위치를 반영하도록 필드를 사용자 지정해야 함).
    country = USA
    state = North Carolina
    locality = Raleigh
    organization = Red Hat
    cn = client1
    tls_www_client
    encryption_key
    signing_key
    
  4. 다음 명령을 사용하여 인증서에 서명합니다.
    # certtool --generate-certificate --load-privkey clientkey.pem --load-ca-certificate cacert.pem \ --load-ca-privkey cakey.pem --template client.info --outfile clientcert.pem
  5. 클라이언트 머신에 인증서를 설치합니다.
    # cp clientkey.pem /etc/pki/libvirt/private/clientkey.pem
    # cp clientcert.pem /etc/pki/libvirt/clientcert.pem