F1大好きな、インチキ技術者の日記

F1大好きなインチキ技術者が情報を発信して、自分を変えようとしている日記です

手動でCentOS7のcurlをバージョンアップしたら証明書エラーになったので対応した

はじめに

CentOS 7を使っているのですが、curlのバージョンが古いため、 curl: option --data-raw: is unknown なんていわれました。 というわけでcurlをバージョンアップすることにしました。

ダウンロード

公式サイトからリンクがある、GitHubリポジトリから実行ファイルをダウンロードしました。 curl.se

RHEL7用のrpmもあったのですが、実行ファイルだけ置き換えられれば、簡単じゃん。と思っていました。 github.com

インストール

インストールは簡単です。 念のため /usr/bin/curl をバックアップし、そこに新しいバージョンをコピーしました。

  • コピー前
$ curl --version
curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.53.1 zlib/1.2.7 libidn/1.28 libssh2/1.8.0
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz unix-sockets
  • コピー後
$ curl -V
curl 7.76.0 (x86_64-pc-linux-musl) libcurl/7.76.0 OpenSSL/1.1.1k zlib/1.2.11 libssh2/1.9.0 nghttp2/1.41.0
Release-Date: 2021-03-31
Protocols: dict file ftp ftps gopher gophers http https imap imaps mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS HTTP2 HTTPS-proxy IPv6 Largefile libz NTLM NTLM_WB SSL TLS-SRP UnixSockets

使ってみたらエラーになった

まずは動作確認をするために、ブログにアクセスしたところ証明書関係のエラーになりました。

$ curl https://hanamiche.hatenablog.jp/
curl: (77) error setting certificate verify locations:  CAfile: /etc/ssl/certs/ca-certificates.crt CApath: none

少し調べると同じような問題の解決方法が見つかりました。 証明書は各ディストリビューションごとに異なっています、見落としていました。 github.com

シンボリックリンクを作り対応

rpmを使うことも頭をよぎりましたが、せっかくなのでシンボリックリンクで対応することにしました。

$ sudo ln -s /etc/ssl/certs/ca-bundle.crt /etc/ssl/certs/ca-certificates.crt

実行できた

証明書の準備が整ったところで、再度実行したら問題なく実行できました! 問題の発端である --data-raw オプションも問題なく動作しました。

$ curl https://hanamiche.hatenablog.jp/ --data-raw 'test=1'
<!DOCTYPE html>
<html
  lang="ja"

data-admin-domain="//blog.hatena.ne.jp"
data-admin-origin="https://blog.hatena.ne.jp"
data-author="hanamiche"
data-avail-langs="ja en"
data-blog="hanamiche.hatenablog.jp"
data-blog-host="hanamiche.hatenablog.jp"
data-blog-is-public="1"
data-blog-name="F1大好きな、インチキ技術者の日記"
プライバシーポリシー・問合せ