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

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

関連記事

Confluenceでページ毎の閲覧者数を表示する方法について

  <目次> (1) Confluenceでページ毎の閲覧者数を表示する方法について  (1-1) ページ毎の閲覧者数の表示や、アクセス解析を行う方法について  (1-2) 試しにFree …

SlackとBacklogの連携手順(まずは疎通としてBacklogのステータス更新でSlack通知する)

  <目次> (1) SlackとBacklogの連携手順(まずは疎通としてBacklogのステータス更新でSlack通知する)  (1-1) SlackとBacklogの連携概要  (1- …

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

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

シーケンス図の書き方やサンプルのご紹介(内部設計)

  <目次> (1) シーケンス図の書き方やサンプルのご紹介(内部設計)  (1-1) シーケンス図を作る目的  (1-2) シーケンス図の書き方  (1-3) ご参考:縦軸の単位について …

エピック/ユーザーストーリー/フィーチャーの違いや特徴について

  <目次> (1) エピック/ユーザーストーリー/フィーチャーの違いや特徴について  (1-1) エピック(Epic)とは?  (1-2) フィーチャー(Feature)とは?  (1-3 …

  • English (United States)
  • 日本語
Top