搜索

18.3. 通过 TLS 和 SSL 进行远程管理

download PDF
您可以使用 TLS 和 SSL 协议管理虚拟机。TLS 和 SSL 提供更大的可扩展性,但比 SSH 复杂(请参阅 第 18.2 节 “使用 SSH 进行远程管理”)。TLS 和 SSL 是 Web 浏览器用于安全连接的相同。libvirt 管理连接为传入连接打开一个 TCP 端口,该连接会根据 x509 证书安全地加密和验证。以下流程提供了为 TLS 和 SSL 管理创建和部署身份验证证书的说明。

过程 18.1. 为 TLS 管理创建证书颁发机构(CA)密钥

  1. 开始之前,确认已安装了 gnutls-utils。如果没有安装,请安装它:
    # yum install gnutls-utils 
  2. 使用以下命令生成私钥:
    # certtool --generate-privkey > cakey.pem
  3. 生成密钥后,创建签名文件,以便密钥可以自签名。要做到这一点,创建一个带有签名详情的文件,并将其命名为 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 证书文件,以便他们知道您的 CA 发布的证书可以信任。要查看此文件的内容,请运行:
    # certtool -i --infile cacert.pem
    这是设置您的 CA 所需要的。保持 CA 的私钥安全,因为您需要它才能为客户端和服务器签发证书。

过程 18.2. 发出服务器证书

此流程演示了如何将 X.509 通用名称(CN)字段设置为服务器主机名来签发证书。CN 必须与客户端用来连接到服务器的主机名匹配。在本例中,客户端将使用 URI: qemu://mycommonname/system 连接到服务器,因此 CN 字段应当相同,例如"mycommoname"。
  1. 为服务器创建私钥。
    # certtool --generate-privkey > serverkey.pem
  2. 首先创建名为 server.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
    这会导致生成两个文件:
    • ServerKey.pem - 服务器的私钥
    • servercert.pem - 服务器的公钥
  4. 确保保留私钥 secret 的位置。要查看文件的内容,请使用以下命令:
    # certtool -i --infile servercert.pem
    打开此文件时,CN= 参数应当与之前设置的 CN 相同。例如,mycommonname
  5. 在以下位置安装两个文件:
    • ServerKey.pem - 服务器的私钥。将这个文件放在以下位置: /etc/pki/libvirt/private/serverkey.pem
    • servercert.pem - 服务器的证书。将它安装到服务器上的以下位置: /etc/pki/libvirt/servercert.pem

过程 18.3. 发出客户端证书

  1. 对于每个客户端(例如,与 libvirt 链接的任何程序(如 virt-manager),您需要向证书发出 X.509 区分名称(DN)字段,设置为合适的名称。这需要在企业层面上决定。
    例如,会使用以下信息:
    C=USA,ST=North Carolina,L=Raleigh,O=Red Hat,CN=name_of_client
  2. 创建一个私钥:
    # certtool --generate-privkey > clientkey.pem
  3. 首先创建名为 client.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
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.