libvirt tsl证书过期解决办法

本文记录了解决Libvirt证书过期导致虚拟机连接失败的问题过程,包括卸载并重新安装Libvirt软件包,重新生成证书文件等步骤。

万恶的资本主义啊,这什么破东西,去年的时候,同事生成的key,结果现在过期了。问他有没有加实现,说没有,原来是默认有效期一年。

下午刚装完10台虚拟机,bingo,可是再装10台就over了,说是

1error: server verification (of your certificate or IP address) failed

不解,为什么会突然间全部连接不上?!

后来一遍又一遍的整,把libvirt卸载了,

1[root@kvm134002.sqa.cm4 ~]# sudo yum remove libvirt-0.8.7-23tb.el6.x86_64 \
1libvirt-client-0.8.7-23tb.el6.x86_64 libvirt-debuginfo-0.8.7-23tb.el6.x86_64
1libvirt-python-0.8.7-23tb.el6.x86_64 libvirt-devel-0.8.7-23tb.el6.x86_64
01Loaded plugins: branch, product-id, refresh-packagekit, subscription-manager
02Updating Red Hat repositories.
03Setting up Remove Process
04Resolving Dependencies
05--> Running transaction check
06---> Package libvirt.x86_64 0:0.8.7-23tb.el6 will be erased
07---> Package libvirt-client.x86_64 0:0.8.7-23tb.el6 will be erased
08---> Package libvirt-debuginfo.x86_64 0:0.8.7-23tb.el6 will be erased
09---> Package libvirt-devel.x86_64 0:0.8.7-23tb.el6 will be erased
10---> Package libvirt-python.x86_64 0:0.8.7-23tb.el6 will be erased
11--> Finished Dependency Resolution
12Removed:
13 libvirt.x86_64 0:0.8.7-23tb.el6 libvirt-client.x86_64 0:0.8.7-23tb.el6 libvirt-debuginfo.x86_64 0:0.8.7-23tb.el6
14 libvirt-devel.x86_64 0:0.8.7-23tb.el6 libvirt-python.x86_64 0:0.8.7-23tb.el6

接着又重新安装,

1root@kvm134002.sqa.cm4 x86_64]# rpm -ivh *
2Preparing... ########################################### [100%]
3 1:libvirt-client ########################################### [ 20%]
4 2:libvirt ########################################### [ 40%]
5 3:libvirt-devel ########################################### [ 60%]
6 4:libvirt-python ########################################### [ 80%]
7 5:libvirt-debuginfo ########################################### [100%]

就连conf文件我都是重新改的,可是还是那个问题,炯。 后来没办法,重搞就彻底点,连证书文件都重做一遍,

突然发现可以。再一联想,去年同事做这个vmms开发的时候,差不多就是这个时候,那看来真的是过期了,一年期啊。

太万恶了啊,干嘛要过期呢,还要TSL连接,唉。还是现在正在开发中的vmms靠谱,哇卡卡。

顺便把生成ca_file的命令记录下:


1lingjiao.lc@opstest097104 ~/ca_file $ cat server.info
2organization = www.taobao.com
3cn = opstest097104.sqa.cm4
4tls_www_server
5encryption_key
6signing_key


1lingjiao.lc@opstest097104 ~/ca_file $ cat client.info
2country = China
3state = Hangzhou
4locality = Hangzhou
5organization = www.taobao.com
6cn = opstest097104.sqa.cm4
7tls_www_client
8encryption_key
9signing_key


1lingjiao.lc@opstest097104 ~/ca_file $ cat ca.info
2cn = www.taobao.com
3ca
4cert_signing_key

生成cacert.pem,生成后,根据libvirt配置文件里的ca_file路径存放,server和client都需要此文件。


1certtool --generate-self-signed --load-privkey cakey.pem --template ca.info --outfile cacert.pem

生成一对私有文件:


1certtool --generate-privkey > cakey.pem

1certtool --generate-privkey > serverkey.pem

1certtool --generate-privkey > clientkey.pem

再用刚才的公钥和私钥生成证书:


1certtool --generate-certificate --load-privkey serverkey.pem --load-ca-certificate cacert.pem \
2--load-ca-privkey cakey.pem --template server.info --outfile servercert.pem


1certtool --generate-certificate --load-privkey clientkey.pem --load-ca-certificate cacert.pem \
2--load-ca-privkey cakey.pem --template client.info --outfile clientcert.pem

