OpenSSLとcurlをソースからビルドしてインストールした話

OpenSSLとcurlをソースからビルドしてインストールした話

「DomainPeople」のAPIのテストでcurlを使う機会がありローカル環境とプロダクション環境での動作が異なっていた。

Macで開発した時は問題なく動作したがプロダクション環境では動作しなかった原因を調べてみたところ

curl https://waverider.domainpeople.com:2000 -x http://dev1.almajiro.intranet:4649 -s -v --tlsv1.0 -3

Rebuilt URL to: https://waverider.domainpeople.com:2000/
Trying 192.168.240.198…
TCP_NODELAY set
Connected to (nil) (192.168.240.198) port 4649 (#0)
Establish HTTP proxy tunnel to waverider.domainpeople.com:2000
CONNECT waverider.domainpeople.com:2000 HTTP/1.1
Host: waverider.domainpeople.com:2000
User-Agent: curl/7.52.1
Proxy-Connection: Keep-Alive
< HTTP/1.1 200 Connection established
<
Proxy replied OK to CONNECT request
OpenSSL was built without SSLv3 support
Curl_http_done: called premature == 0
Closing connection 0

「OpenSSL was built without SSLv3 support」と書かれているがこれ以外にもたくさんのエラーが出てくる。

DomainPeopleのAPIを使う際に、様々なバージョンのOpenSSLを試したが「1.0.1」でのみ動作を確認できた。

OpenSSLのv1.0.1をインストール後、curlをインストールする。

OpenSSLのインストール

wget https://www.openssl.org/source/openssl-1.1.1b.tar.gz
tar xvzf openssl-1.1.1b.tar.gz
cd openssl-1.1.1b/
./config --prefix=/usr/local/openssl/1.0.1 --openssldir=/usr/local/openssl/1.0.1

Curlのインストール

これをインストールした時点での最新版は、7.64.0なので適当にダウンロードしておく

wget https://curl.haxx.se/download/curl-7.64.0.tar.gz
tar xvzf curl-7.64.0.tar.gz
cd curl-7.64.0
./configure --prefix=/usr/local --with-ssl=/usr/local/openssl/1.0.1/ --enable-libcurl-option

インストール後、curlを実行してエラーが発生した場合はOpenSSLのモジュールのパスが通っていない場合があるので、ld.so.conf辺りを弄ってパスを通した後ldconfigを実行すると上手くいくかもしれない。

/usr/local/bin/curl --version

curl 7.64.0 (x86_64-pc-linux-gnu) libcurl/7.64.0 OpenSSL/1.0.1 zlib/1.2.8
Release-Date: 2019-02-06
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP UnixSockets HTTPS-proxy

Otherカテゴリの最新記事