You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

OpenStack Antelope三节点测试环境使用自签名证书创建实例时触发Nova API SSL错误

OpenStack Antelope三节点测试环境使用自签名证书创建实例时触发Nova API SSL错误

看起来你遇到的是自签名证书导致Nova内部服务间通信SSL验证失败的问题——虽然你在CLI命令里加了--insecure,也在配置里设了insecure = true,但Nova API在和其他服务(比如Neutron、Keystone、Placement)交互时,可能没正确跳过SSL验证,这才触发了这个500错误。我帮你梳理下排查和解决的步骤:

1. 确保所有Nova相关配置都正确设置了SSL跳过验证

你需要检查控制节点和计算节点的nova.conf,确保所有涉及服务调用的配置段都加上insecure = true

配置示例片段:

# Keystone认证相关
[keystone_authtoken]
auth_url = https://<你的控制器IP>:5000/v3
auth_type = password
username = nova
password = <你的nova服务密码>
user_domain_name = Default
project_domain_name = Default
project_name = service
insecure = true  # 关键参数:跳过SSL证书验证

# Neutron服务通信相关
[neutron]
url = https://<你的控制器IP>:9696
auth_url = https://<你的控制器IP>:5000/v3
auth_type = password
username = neutron
password = <你的neutron服务密码>
project_name = service
project_domain_name = Default
user_domain_name = Default
insecure = true  # 关键参数:跳过SSL证书验证

# Placement服务通信相关
[placement]
region_name = RegionOne
auth_url = https://<你的控制器IP>:5000/v3
auth_type = password
username = placement
password = <你的placement服务密码>
project_name = service
project_domain_name = Default
user_domain_name = Default
insecure = true  # 关键参数:跳过SSL证书验证

修改完成后,重启Nova相关服务:

  • 控制节点:systemctl restart nova-api nova-scheduler nova-conductor
  • 计算节点:systemctl restart nova-compute

2. 检查Neutron服务的SSL验证配置

创建实例时Nova会调用Neutron API创建网络端口,所以控制节点的neutron.conf也要确保Keystone认证部分设置了insecure = true

[keystone_authtoken]
auth_url = https://<你的控制器IP>:5000/v3
auth_type = password
username = neutron
password = <你的neutron服务密码>
user_domain_name = Default
project_domain_name = Default
project_name = service
insecure = true

重启Neutron服务:systemctl restart neutron-server

3. 验证服务Endpoint的一致性

用命令检查所有服务的Endpoint是否为HTTPS格式,且和配置文件里的URL一致:

openstack --insecure endpoint list

如果某个服务的Endpoint是HTTP,但你在配置里写了HTTPS,或者反过来,都会导致通信失败,需要确保两者匹配。

4. 可选:让系统信任自签名CA证书(替代跳过验证)

如果你不想用insecure = true(生产环境不建议用),可以把自签名证书的CA根证书复制到所有节点的/usr/local/share/ca-certificates/目录,然后运行:

update-ca-certificates

之后在各个服务的配置文件里,把insecure = true替换为cafile = /path/to/你的CA证书.crt,这样服务之间通信就会信任这个自签名证书了。

5. 查看更详细的日志定位具体问题

如果上面的步骤都没解决,建议查看Nova API的完整日志(不要只看最后100行),找更具体的SSL错误细节:

  • 比如可能是主机名不匹配SSLError: hostname 'xxx.xxx.xxx.xxx' doesn't match 'cert-hostname',这种情况需要修改证书的CN/SAN字段包含控制器的IP/主机名,或者在配置里额外加verify_hostname = false
  • 或者是证书未被信任,这时候回到步骤4配置CA信任即可。

完成上述操作后,再重新运行你的实例创建命令试试:

netID=$(openstack --insecure network list | grep private | awk '{ print $2 }')
openstack --insecure server create --flavor m1.medium --image Ubuntu2204 --security-group secgroup01 --nic net-id=$netID --key-name mykey Ubuntu-2204

备注:内容来源于stack exchange,提问作者aclaverie

火山引擎 最新活动