libvirt TLS

简介: 博客原文 http://hi.baidu.com/wwfmarcpjkbdiod/item/7b43c89e949d7fbbcd80e590   构建Libvirt的x509证书远程tls连接http://libvirt.

博客原文

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内容

目录
相关文章
|
9月前
|
IDE 网络安全 PHP
composer遇到SSL3_GET_SERVER_CERTIFICATE
composer遇到SSL3_GET_SERVER_CERTIFICATE
104 1
composer遇到SSL3_GET_SERVER_CERTIFICATE
|
安全 Linux 网络安全
CentOS7下vsftpd over SSL/TLS加密传输配置实践
CentOS7下vsftpd over SSL/TLS加密传输配置实践
399 0
CentOS7下vsftpd over SSL/TLS加密传输配置实践
|
网络协议 安全 网络安全
|
安全 网络协议 Shell
SSL与SSH的区别
在OSI七层模型中,这两个安全传输协议其实都是建立在应用层上的 在最初的设计意图中; SSL(Secure Sockets Layer (SSL) and Transport Layer Security (TLS))被设计为加强Web安全传输(HTTP/HTTPS/)的协议(事实上还有SMTP/NNTP等) ,默认使用443端口 SSH(Secure Shell)更多的则被设计为加强Telnet/FTP安全的传输协议,默认地,它使用22端口. ssl是通讯链路的附加层。可以包含很多协议。https, ftps, ..... ssh只是加密的shell,最初是用来替代telnet的。通过p
319 0
|
安全 网络协议 Shell
安全加密之--openssh
时间:2018.1.10作者:李强参考:man,info,magedu讲义,万能的internet实验环境:VMware® Workstation 12 Pro ,Centos 6.9,Centos 7.4,SecureCRT Version 8.1.4声明:以下英文纯属个人翻译,英文B级,欢迎纠正,以下内容纯属个人理解,并没有对错,只是参考,盗版不纠,才能有限,希望不误人子弟为好。
1037 0
|
Kubernetes 网络安全 API
|
Linux
CentOS "Peer's Certificate has expired" 问题
如题,在操作CentOS的时候发现下载软件,安装软件出现了标题中的错误。经排查,发现系统的时间与真实生活中的时间有偏差。 现在:2018-8-15 21:36:00 系统:2018-8-14 08:16:17 总之就是系统时间与现在的时间不一致。
3074 0
|
JavaScript Ubuntu Unix
|
Ubuntu Unix