美文网首页
OpenStack Libvirt TLS配置指南

OpenStack Libvirt TLS配置指南

作者: 大老三 | 来源:发表于2018-07-08 16:19 被阅读122次

    OpenStack环境中,Libvirt默认采用TCP方式,会监听16509端口。这种方式是不安全的,因此建议采用TLS安全连接的方式。配置TLS最重要的步骤,是证书的生成及管理。证书的生成可以在任意节点进行(OpenStack集群内节点,或非OpenStack集群节点均可,对应详细步骤中的步骤1-4)。

    证书生成主要分为以下几个步骤

    • 生成中央证书颁发机构证书。只需生成一次,所有节点的服务端证书及客户端证书,均基于此生成。
    • 生成服务端证书及私钥。每个计算节点均需要配置与该计算节点对应的服务端证书及私钥,需生成多次。
    • 生成客户端证书及私钥。每个计算节点均需要配置与该计算节点对应的客户端证书及私钥,需生成多次。
    • 证书分发。需将中央证书颁发机构证书、与计算节点对应的服务端证书与私钥、与计算节点对应的客户端证书与私钥,分别复制到对应的计算节点目录上。

    详细流程

    1. 安装证书生成工具

    yum install gnutls-utils
    

    2. 创建中央证书颁发机构证书,用于签署为每个计算节点创建的证书(只需执行一次)

    (1) 创建模板

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

    (2) 生成中央证书颁发机构证书的私钥文件

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

    (3) 使用(1)中模板及(2)中私钥,生成中央证书颁发机构证书

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

    3. 为每个计算节点生成服务端证书 (多个计算节点,则执行多次)

    (1)创建计算节点服务端证书信息模板(如果是多个节点,则为每个计算节点创建一个模板,cn值为节点主机名)

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

    (2) 生成服务端证书私钥

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

    (3) 生成服务端证书

    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. 为每个计算节点生成客户端证书(多个计算节点,则执行多次)

    (1) 创建计算节点服务端证书信息模板(如果是多个节点,则为每个计算节点创建一个模板,cn值为节点主机名)

    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. 将证书分发到对应的计算节点(模板是node1_client.info的就分发到co-dev-node1多个计算节点,则执行多次)

    (1) 分发中央证书到各计算节点

    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) 创建libvirt证书文件夹

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

    (3) 分发服务端证书

    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) 分发客户端证书

    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

    相关文章

      网友评论

          本文标题:OpenStack Libvirt TLS配置指南

          本文链接:https://www.haomeiwen.com/subject/biuouftx.html