LoginSignup
2
1

More than 5 years have passed since last update.

fluentdのプラグインでcertificate verify failedエラーが発生した話

Last updated at Posted at 2015-05-30

環境

  • Amazon Linux AMI 2015.03 (HVM)
  • td-agent-2.2.0-0.x86_64
  • AWS-SDK(ruby)のv2を利用したfluentdのプラグイン

また、AmazonLinuxではS3へアクセスできるIAMロールの権限を付与してる。

問題

AWS-SDK(ruby)のv2を利用したfluentdのプラグイン
を利用したら以下のようなcertificate verify failedエラーが発生しました。

before_shutdown failed error="SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed"

調査

どうやらrubyで使うSSL証明書の所でエラーのようです。。。
証明書が存在しない場合もあるようなので、確認してみます。

$/opt/td-agent/embedded/bin/ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_FILE'
/opt/td-agent/embedded/ssl/cert.pem
$ll /opt/td-agent/embedded/ssl/cert.pem
lrwxrwxrwx 1 root root 43  5月 29 13:00 /opt/td-agent/embedded/ssl/cert.pem -> /opt/td-agent/embedded/ssl/certs/cacert.pem

問題なく、存在するようです。。

うーん、ということで確認のために以下のプログラムを作って確認します。(もし、IAMロールの設定をしていない場合、credential情報も付与すること)

s3.rb
require 'aws-sdk'
require 'pp'

s3 = Aws::S3::Client.new(region: 'ap-northeast-1')
resp = s3.list_objects(
  bucket: 'toshihirock-elb-test',
  prefix: 'AWSLogs/1111111/elasticloadbalancing/ap-northeast-1/2015/05/29/'
)
pp resp

このプログラムをAmazonLinuxでデフォルトでインストールされているrubyとflunetdで使っているrubyで実行。(事前にrubyのaws-sdkはインストール済み)

$ruby s3.rb
# ok
$/opt/td-agent/embedded/bin/ruby s3.rb
# error

ということでtd-agentのrubyを使うときに発生するようです。AmazonLinuxで使われているrubyの方は問題ないようなので、こちらのSSL証明書をコピーします。

$ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_FILE'
/etc/pki/tls/cert.pem
$cp /opt/td-agent/embedded/ssl/cert.pem /opt/td-agent/embedded/ssl/cert.pem.original
$cp /etc/pki/tls/cert.pem /opt/td-agent/embedded/ssl/cert.pem

この状態で先ほどのS3取得処理を実行。

$/opt/td-agent/embedded/bin/ruby s3.rb
# ok

問題解決しました!

このあと

自己解決したあとまさにドンピシャなブログを発見しました。先に見つけれていれば。。。

EC2上のログをtd-agent使ってCloudWatch Logsに投げようとしたらSSL認証エラーになった話

上記にも記載してありましたが、本問題はrubyのaws-sdk-v1では起きてなかったので、対象はaws-sdk-v2を使っているfluentdで発生すると思われます。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1