python連接minio報錯‘SSL routines‘,‘ssl3_get_record‘,‘wrong version number‘的解決方法
這個錯誤表明你的Python程序在嘗試通過HTTPS連接到MinIO服務(wù)器時,SSL握手失敗了。根本原因是客戶端和服務(wù)器在SSL/TLS協(xié)議版本或端口使用上存在不匹配。
讓我們來詳細分析并解決這個問題:
錯誤原因分析
1.核心錯誤:OpenSSL.SSL.Error: [('SSL routines', 'ssl3_get_record', 'wrong version number')]
這通常表示客戶端嘗試用SSL/TLS協(xié)議連接到一個實際上并未使用SSL/TLS的端口,或者協(xié)議版本不匹配。
2.連接信息:你正在嘗試連接到 119.84.128.79:39000
- 這是一個非標準的HTTPS端口(通常HTTPS使用443端口)
- MinIO默認使用9000端口(HTTP)和9001端口(HTTPS)
3.可能的原因:
- MinIO服務(wù)器實際上在39000端口上運行的是HTTP服務(wù),但你的客戶端嘗試用HTTPS連接
- SSL/TLS協(xié)議版本不兼容
- 防火墻或代理干擾了SSL握手
MinIO服務(wù)器配置問題
解決方案
方案1:檢查MinIO服務(wù)器配置(最可能)
首先確認你的MinIO服務(wù)器實際配置:
檢查MinIO是否啟用了HTTPS:
# 登錄到MinIO服務(wù)器,檢查運行參數(shù) ps aux | grep minio
查看是否包含--address ":39000"和--ssl相關(guān)參數(shù)
嘗試用curl測試連接:
# 測試HTTP連接 curl -v http://119.84.128.79:39000 # 測試HTTPS連接 curl -v https://119.84.128.79:39000 # 如果服務(wù)器使用自簽名證書 curl -v -k https://119.84.128.79:39000
根據(jù)測試結(jié)果調(diào)整客戶端代碼:
如果39000端口是HTTP,修改MinIO客戶端初始化代碼:
from minio import Minio
# 改為使用http而不是https
minio_client = Minio(
'119.84.128.79:39000',
access_key='your-access-key',
secret_key='your-secret-key',
secure=False # 禁用SSL
)
方案2:檢查網(wǎng)絡(luò)和代理設(shè)置
確認沒有代理干擾:
import os # 確保沒有設(shè)置不正確的代理 os.environ['NO_PROXY'] = '119.84.128.79'
嘗試禁用SSL驗證(僅測試用):
from minio import Minio
from urllib3 import disable_warnings
from urllib3.exceptions import InsecureRequestWarning
disable_warnings(InsecureRequestWarning)
minio_client = Minio(
'119.84.128.79:39000',
access_key='your-access-key',
secret_key='your-secret-key',
secure=True # 保持為True,但我們將禁用驗證
)
# 強制禁用SSL驗證(不推薦生產(chǎn)環(huán)境使用)
import ssl
minio_client._http.ssl_context = ssl._create_unverified_context()方案3:更新相關(guān)庫
pip install --upgrade minio urllib3 pyOpenSSL
方案4:檢查MinIO服務(wù)器SSL證書
如果MinIO確實配置了HTTPS,但使用自簽名證書:
獲取服務(wù)器證書:
openssl s_client -connect 119.84.128.79:39000 -showcerts </dev/null 2>/dev/null | openssl x509 -outform PEM > minio.crt
在客戶端代碼中指定證書:
import ssl
from minio import Minio
# 創(chuàng)建自定義SSL上下文
ssl_context = ssl.create_default_context(cafile='path/to/minio.crt')
minio_client = Minio(
'119.84.128.79:39000',
access_key='your-access-key',
secret_key='your-secret-key',
secure=True,
ssl=ssl_context
)推薦排查步驟
- 首先確認MinIO服務(wù)器實際配置 - 這是最可能的問題所在
- 使用curl測試連接 - 確定端口實際使用的協(xié)議
- 根據(jù)測試結(jié)果調(diào)整客戶端配置 - 修改secure參數(shù)或SSL設(shè)置
- 檢查網(wǎng)絡(luò)連通性 - 確保沒有防火墻或代理干擾
根據(jù)你的錯誤信息,最可能的情況是MinIO服務(wù)器在39000端口上運行的是HTTP服務(wù),但你的客戶端嘗試用HTTPS連接。請首先嘗試方案1中的修改,將secure=False添加到MinIO客戶端初始化中。
如果問題仍然存在,請?zhí)峁└嚓P(guān)于你的MinIO服務(wù)器配置的信息,我可以給出更具體的建議。
到此這篇關(guān)于python連接minio報錯‘SSL routines‘,‘ssl3_get_record‘,‘wrong version number‘的解決方法的文章就介紹到這了,更多相關(guān)python連接minio報錯解決內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python使用Paramiko模塊編寫腳本進行遠程服務(wù)器操作
這篇文章主要介紹了Python使用Paramiko模塊編寫腳本進行遠程服務(wù)器操作的實例,通過Paramiko能夠方便地使用SSH服務(wù),需要的朋友可以參考下2016-05-05
Django中針對基于類的視圖添加csrf_exempt實例代碼
這篇文章主要介紹了Django中針對基于類的視圖添加csrf_exempt實例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2018-02-02
Python實現(xiàn)兩個list對應(yīng)元素相減操作示例
這篇文章主要介紹了Python實現(xiàn)兩個list對應(yīng)元素相減操作,結(jié)合具體實例形式分析了list對應(yīng)元素操作的簡單實現(xiàn)技巧,需要的朋友可以參考下2017-06-06
django開發(fā)教程之利用緩存文件進行頁面緩存的方法
緩存相信對各位程序員們來說都不陌生,下面這篇文章主要給大家介紹了關(guān)于django開發(fā)教程之利用緩存文件進行頁面緩存的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友們可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11

