Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

부록 A. SSL/TLS 인증서 구성

공용 엔드포인트에서 통신에 SSL/TLS를 사용하도록 언더클라우드를 구성할 수 있습니다. 하지만, 자체 인증 기관의 SSL 인증서를 사용하는 경우 인증서에 다음 섹션의 구성 단계가 필요합니다.

참고

오버클라우드 SSL/TLS 인증서 생성에 대해서는 Advanced Overcloud Customization 가이드에서 "Enabling SSL/TLS on Overcloud Public Endpoints"를 참조하십시오.

A.1. 서명 호스트 초기화

서명 호스트는 새 인증서를 생성하고 인증 기관을 통해 서명하는 호스트입니다. 선택한 서명 호스트에서 SSL 인증서를 생성한 적이 없는 경우 새 인증서에 서명할 수 있도록 호스트를 초기화해야 할 수 있습니다.

/etc/pki/CA/index.txt 파일은 서명한 모든 인증서 레코드를 저장합니다. 이 파일이 있는지 확인합니다. 없는 경우 빈 파일을 생성합니다.

$ sudo touch /etc/pki/CA/index.txt

/etc/pki/CA/serial 파일은 서명할 다음 인증서에 사용할 다음 일련 번호를 식별합니다. 이 파일이 있는지 확인합니다. 이 파일이 없는 경우 새 시작 값으로 새 파일을 생성합니다.

$ sudo echo '1000' | sudo tee /etc/pki/CA/serial

A.2. 인증 기관 생성

일반적으로는 외부 인증 기관을 통해 SSL/TLS 인증서에 서명합니다. 상황에 따라 고유한 인증 기관을 사용하려고 할 수 있습니다. 예를 들어 내부 전용 인증 기관을 사용하도록 설정할 수 있습니다.

예를 들어 인증 기관 역할을 할 키와 인증서 쌍을 생성합니다.

$ openssl genrsa -out ca.key.pem 4096
$ openssl req  -key ca.key.pem -new -x509 -days 7300 -extensions v3_ca -out ca.crt.pem

openssl req 명령은 기관에 대한 특정 세부 사항을 요청합니다. 이러한 세부 사항을 입력합니다.

이렇게 하면 ca.crt.pem이라고 하는 인증 기관 파일이 생성됩니다.

A.3. 클라이언트에 인증 기관 추가

외부 클라이언트가 SSL/TLS를 사용하여 통신하려는 경우 Red Hat OpenStack Platform 환경에 액세스해야 하는 각 클라이언트에 인증 기관 파일을 복사합니다. 클라이언트에 복사했으면 클라이언트에서 다음 명령을 실행하여 인증 기관 신뢰 번들을 추가합니다.

$ sudo cp ca.crt.pem /etc/pki/ca-trust/source/anchors/
$ sudo update-ca-trust extract

A.4. SSL/TLS 키 생성

언더클라우드 또는 오버클라우드 인증서를 생성할 여러 지점에서 사용하는 SSL/TLS 키(server.key.pem)를 생성하려면 다음 명령을 실행합니다.

$ openssl genrsa -out server.key.pem 2048

A.5. SSL/TLS 인증서 서명 요청 생성

다음 절차에서는 언더클라우드 또는 오버클라우드에 대한 인증서 서명 요청을 생성합니다.

사용자 정의할 기본 OpenSSL 구성 파일을 복사합니다.

$ cp /etc/pki/tls/openssl.cnf .

사용자 정의 openssl.cnf 파일을 편집하고 director에 사용할 SSL 매개 변수를 설정합니다. 수정할 매개 변수 유형의 예는 다음과 같습니다.

[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req

[req_distinguished_name]
countryName = Country Name (2 letter code)
countryName_default = AU
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Queensland
localityName = Locality Name (eg, city)
localityName_default = Brisbane
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = Red Hat
commonName = Common Name
commonName_default = 192.168.0.1
commonName_max = 64

[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]
IP.1 = 192.168.0.1
DNS.1 = instack.localdomain
DNS.2 = vip.localdomain
DNS.3 = 192.168.0.1

commonName_default를 다음 중 하나로 설정합니다.

  • IP 주소를 사용하여 SSL/TLS를 통해 액세스하는 경우 undercloud_public_host 매개 변수를 undercloud.conf에 사용합니다.
  • 정규화된 도메인 이름을 사용하여 SSL/TLS을 통해 액세스하는 경우 도메인 이름을 대신 사용합니다.

다음 항목을 포함하도록 alt_names 섹션을 편집합니다.

  • IP - 클라이언트가 SSL을 통해 director에 액세스하는 IP 주소 목록입니다.
  • DNS - 클라이언트가 SSL을 통해 director에 액세스하는 도메인 이름 목록입니다. 또한 공용 API IP 주소를 alt_names 섹션 끝에 DNS 항목으로 포함합니다.

openssl.cnf에 대한 자세한 내용을 보려면 man openssl.cnf를 실행합니다.

다음 명령을 실행하여 인증서 서명 요청을 생성합니다(server.csr.pem).

$ openssl req -config openssl.cnf -key server.key.pem -new -out server.csr.pem

-key 옵션에 대해 A.4절. “SSL/TLS 키 생성”에서 생성한 SSL/TLS 키를 반드시 포함하십시오.

다음 섹션에서 server.csr.pem 파일을 사용하여 SSL/TLS 인증서를 생성합니다.

A.6. SSL/TLS 인증서 생성

다음 명령은 언더클라우드 또는 오버클라우드에 대한 인증서를 생성합니다.

$ sudo openssl ca -config openssl.cnf -extensions v3_req -days 3650 -in server.csr.pem -out server.crt.pem -cert ca.crt.pem -keyfile ca.key.pem

이 명령에는 다음이 사용됩니다.

이렇게 하면 server.crt.pem이라는 인증서가 생성됩니다. 이 인증서를 A.4절. “SSL/TLS 키 생성”의 SSL/TLS 키와 함께 사용하여 SSL/TLS를 활성화합니다.

A.7. 언더클라우드에서 인증서 사용

다음 명령을 실행하여 인증서와 키를 함께 통합합니다.

$ cat server.crt.pem server.key.pem > undercloud.pem

이렇게 하면 undercloud.pem 파일이 생성됩니다. undercloud.conf 파일에서 undercloud_service_certificate 옵션에 대해 이 파일 위치를 지정합니다. 이 파일에는 HAProxy 툴에서 읽을 수 있도록 특수한 SELinux 컨텍스트도 필요합니다. 다음 예를 가이드로 사용하십시오.

$ sudo mkdir /etc/pki/instack-certs
$ sudo cp ~/undercloud.pem /etc/pki/instack-certs/.
$ sudo semanage fcontext -a -t etc_t "/etc/pki/instack-certs(/.*)?"
$ sudo restorecon -R /etc/pki/instack-certs

undercloud.pem 파일 위치를 undercloud.conf 파일의 undercloud_service_certificate 옵션에 추가합니다. 예를 들면 다음과 같습니다.

undercloud_service_certificate = /etc/pki/instack-certs/undercloud.pem

또한 A.2절. “인증 기관 생성”의 인증 기관을 언더클라우드의 신뢰할 수 있는 인증 기관 목록에 추가하여 언더클라우드 내의 다른 서비스에서 인증 기관에 액세스할 수 있도록 합니다.

$ sudo cp ca.crt.pem /etc/pki/ca-trust/source/anchors/
$ sudo update-ca-trust extract

4.1절. “Director 설정 ”의 지침에 따라 언더클라우드를 계속 설치합니다.