🍣
【Python】エラー:urllib.error.URLError/ SSL: CERTIFICATE_VERIFY_FAILED
概要
Flaskでアプリケーションを構築していたところ、下記エラーに遭遇した。
どういったエラーか説明すると、/drinks-detailsというjwt認証を必要とするエンドポイントにリクエストを送ると、上記エラーが発生する。具体的なコードは下記の通り。
@app.route('/drinks-detail', methods=['GET'])
@requires_auth('get:drinks-detail')
def get_drinks_detail(jwt):
try:
drinksLongList = [drink.long() for drink in Drink.query.all()]
print(drinksLongList)
return jsonify({
'success': True,
'drinks-detail': drinksLongList
}), 200
except:
return json.dumps({
'success': False,
'error': "Error with loading drinks occured"
}), 500
ちなみに、@requires_authの部分を削除すると、正しくレスポンスが返ってくるので、requires_authで何かが起きていることは明白だった。
原因
エラーが発生している理由として、自分のOSが自己署名されたリクエストをブロックしていることだった。自己署名されたリクエストは、信頼できないソースから送信された可能性がある。そのため、OS側でセキュリティ上の理由から、これらのリクエストをブロックしていた。
対応策
自己署名したリクエストがブロックされないように、OS側のセキュリティ設定を変更する必要がある。Macの場合、Pythonのアプリケーションタブへ移動して、"Install Certificates.command" をダブルクリックすると、セキュリティ設定を変更できる。下記URLでも同様の記載がされている。
GitHub
Discussion