Pythonでスクリーンショットを撮るコードの動作確認をしていた際に、コンソールに以下エラーが出力されました。
ERROR:cert_issuer_source_aia.cc(34)] Error parsing cert retrieved from AIA (as DER):
ERROR: Couldn't read tbsCertificate as SEQUENCE
ERROR: Failed parsing Certificate
処理自体はうまくいっていました。こんなエラー、初めて見ました。
今回は、「Error parsing cert retrieved from AIA (as DER)」という謎のエラーについて、備忘録的にまとめておきます。
実行したコード
実行したコードは以下のとおりです。
from selenium import webdriver
import chromedriver_binary
import time
URL = 'https://prtn-life.com/blog/gpt4-api'
driver = webdriver.Chrome()
driver.get(URL)
time.sleep(3)
driver.save_screenshot('C:\\chasoTest\\screenshots.png')
driver.close()
Seleniumを利用して、Google Chromeでスクリーンショットを撮るという内容です。
原因と思われること
まず最初に浮かんだのは、SeleniumでChromeDriverとChromeのバージョンが一致していないということです。
コードの初回実行時に、両者のバージョンが違うよというエラーが出たので、以下コマンドでchromedriverをインストールしなおしたあと、
pip install chromedriver-binary
ソースコードに以下を追加しました。
import chromedriver_binary
これで実行できるようにはなりましたが、上記コードはchromedriver_binaryパッケージにより、Google Chromeと互換性のあるバージョンのchromedriverを提供しているだけで、実際のバージョンは異なっています。これが原因かなと思ったので、両者のバージョンを合わせて実行し直してみました。すると、証明書のエラーは発生しませんでした。
おそらく、chromedriverとSeleniumのバージョンが完全に一致していないとこのエラーが発生するのではないかと思います。
結論:エラーが出てても処理がうまくいっていればOK
この証明書エラーですが、エラーが出ていても処理がうまくいっていれば問題ありません。
なぜエラーが出ていても大丈夫なのか?
このエラーは、スクリーンショットを撮るというプロセス自体には直接影響を与えないためです。
Error parsing cert retrieved from AIA (as DER)
ふだん何気なく見ているサイトのURLを見ると、「https」となっているかと思います。末尾のsは「secure(安全)」のsで、暗号化通信されているという証明です。サイトにアクセスする際に、サーバー証明書の有効性を判定して、OKならサイトを表示、ダメならサイトを表示しないようにしています。
では、この証明書が有効かどうかをどうやって判定しているかというと、これこそが「AIA」の役割なのです。
AIAってなに
「AIA」は、「Authority Information Access(機関情報アクセス)」の略です。暗号化通信(SSL)に使われる、サーバー証明書が有効かどうかを判断する材料となる情報です。
今回のエラーは、「Webサイトを見に行くときにサーバー証明書の解析に失敗したよ」というエラーです。サーバー証明書を用いて安全なサイトかどうか判断しているので、解析に失敗したらWebサイトを閲覧させないようにするのが適切だと思いますよね。
しかし、テストや動作検証時など、一時的にエラーを回避したい場合もあるかと思います。Seleniumでは、このような際に証明書エラーを回避できるようになっています(あくまでUIテストツール的なものなのでこのへんは寛容です)。
まとめ
今回は、「Error parsing cert retrieved from AIA (as DER)」エラーの概要と対処法について解説しました。
このエラー自体は気にするものではありませんが、ChromeDriverはしばらく使っていないとブラウザのバージョンと一致せず動かないのが困りますね。どうやら、バージョンを自動で一致させる方法があるようなので、次回記事ではChromeDriverのバージョン確認やアップデート手順などについてまとめたいと思います。
コメント