Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

IT技術 (Technology)

[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expiredエラーの原因と対処

投稿日:2023年8月26日 更新日:

 

<目次>

[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expiredエラーの原因と対処
 エラー概要
 原因
 対処
 (備考)どの証明書が更新されたか?の確認方法
 (補足)「`certifi`パッケージ」と「`certlm.msc`」の違い

[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expiredエラーの原因と対処

エラー概要

ERROR:slack_bolt.App:Failed to send a request to Slack API server: 
~中略~
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:997)

(図110)

目次にもどる

原因

証明書の検証に失敗していることを示しています。これは、以下のいずれかが原因になります。
・①通信先のサーバーの証明書が期限切れになっている
・②クライアント側の証明書ストア(Python用のルート証明書ストア)が更新されていない

(補足)
`certifi`パッケージをインストールした環境で、以下のコマンドを実行することで、現在の証明書ストアに含まれる証明書の一覧を表示することができます。
 
(図312)

対処

●クライアント側の証明書ストアを更新する
Python用のルート証明書ストアである`certifi`パッケージが更新されます(最新の証明書を取得)。これにより、Pythonアプリケーションで使用されるルート証明書が最新のものになります。
 
(コマンド)
> pip install --upgrade certifi

 

(図311)

(備考)どの証明書が更新されたか?の確認方法

●方法①

`certifi`パッケージのGitHubリポジトリのコミット履歴を確認することができます。以下のURLからリポジトリにアクセスし、コミット履歴を確認してください。
 

●方法②

`certifi`パッケージはMozillaのルート証明書ストアをもとにしていますので、最新の証明書情報はMozillaのリポジトリで確認することもできます。
https://github.com/mozilla-services/ca_certs_crlite
 

●方法③

また、`certifi`パッケージをインストールした環境で、以下のコマンドを実行することで、現在の証明書ストアに含まれる証明書の一覧を表示することができます。
 
(図312)

(補足)「`certifi`パッケージ」と「`certlm.msc`」の違い

混同しやすいですが、Python用のルート証明書ストア(`certifi`パッケージ)と、`certlm.msc`で見られるWindowsのクライアント側の証明書ストアは、別のものです。

(表)

Pythonのcertifiパッケージ Pythonアプリケーションで使用されるルート証明書ストアで、特にWindows以外の環境や、独自の証明書ストアを使用する場合に役立ちます。`certifi`は独立したパッケージとして管理されており、`pip`を使ってインストールやアップデートができます。
`certlm.msc`で見られるWindowsのクライアント側の証明書ストア Windowsシステム全体で使用される証明書ストアです。このストアは、Windowsのセキュリティ設定やアップデートによって管理されています。

ただし、Pythonアプリケーションでは、Windowsの証明書ストアを使用する代わりに`certifi`パッケージを利用することができます。これにより、Pythonアプリケーションの証明書検証を独自に管理することが可能になります。

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-IT技術 (Technology)
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

Interstage Application ServerにJavaのWebアプリ(Servlet)をデプロイする流れ

  <目次> (1) Interstage Application ServerにJavaのWebアプリ(Servlet)をデプロイする流れ  (1-1) STEP1:EARファイル/WAR …

no image

LangChainでConflueneceの内容を読み込む方法

  <目次> LangChainでConflueneceの内容を読み込む方法  やりたいこと  STEP0:前提条件  STEP1:事前準備  STEP2:Conflueneceページの読み …

排他制御における楽観ロックと悲観ロックについて

<目次> (1) 排他制御における楽観ロックと悲観ロックについて  (1-1) 楽観的排他制御   ●概要・仕組み   ●イメージ図   ●楽観的排他制御で起こり得る問題  (1-2) 悲観的排他制御 …

no image

エクセルで重複なくランダムにデータを選択する方法

<目次> エクセルで重複なくランダムにデータを選択する方法  実現したいこと  実現方法  関数の仕組み  例の紹介  参考記事  筆者のぼやき エクセルで重複なくランダムにデータを選択する方法 実現 …

LangChainのChainやAgentとは?概要やサンプルプログラムをご紹介

  <目次> (1) LangChainのChainやAgentとは?概要やサンプルプログラムをご紹介  (1-1) やりたいこと  (1-2) Chain概要  (1-3) Chainサン …

  • English (United States)
  • 日本語
Top