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内容
libvirt TLS的更多相关文章
- Virtualization API之libvirt
The virtualization API 之开源 libvirt探究 By Ruiy: libvirt supports Hypervisors(注,相关的hypervisors项目的权威网站已经 ...
- libvirt 命令行交互工具之virsh
libvirt是当前主流VM最低层库.IBM PowerVM也不例外,libvirt是深入玩虚拟化必须玩转的东西; 简单测试玩玩libvirt 的virsh命令行交互工具, 你我都知libvirt大体 ...
- libvirt 基于C API基本使用案例
玩开源分享,需要有干到底的精神,今晚随便逛逛技术论坛突发有感;Ruiy不足之处,需跟进了; 最近变的较懒了,干活有点没劲,也不怪干来干去收获不大,缺少鼓励! 现在玩的技术大多是上不了台面了,想过没,你 ...
- libvirt hypervisors信息采集
libvirt采集hypervisors信息的通用格式 driver[+transport]://[username@][hostname][:port]/[path][?extraparameter ...
- ubuntu15.04下编译 libvirt
很久没有编译 libvirt了. 工作需要,重新编译. [org_ref]: http://libvirt.org/compiling.html 很简单. 编译过程, 还是很多问题. 依赖包(给懒人参 ...
- libvirt C-API
1,warming-up Specifying URIs to libVirt;name parameter to virConnectOpen or virConnectOpenR ...
- libvirt(virsh命令介绍)
有了virt-install是安装虚拟机的命令,当然也需要一个管理虚拟机的命令了,那就是virsh. virsh命令使用 virsh <command> <domain-id> ...
- libvirt(virsh命令总结)
virsh回车进入交互式界面: version pwd hostname 显示本节点主机名 nodeinfo 显示节点信息 list --all 显示所有云主机 7种状态: running 运行中 ...
- <转> Libvirt学习总结
感谢朋友支持本博客.欢迎共同探讨交流.因为能力和时间有限,错误之处在所难免,欢迎指正! 假设转载,请保留作者信息. 博客地址:http://blog.csdn.net/gaoxingnengjisua ...
随机推荐
- [RxJS] Returning subscriptions from the subscribe function
So far, when writing these subscribe functions, we haven't returned anything. It is possible return ...
- mysql 变量is null 和 not exists区别
问题: 使用游标遍历时,发现使用 select var into tmp where var=? 然后判断if tmp is null时,不能走完所有的遍历.经debug发现, 当var为空时,则跳出 ...
- [转] Gradle中的buildScript代码块
PS: 在build script中的task apply plugin: 'spring-boot' 需要 classpath("org.springframework.boot:spri ...
- Android Studio导入GitHub上的项目常见问题(以图片轮播开源项目为实例)
前言:github对开发者而言无疑是个宝藏,但想利用它可不是件简单的事,用Android studio导入开源项目会遇到各种问题,今天我就以github上的一个图片轮播项目为例,解决导入过程中的常见问 ...
- web04--cookie
1.创建1.jsp <body> <form action="cookie/2.jsp" method="post"> 姓名:<i ...
- web03--session
1.创建session1.jsp <body> <form action="session2.jsp" method="post"> & ...
- OD: Ring0 & Kernel
开发技术讲究封装与模块化,安全技术强调底层安全性.安全技术需要打开封装.追根溯源! <0day 安全:软件漏洞分析技术(第2版)> 第21章 探索 Ring0 笔记 Intel x86 系 ...
- phpMyAdmin配置及 错误 缺少 mysqli 扩展。请检查 PHP 配置
PHPMyadmin配置文件config.inc.php内容如下,在需要设置的地方增加了相关注释. 非常适合对数据库操作命令不熟悉的数据库管理者,下面我就说下怎么安装该工具: 1.先到网上下载 ...
- git add相关
git add -A stages All git add . stages new and modified, without deleted git add -u stages modified ...
- Java下载Servlet Demo
request.setCharacterEncoding("utf-8"); String name=request.getParameter("name"); ...