SSL 证书在命令行中运行良好,但在脚本中失败

SSL 证书在命令行中运行良好,但在脚本中失败

我正在尝试为我的持续集成服务器设置电子邮件通知。我有一个脚本,它在构建成功时使用 nail 发送电子邮件:

#!/bin/bash
echo "Build Worked!" | nail -A myisp -s 'Build Success' [email protected]

当我使用 命令行运行此命令时sh build-worked,它可以正常工作,并且我会收到电子邮件。但是,当我启动执行相同脚本的持续集成服务器时,出现以下错误:

nail: /opt/bitnami/common/lib/libssl.so.0.9.8: no version information available (required by nail)
nail: /opt/bitnami/common/lib/libcrypto.so.0.9.8: no version information available (required by nail)
Error with certificate at depth: 0
 issuer = /C=ZA/ST=Western Cape/L=Cape Town/O=Thawte Consulting cc/OU=Certification Services Division/CN=Thawte Premium Server CA/[email protected]
 subject = /C=US/ST=California/L=Mountain View/O=Google Inc/CN=smtp.gmail.com
 err 20: unable to get local issuer certificate
Continue (y/n)? could not initiate SSL/TLS connection: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
. . . message not sent.

我肯定弄乱了一些配置,有什么想法吗?

答案1

某些东西可以从 shell 运行,但无法从croninitdaemon其他环境运行的问题通常是由环境差异引起的。

  • 使用可执行文件和数据文件的绝对路径
  • 明确设置你的PATH变量以确保它包含你需要的内容
  • 明确设置您的流程所需的其他环境变量

由于它看起来像是nail在抱怨某些库,所以很可能环境变量在一个环境中指向一个方向,而在另一个环境中指向另一个方向(或者根本不指向)。

我不熟悉 BitNami,但在我的系统上,这些库位于/lib/usr/lib(和/lib/i586和类似)。

相关内容