将servercert.pem放到server的/etc/pki/libvirt/目录,将serverkey.pem放到server的/etc/pki/libvirt/private目录。

将clientcert.pem放到client的/etc/pki/libvirt/目录,将clientkey.pem放在client的/etc/pki/libvirt/private目录。

ok,这里重启libvirt,就可以正常连接了。

<think>好的,用户遇到了libvirt启动报错的问题,需要帮助解决。首先,我需要根据用户提供的引用资料和常见解决方案来整理步骤。用户提到了几个引用,其中引用[1]是关于库文件找不到的问题,建议创建符号链接。引用[2]提到安装虚拟化组件,比如qemu-kvm和libvirt相关的包。引用[3]涉及修改虚拟机XML配置,可能和网桥设置有关。引用[4]和[5]则涉及版本检查和配置文件的调整。 首先,我应该从基础开始检查。常见的问题可能是libvirt服务未启动或者依赖的库缺失。用户提到的libvirt.so.0找不到,创建符号链接可能有效。然后需要确保所有必要的软件包已经安装,比如libvirt-daemon-system、qemu-kvm等,这可以解决依赖问题。接下来,检查libvirtd服务的状态和日志,查看具体的错误信息。如果服务启动失败,日志会提供更详细的线索。 另外,权限问题也可能导致报错,比如用户没有加入libvirt组,或者访问权限不足。需要确保用户属于kvm和libvirt组,并重新加载udev规则。如果问题与虚拟化支持有关,可能需要检查CPU是否支持虚拟化,并在BIOS中启用。对于配置文件错误,如引用[5]中的情况,检查/etc/libvirt/qemu.conf等配置文件是否有错误,并进行必要的修改。 还有可能涉及到防火墙或SELinux的阻止,需要暂时关闭或调整策略。如果问题依旧存在,可能需要升级软件包到最新版本,或者查看官方文档和社区讨论。用户提供的引用中,修改虚拟机XML文件也可能解决特定问题,比如网桥配置错误。因此,整理步骤需要覆盖库文件、安装依赖、服务状态、权限、配置检查和虚拟化支持等多个方面,确保用户能逐步排查问题。</think>### Libvirt启动报错解决方案 #### 1. 检查库文件路径(符号链接修复) 若报错提示类似`libvirt.so: cannot open shared object file`,需建立正确的符号链接: ```bash sudo ln -s /usr/lib/libvirt.so.0 /usr/lib/libvirt.so # 根据实际路径调整 ``` 此操作可修复动态库缺失问题[^1]。 #### 2. 安装必要依赖组件 确保已安装虚拟化核心组件: ```bash sudo apt update sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager ``` 安装后需重启服务: ```bash sudo systemctl restart libvirtd ``` #### 3. 验证服务状态与日志 检查服务是否正常启动: ```bash sudo systemctl status libvirtd # 查看运行状态 journalctl -u libvirtd -n 50 # 查看最近50条日志 ``` 若状态异常,需根据日志中的具体错误代码(如权限问题、配置文件错误)针对性处理。 #### 4. 权限配置调整 * **用户组权限**:将当前用户加入`libvirt`和`kvm`组: ```bash sudo usermod -aG libvirt,kvm $USER newgrp libvirt # 立即生效组权限 ``` * **配置文件权限**:检查`/etc/libvirt/`目录权限是否为`root:root 755` #### 5. 检查虚拟化支持 确认CPU支持虚拟化: ```bash egrep -c '(vmx|svm)' /proc/cpuinfo # 输出大于0表示支持 ``` 若未启用需在BIOS中开启虚拟化功能[^4]。 #### 6. 修复配置文件错误 * **检查`/etc/libvirt/qemu.conf`**:确保无语法错误 * **虚拟机XML配置**:若修改过网桥设置,需按规范配置: ```xml <interface type='bridge'> <source bridge='ovsbr0'/> <virtualport type='openvswitch'/> <!-- 关键字段[^3] --> </interface> ``` #### 7. 特殊场景处理 * **OpenStack集成问题**:若与Nova服务相关,需检查`/etc/nova/nova.conf`中`compute_driver`是否配置为`libvirt.LibvirtDriver`并重启服务[^5] * **SELinux/防火墙干扰**:临时禁用排查: ```bash sudo setenforce 0 # 关闭SELinux sudo systemctl stop firewalld # 停止防火墙 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值