啊喂。在带有 TLS 的 KVM 上为远程 virsh(以及后来的 terraform)实现 libvirt。使用 qemu URI 对使用无密码密钥的客户端证书一切正常。即virsh qemu://host/system list --all
工作正常,客户端证书认证很好
现在,我们想使用带密码的密钥,但我看不到传递凭据的明显方法。(我对此很陌生)。
在服务器端的 centos-7 上使用 libvirtd 4.5.0,在 centos-7 客户端使用 libvirt 4.5.0。
一眼看去,似乎 libvirt 的 virnettlscontext 在上下文(类型gnutls_certificate_credentials_t
)中至少有一个用于 x509 凭据的字段(请参阅https://github.com/libvirt/libvirt/blob/v4.5.0/src/rpc/virnettlscontext。 c ),但我无法找到从命令行为 virsh 设置它的方法。我的 C/Linux foo 不够强大,无法理解代码以及如何使用它。
我尝试为远程 uri 使用额外的参数/system?x509-key-password=<password>
-> 仍然显示“解密失败”。我究竟做错了什么?如何为远程 qemu 会话传递客户端密钥的 x509 凭据?
使用带密码的客户端密钥时收到的错误是:
virsh -d4 -c "qemu://<host>/system?x509-key-password=<password>" hostname
setlocale: No such file or directory
error: failed to connect to the hypervisor
error: Unable to set x509 key and certificate: /etc/pki/libvirt/private/clientkey.pem, /etc/pki/libvirt/clientcert.pem: Decryption has failed.