"SSLError SSL: CERTIFICATE_VERIFY_FAILED" when downloading a bulk file.

Hi team,
I cannot download a bulk file via Python. The code returns "SSLError SSL: CERTIFICATE_VERIFY_FAILED" message to me.
Caught exception: HTTPSConnectionPool(host='s3.amazonaws.com', port=443): Max retries exceeded with url: /xxxx (Caused by SSLError(SSLCertVerificationError (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1000)')))
Answers
-
Hello @Akechi Sato
The error message [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate indicates that your Python application tries to make a HTTPS connection, but the Python cannot verify SSL certificate of the server. This is most likely the proxy or firewall issue that blocks the Python SSL certificate verification process. The example scenario is ZScaler blocks the process.
There are two workarounds as follows:
Work Around 1: Set your proxy/firewall certificate file to the Python call.
You should export your Proxy/Firewall certificate file (please contact your IT Network team, not LSEG Developer Relations), and then pass it to the Python library that makes HTTPS request.
Example with ZScaler and Python Requests library
lib_cert = 'C:\Projects\Code\GenericCFS_Bulk_Project\cert\zscaler.crt.pem'
try:
bulkFile_response = polling2.poll(lambda: requests.get(file_url, allow_redirects=False, verify= lib_cert),
step = 10,
poll_forever = True,
check_success= test_result)
except requests.exceptions.RequestException as exp:
print(f'Caught exception: {exp}')Work Around 2: Disable SSL verification (Not Recommend for Production)
Set verify = false on the requests library calls. This work around is not recommended on the Production environment.
try:
bulkFile_response = polling2.poll(lambda: requests.get(file_url, allow_redirects=False, verify= False),
step = 10,
poll_forever = True,
check_success= test_result)
except requests.exceptions.RequestException as exp:
print(f'Caught exception: {exp}')I hope this helps.
0
Categories
- All Categories
- 3 Polls
- 6 AHS
- 37 Alpha
- 167 App Studio
- 6 Block Chain
- 4 Bot Platform
- 18 Connected Risk APIs
- 47 Data Fusion
- 34 Data Model Discovery
- 707 Datastream
- 1.5K DSS
- 633 Eikon COM
- 5.2K Eikon Data APIs
- 15 Electronic Trading
- 1 Generic FIX
- 7 Local Bank Node API
- 7 Trading API
- 3K Elektron
- 1.5K EMA
- 260 ETA
- 571 WebSocket API
- 41 FX Venues
- 16 FX Market Data
- 2 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 26 Messenger Bot
- 4 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 60 Open Calais
- 284 Open PermID
- 47 Entity Search
- 2 Org ID
- 1 PAM
- PAM - Logging
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 25 RDMS
- 2.2K Refinitiv Data Platform
- 17 CFS Bulk File/TM3
- 904 Refinitiv Data Platform Libraries
- 5 LSEG Due Diligence
- 1 LSEG Due Diligence Portal API
- 4 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.2K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 12 World-Check Customer Risk Screener
- 1K World-Check One
- 46 World-Check One Zero Footprint
- 45 Side by Side Integration API
- 2 Test Space
- 3 Thomson One Smart
- 10 TR Knowledge Graph
- 151 Transactions
- 143 REDI API
- 1.8K TREP APIs
- 4 CAT
- 27 DACS Station
- 126 Open DACS
- 1.1K RFA
- 108 UPA
- 197 TREP Infrastructure
- 232 TRKD
- 921 TRTH
- 5 Velocity Analytics
- 9 Wealth Management Web Services
- 106 Workspace SDK
- 11 Element Framework
- 5 Grid
- 19 World-Check Data File
- 1 Yield Book Analytics
- 48 中文论坛