Linux

SSL 證書在命令行中工作正常,但在腳本中失敗

  • May 25, 2010

我正在嘗試為我的持續集成伺服器設置電子郵件通知。我有一個腳本,它在建構工作時使用 nail 發送電子郵件:

#!/bin/bash
echo "Build Worked!" | nail -A myisp -s 'Build Success' my_email@gmail.com

當我從命令行執行它時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/emailAddress=premium-server@thawte.com
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.

我一定搞砸了一些配置,有什麼想法嗎?

某些東西從 shell 執行但不會從cronor initordaemon或其他環境執行的問題通常是由環境差異引起的。

  • 使用執行檔和數據文件的絕對路徑
  • 明確設置您的PATH變數以確保它包含您需要的內容
  • 顯式設置您的流程需要的其他環境變數

由於看起來像是nail在抱怨某些庫,因此環境變數很可能在一種環境中指向一種方式,而在另一種環境中指向另一種方式(或根本沒有)。

我不熟悉 BitNami,但在我的系統上,這些庫位於/lib/usr/lib/lib/i586以及類似)中。

引用自:https://serverfault.com/questions/131268