You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Perl脚本连接OTRS创建工单时的证书验证失败问题

解决OTRS WebService调用证书验证失败(500 Can't connect to ... certificate verify failed)的问题

你已经尝试了几种常见的跳过验证的方法,但显然还有没覆盖到的关键点,我来帮你梳理几个更针对性的解决思路:

1. 显式指定证书路径给UserAgent

OTRS的LWP可能没正确读取你添加证书的cacert.pem文件,试试在初始化UserAgent时直接指定证书路径:

my $UA = LWP::UserAgent->new(
    ssl_opts => {
        SSL_ca_file => 'C:\otrs\Kernel\cpan-lib\Mozilla\CA\cacert.pem',
        verify_hostname => 0, # 先保留关闭状态,等证书生效后再开启验证
    }
);

另外要确认你添加的证书是标准PEM格式,每个证书的-----BEGIN CERTIFICATE-----和-----END CERTIFICATE-----标记要完整,没有多余空行或字符缺失。

2. 检查OTRS全局SSL配置

OTRS本身有系统级的WebService SSL配置,你可以在Kernel/Config.pm里添加以下配置,强制指定CA证书路径:

$Self->{WebService::SSL::CAFile} = 'C:\otrs\Kernel\cpan-lib\Mozilla\CA\cacert.pem';
$Self->{WebService::SSL::VerifyHostname} = 0; # 临时关闭用于测试

修改后记得重启OTRS服务,让配置生效。

3. 排查证书链完整性问题

有时候报错不是因为目标证书无效,而是缺少中间证书。你可以用浏览器访问OTRS的WebService URL,导出完整的证书链(包括根证书和所有中间证书),然后把这些证书全部合并到cacert.pem文件中,每个证书的首尾标记要完整保留。

4. 用独立脚本测试SSL连接

写个简单的Perl脚本单独测试SSL连接,排除OTRS业务代码的干扰:

use LWP::UserAgent;

$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;
my $ua = LWP::UserAgent->new;
my $response = $ua->get('https://你的OTRS WebService地址');

print $response->status_line . "\n";
print $response->content . "\n";

如果这个脚本能成功访问,那问题大概率出在OTRS的WebService参数配置或权限上;如果还是失败,就需要重点排查系统SSL库和证书文件本身的问题。

注意:生产环境不要长期关闭验证

所有跳过verify_hostname的操作都只适合测试环境排查问题,生产环境必须确保证书链完整、验证开启,否则会带来严重的安全风险。


内容的提问来源于stack exchange,提问作者Palak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:00:39