古いUbuntuサーバでhttpsアクセスができない
証明書でしょうね。
それしかないんで、UbuntuサーバのOSアップデートすればいいんですけど、
まあそんなぽいぽい業務で動かしているサーバのOSアップデートしたら何が起こるかわからない
(最悪サーバが止まって動かなくなる)わけで……。
解決していきたいなと思いますがのチャレンジ。解決しないかも。
まず、Perlのプログラムで実行した場合のエラー内容。
LWP::Protocol::https::Socket: SSL connect attempt failed with unknown errorerror:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version at /usr/share/perl5/LWP/Protocol/http.pm line 51.
ちなみに、解決方法として「Crypt::SSLeay」「IO::Socket::SSL」「LWP::Protocol::https」を更新するorインストールする方法。
apt-getなら下記のように。
apt-get install libcrypt-ssleay-perl apt-get install libio-socket-ssl-perl apt-get install liblwp-protocol-https-perl
全部当然のように入っているのでダメでした。
OpenSSLも更新してみたけど最新ですー、って出るのでだめでした。
apt-get update、upgradeしてもだめでした。
次に、wgetしてみる。
user@Server:/home/user $ wget https://***.cybozu.com/k/v1/records/cursor.json
–2022-03-31 13:59:04– https://***.cybozu.com/k/v1/records/cursor.json
Resolving ***.cybozu.com… xxx.xx.xx.xx, xxx.xx.xx.yy
Connecting to ***.cybozu.com|xxx.xx.xx.xx|:443… connected.
OpenSSL: error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
Unable to establish SSL connection.
同じエラーですねぇ。
ちなみにcrulでやってみたもの。
user@Server:/home/user $ curl https://***.cybozu.com/k/v1/records/cursor.json
curl: (35) error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
まあそりゃそうよねって感じですが。
ちなみに原因としては、各種サイトが、TLS1.2対応になっていることです。
POODLEという暗号化を解除されてしまう脆弱性があり、SSL3.0は早々に廃止されたけど、
TLS1.0とTLS1.1もこれ使えちゃうってことで、TLS1.0と1.1も廃止の動きになったのが2018年で、
2022年の今、ほとんどTLS1.2以外非対応でしょうといっても過言ではない状態。
OpenSSLのバージョン1.0.1未満の場合、TLS1.2が使えないようなので、OpenSSLのバージョンを上げていきたいと思います。
サイトを参照しつつ、/usr/local/sslにOpenssl 1.1.1nをインストールし、/usr/bin/opensslを
/usr/loca/ssl/bin/opensslにシンボリックリンクで置き換え。
これで出来たらいいな、っておもったけどやっぱダメ。
CPAN経由でNet::SSLeayを最新インストールしたところリポジトリが古くてダウンロード失敗するので、新しいftpサイトを追加。
ついでにCPAN自体も更新。make install OK。
cpan[3]> o conf urllist urllist 0 [ftp://ftp.u-aizu.ac.jp/pub/CPAN/] 1 [ftp://mirror.yongbok.net/CPAN/] 2 [ftp://cpan.cdpa.nsysu.edu.tw/Unix/Lang/CPAN/] 3 [ftp://cpan.cs.pu.edu.tw/pub/CPAN/] 4 [ftp://cpan.sarang.net/CPAN/] Type 'o conf' to view all configuration items cpan[4]> o conf urllist unshift ftp://ftp.riken.jp/lang/CPAN/ Please use 'o conf commit' to make the config permanent! cpan[5]> o conf commit commit: wrote '/etc/perl/CPAN/Config.pm' cpan[6]> o conf urllist urllist 0 [ftp://ftp.riken.jp/lang/CPAN/] 1 [ftp://ftp.u-aizu.ac.jp/pub/CPAN/] 2 [ftp://mirror.yongbok.net/CPAN/] 3 [ftp://cpan.cdpa.nsysu.edu.tw/Unix/Lang/CPAN/] 4 [ftp://cpan.cs.pu.edu.tw/pub/CPAN/] 5 [ftp://cpan.sarang.net/CPAN/] Type 'o conf' to view all configuration items cpan[7]> install CPAN cpan[8]> install Net::SSLeay
Net::SSLeayもmake install OK。
このあとやってみたけどやっぱりだめー。
2022年3月31日にメモがてら作って放置されてたので公開でおいておきます。
もう何が理由でこれやってたか、覚えていない……。
【参考サイト】
Apache での TLS1.0 と TLS1.1 の無効化と確認方法メモ
https://blog.apar.jp/web/10025/
Ubuntu に最新の OpenSSL を入れる
https://text.baldanders.info/remark/2020/06/installing-openssl-in-ubuntu/
OpenSSL公式
https://www.openssl.org/source/
さすがに無いと思うが、古いLinuxを使っててTLS1.2に対応できない対処方法
https://qiita.com/TetsujiOkuno/items/33062404da8a88be18f3
31 CentOS5 でTLS1.2
http://dokuwiki.fl8.jp/01_linux/02_www/31_centos5_tls
Fixing Perl script using LWP unable to connect to TLS 1.2 URL; failing with sslv3 alert handshake failure
https://www.claudiokuenzler.com/blog/1017/perl-lwp-unable-connect-tls-1.2-url-fail-sslv3-alert-handshake-failure