【RHEL 備忘録】curlで「(60) Peer certificate cannot be authenticated with known CA certificates」が出たときの対処方法

Linux
スポンサーリンク

 

本日はLinuxの備忘録記事です。

ちょっとトラブったので忘れないように備忘録として残しておきます。

まあ、おんなじトラブルが発生しても備忘録したことすら忘れてまたあたふたするんですけどね

 

スポンサーリンク

経緯

弊社で動作しているバッチサーバにて、なぜかいきなりエラーが出力されるようになりました。

調査を進めると、どうやらhttps通信に失敗している模様。

試しにcurlで検証してみると、以下のようなエラーメッセージが出力されました。

$ curl -I https://hogehoge.sample.com
 curl: (60) Peer certificate cannot be authenticated with known CA certificates
 More details here: http://curl.haxx.se/docs/sslcerts.html
 curl performs SSL certificate verification by default, using a "bundle"
  of Certificate Authority (CA) public keys (CA certs). If the default
  bundle file isn't adequate, you can specify an alternate file
  using the --cacert option.
 If this HTTPS server uses a certificate signed by a CA represented in
  the bundle, the certificate verification probably failed due to a
  problem with the certificate (it might be expired, or the name might
  not match the domain name in the URL).
 If you'd like to turn off curl's verification of the certificate, use
  the -k (or --insecure) option.

なんかCA証明書の認証ができない?とか言われている模様。

調べてみると、「root証明書が古いと出るよ」とか「日付がサーバとクライアントでずれてるときに出るよ」とか、「opensslのバージョンが古いと出るよ」とか書いてあったのですが、後半2つは違ったので、root証明書が古いんでは?とあたりをつけて解決方法を模索しました。

 

環境

$ cat /etc/redhat-release
 Red Hat Enterprise Linux Server release 6.0 (Santiago)

古すぎ問題

まあ、こういうサーバって中々更改できるもんじゃないよなあ・・・

 

解決手順

最新のroot証明書をダウンロードする

$ wget http://curl.haxx.se/ca/cacert.pem

適当なところに保存しておきましょう。

 

証明書を置き換え

置き換える前に現在の証明書をバックアップしておきます。

切り戻し手段を用意しておくことは重要。

# cp /etc/pki/tls/certs/ca-bundle.crt /etc/pki/tls/certs/ca-bundle.crt_bk

RHEL系のサーバは /etc/pki/tls/certs にroot証明書が配置されております。

ので、ここの証明書ファイルを入れ替えてあげればOKです。

# cp -p cacert.pem /etc/pki/tls/certs/ca-bundle.crt

これで完了。

 

確認

$ curl -I https://hogehoge.sample.com
 HTTP/1.1 302 Found

無事通信できるようになりました。

 

まとめ

  • CA証明書エラーが出たらroot証明書を疑う
  • 違ったらサーバとクライアントの日付をチェック
  • それでも直らなければopensslをupdateする

たぶんCentOS系でも同じ手段で解決できるはずです。

証明書の保存ディレクトリとかは違うと思いますが・・・

 

コメント

タイトルとURLをコピーしました