18.3. TLS 및 SSL을 통한 원격 관리
TLS 및 SSL 프로토콜을 사용하여 가상 머신을 관리할 수 있습니다. TLS 및 SSL은 확장성을 제공하지만 SSH보다 더 복잡한 ( 18.2절. “SSH를 사용한 원격 관리”참조) TLS 및 SSL은 보안 연결을 위해 웹 브라우저에서 사용하는 것과 동일한 기술입니다. libvirt 관리 연결은 입력 연결에 대해 TCP 포트를 엽니다. 이 포트는 x509 인증서를 기반으로 안전하게 암호화되고 인증됩니다. 다음 절차에서는 TLS 및 SSL 관리를 위한 인증 인증서 생성 및 배포에 대한 지침을 제공합니다.
절차 18.1. TLS 관리를 위한 CA(인증 기관) 키 생성
- 시작하기 전에 gnutls-utils 가 설치되었는지 확인합니다. 그렇지 않은 경우 설치합니다.
# yum install gnutls-utils
- 다음 명령을 사용하여 개인 키를 생성합니다.
# certtool --generate-privkey > cakey.pem
- 키가 생성된 후 자체 서명할 수 있도록 서명 파일을 만듭니다. 이렇게 하려면 서명 세부 정보를 사용하여 파일을 생성하고 이름을
ca.info
로 지정합니다. 이 파일에는 다음이 포함되어야 합니다.cn = Name of your organization ca cert_signing_key
- 다음 명령을 사용하여 자체 서명된 키를 생성합니다.
# certtool --generate-self-signed --load-privkey cakey.pem --template ca.info --outfile cacert.pem
파일이 생성되면 rm 명령을 사용하여ca.info
파일을 삭제할 수 있습니다. 생성 과정에서 발생하는 파일의 이름은cacert.pem
입니다. 이 파일은 공개 키(certificate)입니다. 로드된 파일cakey.pem
은 개인 키입니다. 보안상의 이유로 이 파일은 비공개로 유지해야 하며 공유 공간에 상주해서는 안 됩니다. /etc/pki/CA/
CA 인증서 파일을 설치하여 CA에서 발급한 인증서를 신뢰할 수 있음을 알립니다. 이 파일의 내용을 보려면 다음을 실행합니다.cacert.pem
디렉터리의 모든 클라이언트 및 서버에 cacert.pem# certtool -i --infile cacert.pem
이는 CA를 설정하는 데 필요한 모든 것입니다. 클라이언트와 서버의 인증서를 발급하기 위해 필요한 경우 CA의 개인 키를 안전하게 유지합니다.
절차 18.2. 서버 인증서 발급
다음 절차에서는 서버의 호스트 이름으로 설정된 X.509 CN(일반 이름) 필드가 있는 인증서를 발급하는 방법을 설명합니다. CN은 클라이언트가 서버에 연결하는 데 사용할 호스트 이름과 일치해야 합니다. 이 예에서 클라이언트는 URI:
qemu://mycommonname/system
를 사용하여 서버에 연결되므로 CN 필드는 "mycommoname" 예제에 대해 동일해야 합니다.
- 서버의 개인 키를 만듭니다.
# certtool --generate-privkey > serverkey.pem
- 먼저
server.info
라는 템플릿 파일을 생성하여 CA의 개인 키에 대한 서명을 생성합니다. CN이 서버의 호스트 이름과 동일하게 설정되어 있는지 확인합니다.organization = Name of your organization cn = mycommonname tls_www_server encryption_key signing_key
- 인증서를 생성합니다.
# certtool --generate-certificate --load-privkey serverkey.pem --load-ca-certificate cacert.pem --load-ca-privkey cakey.pem \ --template server.info --outfile servercert.pem
이렇게 하면 두 개의 파일이 생성됩니다.- serverkey.pem - 서버의 개인 키
- servercert.pem - 서버의 공개 키
- 개인 키의 위치를 secret로 유지합니다. 파일 내용을 보려면 다음 명령을 사용하십시오.
# certtool -i --infile servercert.pem
이 파일을 열 때CN=
매개 변수는 이전에 설정한 CN과 동일해야 합니다. 예:mycommonname
. - 다음 위치에 두 파일을 설치합니다.
serverkey.pem
- 서버의 개인 키 이 파일을/etc/pki/libvirt/private/serverkey.pem
에 배치합니다.servercert.pem
- 서버의 인증서 서버의 다음 위치에 설치합니다./etc/pki/libvirt/servercert.pem
절차 18.3. 클라이언트 인증서 발급
- 모든 클라이언트(즉, virt-manager와 같이 libvirt와 연결된 모든 프로그램)에 대해 X.509 Distinguished Name(DN) 필드가 적절한 이름으로 설정된 인증서를 발급해야 합니다. 이는 기업 차원에서 결정되어야 합니다.예를 들어 다음과 같은 정보가 사용됩니다.
C=USA,ST=North Carolina,L=Raleigh,O=Red Hat,CN=name_of_client
- 개인 키를 생성합니다.
# certtool --generate-privkey > clientkey.pem
- 먼저
client.info
라는 템플릿 파일을 생성하여 CA의 개인 키에 대한 서명을 생성합니다. 파일에는 다음 내용이 포함되어야 합니다 (필요한 지역/위치를 반영하도록 필드를 사용자 지정해야 함):country = USA state = North Carolina locality = Raleigh organization = Red Hat cn = client1 tls_www_client encryption_key signing_key
- 다음 명령을 사용하여 인증서에 서명합니다.
# certtool --generate-certificate --load-privkey clientkey.pem --load-ca-certificate cacert.pem \ --load-ca-privkey cakey.pem --template client.info --outfile clientcert.pem
- 클라이언트 시스템에 인증서를 설치합니다.
# cp clientkey.pem /etc/pki/libvirt/private/clientkey.pem # cp clientcert.pem /etc/pki/libvirt/clientcert.pem