OpenStack Libvirt TLS配置指南

OpenStack環(huán)境中,Libvirt默認(rèn)采用TCP方式,會監(jiān)聽16509端口。這種方式是不安全的,因此建議采用TLS安全連接的方式。配置TLS最重要的步驟,是證書的生成及管理。證書的生成可以在任意節(jié)點(diǎn)進(jìn)行(OpenStack集群內(nèi)節(jié)點(diǎn),或非OpenStack集群節(jié)點(diǎn)均可,對應(yīng)詳細(xì)步驟中的步驟1-4)。

證書生成主要分為以下幾個步驟

  • 生成中央證書頒發(fā)機(jī)構(gòu)證書。只需生成一次,所有節(jié)點(diǎn)的服務(wù)端證書及客戶端證書,均基于此生成。
  • 生成服務(wù)端證書及私鑰。每個計算節(jié)點(diǎn)均需要配置與該計算節(jié)點(diǎn)對應(yīng)的服務(wù)端證書及私鑰,需生成多次。
  • 生成客戶端證書及私鑰。每個計算節(jié)點(diǎn)均需要配置與該計算節(jié)點(diǎn)對應(yīng)的客戶端證書及私鑰,需生成多次。
  • 證書分發(fā)。需將中央證書頒發(fā)機(jī)構(gòu)證書、與計算節(jié)點(diǎn)對應(yīng)的服務(wù)端證書與私鑰、與計算節(jié)點(diǎn)對應(yīng)的客戶端證書與私鑰,分別復(fù)制到對應(yīng)的計算節(jié)點(diǎn)目錄上。

詳細(xì)流程

1. 安裝證書生成工具

yum install gnutls-utils

2. 創(chuàng)建中央證書頒發(fā)機(jī)構(gòu)證書,用于簽署為每個計算節(jié)點(diǎn)創(chuàng)建的證書(只需執(zhí)行一次)

(1) 創(chuàng)建模板

cat certificate_authority_template.info
cn = cmss
ca
cert_signing_key
expiration_days = 7000

(2) 生成中央證書頒發(fā)機(jī)構(gòu)證書的私鑰文件

(umask 277 && certtool --generate-privkey > certificate_authority_key.pem) 

(3) 使用(1)中模板及(2)中私鑰,生成中央證書頒發(fā)機(jī)構(gòu)證書

certtool --generate-self-signed \
            --template certificate_authority_template.info \
            --load-privkey certificate_authority_key.pem \
            --outfile certificate_authority_certificate.pem

3. 為每個計算節(jié)點(diǎn)生成服務(wù)端證書 (多個計算節(jié)點(diǎn),則執(zhí)行多次)

(1)創(chuàng)建計算節(jié)點(diǎn)服務(wù)端證書信息模板(如果是多個節(jié)點(diǎn),則為每個計算節(jié)點(diǎn)創(chuàng)建一個模板,cn值為節(jié)點(diǎn)主機(jī)名)

cat node1_server.info
organization = cmss
cn = co-dev-node1
tls_www_server
encryption_key
signing_key

(2) 生成服務(wù)端證書私鑰

(umask 277 && certtool --generate-privkey > node1_server_key.pem)

(3) 生成服務(wù)端證書

certtool --generate-certificate --template node1_server.info --load-privkey node1_server_key.pem --load-ca-certificate certificate_authority_certificate.pem --load-ca-privkey certificate_authority_key.pem --outfile node1_server_certificate.pem

4. 為每個計算節(jié)點(diǎn)生成客戶端證書(多個計算節(jié)點(diǎn),則執(zhí)行多次)

(1) 創(chuàng)建計算節(jié)點(diǎn)服務(wù)端證書信息模板(如果是多個節(jié)點(diǎn),則為每個計算節(jié)點(diǎn)創(chuàng)建一個模板,cn值為節(jié)點(diǎn)主機(jī)名)

cat node1_client.info
country = CN
state = Jiangsu
locality = Suzhou
organization = cmss
cn = co-dev-node1
tls_www_client
encryption_key
signing_key

(2) 生成客戶端證書私鑰

(umask 277 && certtool --generate-privkey > node1_client_key.pem)

(3) 生成客戶端證書

certtool --generate-certificate \
            --template node1_client.info \
            --load-privkey node1_client_key.pem \
            --load-ca-certificate certificate_authority_certificate.pem \
            --load-ca-privkey certificate_authority_key.pem \
            --outfile node1_client_certificate.pem

5. 將證書分發(fā)到對應(yīng)的計算節(jié)點(diǎn)(模板是node1_client.info的就分發(fā)到co-dev-node1多個計算節(jié)點(diǎn),則執(zhí)行多次)

(1) 分發(fā)中央證書到各計算節(jié)點(diǎn)

scp -p certificate_authority_certificate.pem root@co-dev-node1:/etc/pki/CA/cacert.pem
chmod 444 /etc/pki/CA/cacert.pem
restorecon /etc/pki/CA/cacert.pem

(2) 創(chuàng)建libvirt證書文件夾

mkdir -p /etc/pki/libvirt/private
chmod 755 /etc/pki/libvirt
chmod 750 /etc/pki/libvirt/private

(3) 分發(fā)服務(wù)端證書

scp -p node1_server_certificate.pem root@co-dev-node1:/etc/pki/libvirt/servercert.pem
scp -p node1_server_key.pem root@co-dev-node1:/etc/pki/libvirt/private/serverkey.pem
chgrp qemu /etc/pki/libvirt \
              /etc/pki/libvirt/servercert.pem \
              /etc/pki/libvirt/private \
              /etc/pki/libvirt/private/serverkey.pem
chmod 440 /etc/pki/libvirt/servercert.pem \             /etc/pki/libvirt/private/serverkey.pem
restorecon -R /etc/pki/libvirt \                 /etc/pki/libvirt/private

(5) 分發(fā)客戶端證書

scp -p node1_client_certificate.pem root@co-dev-node1:/etc/pki/libvirt/clientcert.pem
scp -p node1_client_key.pem root@co-dev-node1:/etc/pki/libvirt/private/clientkey.pem
chmod 400 /etc/pki/libvirt/clientcert.pem /etc/pki/libvirt/private/clientkey.pem
restorecon /etc/pki/libvirt/clientcert.pem /etc/pki/libvirt/private/clientkey.pem

6. 重啟libvirt

systemctl restart libvirtd

7.驗證配置生效

virsh -c qemu+tls://<hostname>/system list --all

8.修改nova配置

live_migration_scheme=tls

9. 重啟nova-compute

systemctl restart openstack-nova-compute

10. 驗證nova熱遷移功能正常

參考鏈接:https://wiki.libvirt.org/page/TLSSetup

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容