perl LWP でhttpsをGETすると 500 Can’t connect になる問題
県内自治体サイトのいくつかが perl LWPでGETすると 500 Can’t connect になる。5月末頃からこの現象が発生。原因と対処をメモしておく。
$ GET -s https://www.vill.yomitan.okinawa.jp
500 Can’t connect to www.vill.yomitan.okinawa.jp:443
Can’t connect to www.vill.yomitan.okinawa.jp:443
現象
県内複数自治体サイトで発生する。ブラウザではエラーにならない。curlでもエラーにならない。現状エラーになる自治体は下記の5つ。もっとあるかも。
- https://www.vill.yomitan.okinawa.jp/
- https://www.city.okinawa.okinawa.jp/
- https://www.city.nanjo.okinawa.jp/
- https://www.city.uruma.lg.jp/
- https://www.vill.nakagusuku.okinawa.jp/
同じく https を使っている那覇市や沖縄県庁サイトはエラーにならない。
原因
サーバー側に有効期限の切れたクロスルート証明書がインストールされている && perl LWPの処理がおかしい。
- SECTIGO(旧コモド)クロスルート証明書の提供終了(2020年5月30日)のご案内 – ValueSSL
- Knowledge: Sectigo AddTrust External CA Root Expiring May 30, 2020
Qualys SSL Labsでテストすると赤字で表示される。
ブラウザでチェックすると問題ない。
応急処置
プログラム側で証明書エラーを無視して対処…本当はこれではいかんのだが、とりあえず。
- [Perl] LWP::UserAgent で SSL 証明書のエラーへの対応 – Open MagicVox.net
- [perl] Web::Scraperでuseragentを変更するにはscraperオブジェクトのuser_agentメソッドにLWP::UserAgentオブジェクトを渡す。 – R. Ayanokouzi et al.
- perl – Can I force LWP::UserAgent to accept an expired SSL certificate? – Stack Overflow
追記(1)
下記のシステムも同様の問題があるようです。
- のりものNAVI(2020/12/16確認)
追記(2): MacOSで問題が出る場合
OSに含まれているlwp-requestが古い? (/usr/bin/lwp-request)
cpanm などで新しいのを入れて、そちらを参照するようにする。
ディスカッション
コメント一覧
まだ、コメントがありません