如何将Routinator连接到自托管Krill测试床服务器?证书问题排查
解决Routinator连接Krill时RRDP证书验证错误(UnknownIssuer)
问题核心
Routinator通过RRDP同步Krill的ROA数据时,触发invalid peer certificate: UnknownIssuer错误,导致RRDP同步失败、只能回退到rsync,最终Krill发布的自定义ROA未被正常验证。
排查与解决步骤
1. 验证系统证书信任池是否生效
在主机B(Routinator)上执行以下命令,检查Krill的HTTPS证书是否被系统信任:
openssl s_client -connect krill.com:3000
- 若输出中
Verify return code为19 (self signed certificate in certificate chain),说明CA证书未正确加入系统信任池。 - 确认CA证书为PEM格式,已追加至
/etc/ssl/certs/ca-certificates.crt,重新执行更新命令:
确保输出显示update-ca-certificates --fresh1 added或类似成功提示。
2. 让Routinator直接指定信任的CA证书
系统证书池可能未被Routinator识别,可在配置文件中直接绑定Krill的CA根证书:
打开Routinator配置文件(如/etc/routinator/routinator.conf),添加以下配置:
# 指定信任的RRDP服务器CA证书 rrdp-trust-anchor = [ "/var/routinator/tals/krill-ca.cer" ]
将路径替换为实际存放Krill CA证书的位置,随后重启Routinator服务:
systemctl restart routinator
3. 检查Krill服务器证书的有效性
在主机A(Krill)上,验证服务器证书是否包含正确的域名(SAN字段):
openssl x509 -in /var/krill/data/ssl/cer.pem -text -noout | grep -A 1 "Subject Alternative Name"
- 若输出中无
DNS:krill.com,说明证书缺少SAN字段,需重新生成:
替换# 生成证书签名请求(CSR) openssl req -new -key /var/krill/data/ssl/key.pem -out csr.pem -subj "/CN=krill.com" # 用自签名CA签发包含SAN的服务器证书 openssl x509 -req -in csr.pem -CA /path/to/your/ca.cer -CAkey /path/to/your/ca.key -CAcreateserial -out /var/krill/data/ssl/cer.pem -days 365 -extfile <(printf "subjectAltName=DNS:krill.com")/path/to/your/ca.cer和/path/to/your/ca.key为Krill的CA根证书与密钥路径,之后重启Krill服务:systemctl restart krill
4. 临时测试方案:关闭RRDP证书验证(仅测试环境)
若需快速验证功能,可临时关闭Routinator的RRDP证书验证(生产环境绝对禁止):
在Routinator配置文件中添加:
rrdp-no-verify = true
重启Routinator后即可跳过证书验证,但存在明文数据泄露风险。
验证结果
完成配置后,查看Routinator日志确认修复效果:
tail -f /var/routinator/logs/routinator.log
若日志中不再出现UnknownIssuer警告,且Krill的ROA统计显示verified数量大于0,则说明连接正常。
内容的提问来源于stack exchange,提问作者QY-Y
相关产品推荐
相关产品推荐

