SSL 無料証明書(Let's Encrypt) - トラブルシュート - ImportError: cannot import name 'x509'

クラウディア 
1. 概要
2. 待つのだ
3. 解消

1. 概要

 発生は、2022年10月12日。  前日に

py39-certbot-apache
 を更新したことが原因かしら。  毎日起動している「certbot」のスクリプトがこけておる。

Traceback (most recent call last):
  File "/usr/local/bin/certbot", line 33, in <module>
    sys.exit(load_entry_point('certbot==1.31.0', 'console_scripts', 'certbot')())
  File "/usr/local/bin/certbot", line 25, in importlib_load_entry_point
    return next(matches).load()
  File "/usr/local/lib/python3.9/importlib/metadata.py", line 86, in load
    module = import_module(match.group('module'))
  File "/usr/local/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 850, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/usr/local/lib/python3.9/site-packages/certbot/main.py", line 6, in <module>
    from certbot._internal import main as internal_main
  File "/usr/local/lib/python3.9/site-packages/certbot/_internal/main.py", line 19, in <module>
    import josepy as jose
  File "/usr/local/lib/python3.9/site-packages/josepy/__init__.py", line 40, in <module>
    from josepy.json_util import (
  File "/usr/local/lib/python3.9/site-packages/josepy/json_util.py", line 14, in <module>
    from OpenSSL import crypto
  File "/usr/local/lib/python3.9/site-packages/OpenSSL/__init__.py", line 8, in <module>
    from OpenSSL import crypto, SSL
  File "/usr/local/lib/python3.9/site-packages/OpenSSL/crypto.py", line 14, in <module>
    from cryptography import utils, x509
  File "/usr/local/lib/python3.9/site-packages/cryptography/x509/__init__.py", line 6, in <module>
    from cryptography.x509 import certificate_transparency
  File "/usr/local/lib/python3.9/site-packages/cryptography/x509/certificate_transparency.py", line 10, in <module>
    from cryptography.hazmat.bindings._rust import x509 as rust_x509
ImportError: cannot import name 'x509' from 'cryptography.hazmat.bindings._rust' (unknown location)

2. 待つのだ

 「FreeBSD」のメーリングリストに報告が上がっておりました。  下記のサイトに掲載されているようです。
ImportError: cannot import name 'x509' from 'cryptography.hazmat.bindings._rust」
「266937 – security/py-certbot broken in v 1.31.0,1
 どうも、いわゆる「既知の不具合」となっておるようです。  まいったな。  「pkg」でダウングレードすればいいのですが、依存関係で、「perl」あたりまでダウングレードされちゃいます。  幸いわたしの場合、使用している証明書が、まだ少し持ちそうなので、解消したバージョンがリリースされるまで、少し我慢してみます。

3. 解消

 さて、しばし待ちまして・・・2022年11月14日に下記の状況になりました。

$ pkg version -vl "<"
py39-acme-1.31.0,1                 <   needs updating (index has 1.32.0,1)
py39-certbot-1.31.0,1              <   needs updating (index has 1.32.0,1)
py39-certbot-apache-1.31.0         <   needs updating (index has 1.32.0)
 いつもの通り、「acme」からアップグレードします。

portupgrade -rR py39-acme
 依存関係で、他のモジュールもアップグレードされまして。  その後、「certbot」起動のスクリプトを動作させて、正常に動作するようになりました。  めでたし、めでたし。  わたしの場合、証明書が期限切れになる前に更新できましたので、幸いでした。
ハイスピードプラン