certbotの更新がエラーになってて、エラーアラートが出て、調べたらOCSPが参照できてなかった。
LetsEncryptのOCSPがブロックされる
調べてみると、他の方でも同様のエラーが発生しており。r3.o.lencr.org
の名前解決やr3.o.lencr.org
への接続がブロックされることがある模様。
- https://community.letsencrypt.org/t/r3-o-lencr-org-is-seen-as-malware/153205
- https://letsencrypt.org/docs/lencr.org/
LetsEncryptでも、Why is my computer fetching this data? Is it malicious?
(これはマルウェアをダウンロードしているのですか?)という質問に対して「決してそんなことはない」と掲載している。
certbotのエラー
r3.o.lencr.org
に接続しようとしてエラーになっていた。r3.o.lencr.orgはOCSPを提供するアドレス。
Traceback (most recent call last): File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 699, in urlopen httplib_response = self._make_request( File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 394, in _make_request conn.request(method, url, **httplib_request_kw) File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 234, in request super(HTTPConnection, self).request(method, url, body=body, headers=headers) File "/usr/lib/python3.9/http/client.py", line 1255, in request self._send_request(method, url, body, headers, encode_chunked) File "/usr/lib/python3.9/http/client.py", line 1301, in _send_request self.endheaders(body, encode_chunked=encode_chunked) File "/usr/lib/python3.9/http/client.py", line 1250, in endheaders self._send_output(message_body, encode_chunked=encode_chunked) File "/usr/lib/python3.9/http/client.py", line 1010, in _send_output self.send(msg) File "/usr/lib/python3.9/http/client.py", line 950, in send self.connect() File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 200, in connect conn = self._new_conn() File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 181, in _new_conn raise NewConnectionError( urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x7f3b524a2cd0>: Failed to establish a new connection: [Errno -2] Name or service not known During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/requests/adapters.py", line 439, in send resp = conn.urlopen( File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 755, in urlopen retries = retries.increment( File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 574, in increment raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='r3.o.lencr.org', port=80): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f3b524a2cd0>: Failed to establish a new connection: [Errno -2] Name or service not known'))
なぜブロックされるのか。
これは、個人的な予想だが、「マルウェアがLEの証明書を使って暗号化通信」をしていたために、r3.o.lencr.org
のOCSP問合わせがマルウェア由来通信として認知され、どこかのフィルタに登録されてしまう。さらに、それがコピーされ、またコピーされる。そして今にいたり、r3.o.lencr.org
がマルウェア配布URLリストに含まれてしまったのだろう。気づいたときには手遅れで、lencr.orgはマルウェア配布URL、またはC&C(コントロール and コマンド)サーバーとして認知されてしまっているのだろう。と予想している。
LetsEncryptの証明書は「信用できない」などという、証明書事業者の間違った言説や解説サイト、これ後押ししているのかもしれない。
証明書が信用できる仕組みで運営されているのと、証明書の所有者が信用できないのは別の話なのにね。
280blocker のリストでも
我が家でも280blocker のリストにr3.o.lencr.org
が含まれてしまっていた(2023-05以降)。これによるDNSブロッキングが発動して、certbotがOCSPを取得できないというエラーが発生した。
マルウェア対策って。。
結局のところ、ほとんどの人がコピペなんですよね。X509失効リストのような重要なドメインですら、いちどマルウェア判定されるとこのようにコピペで思わぬ弊害を引き起こす。仕方ないこととはいえ、マルウェアがコピペで増殖するように、「間違ったマルウェア対策」もコピペで増殖するんですよね。