zoukankan      html  css  js  c++  java
  • libvirt TLS

    博客原文

    http://hi.baidu.com/wwfmarcpjkbdiod/item/7b43c89e949d7fbbcd80e590

    构建Libvirt的x509证书远程tls连接
    http://libvirt.org/remote.html


    连接格式:

    1. 通用格式:
    driver[+transport]://[username@][hostname][:port]/[path][?extraparameters]

    2. 如使用qemu和tls的:(在配置完毕后)
    virsh -c qemu+tls://10.61.1.85/system


    证书类型及位置:

    见http://libvirt.org/remote.html
    1. CA证书:server和client
    2. server的私有Key,及公有Key(由CA颁发的):server上
    3. client的私有Key,及公有Key(由CA颁发的):client上


    TLS认证原理:

    1. client认证server。client将server发送的证书与server的hostname进行匹配
    2. server认证client的可控性。server对client的IP,或者client的IP和证书来进行认证
    3. 默认的server的libvirt的配置是不对DN进行检查,也就是说允许所有的拥有CA颁发的证书的client登入


    搭建CA、server端证书、client端证书:

    1. 过程见那个网页
    2. 没有的/etc/pki/libvirt目录可以创建


    配置、运行和调试:

    1. server上配置:
    如果想显式控制访问者,则可以修改/etc/libvirt/libvirtd.conf
    a. Uncomment : tls_allowed_dn_list,改成类似这样的”
    tls_allowed_dn_list = ["C=CN,O=red_hat,L=Beijing,ST=Beijing,CN=10.61.1.87"]

    b. 注意几点:
    i. 各个项的顺序要一致,比如使用这样则不能认证:
    tls_allowed_dn_list = ["C=CN,ST=Beijing,L=Beijing,O=red_hat,CN=10.61.1.87"]
    ii. 中间逗号后面不能有空格
    iii. 如果犯了i,ii的错误,则可能会有这样的错误:
    Connecting to uri: qemu+tls://10.61.1.85/system
    error: unable to connect to libvirtd at '10.61.1.85': Invalid argument
    error: failed to connect to the hypervisor

    2. client及server端的运行:
    a. server端libvirtd启动必须要以--listen选项启动
    b. client端执行:virsh -c qemu+tls://10.61.1.85/system

    3. 认证失败的调试
    a. 使用/usr/sbin/libvirtd --listen --verbose 来启动libvirtd,可以出现部分错误信息,如tls_allowed_dn_list各项的顺序不对时,会出现:
    15:44:48.527: error : remoteCheckCertificate:1138 : remoteCheckCertificate: client's Distinguished Name is not on the list of allowed clients (tls_allowed_dn_list).  Use 'openssl x509 -in clientcert.pem -text' to view the Distinguished Name field in the client certificate, or run this daemon with --verbose option.
    15:44:48.527: error : remoteCheckAccess:1157 : remoteCheckCertificate: failed to verify client's certificate

    b. 接上一条,如果出现了那个信息,可以使用openssl x509 -in clientcert.pem -text来对client的公钥进行信息输出,并注意这个字段:
    Subject: C=CN, O=red_hat, L=Beijing, ST=Beijing, CN=10.61.1.87
    其实这一行的主体内容去掉空格,就是tls_allowed_dn_list中应该填的DN内容

  • 相关阅读:
    德阳机场大巴
    “以前进行的程序安装创建了挂起的文件操作。运行程序之前,必须重新起动计算机。”的解决办法
    Web程序中网页间数据传递方法小结
    转向姚BLOG
    用ASP.NET在IIS中创建虚拟目录
    TreeView 点击Nodes属性出现“指定的转换无效”错误
    该页正在访问其控制范围之外的数据。这有些危险。是否继续?
    JS的Trim
    JS简明中文教程
    电子数据交换
  • 原文地址:https://www.cnblogs.com/ruiy/p/virtTLS.html
Copyright © 2011-2022 走看看