2016-10-11 102 views
2

我試圖通過twine upload <file>上傳一個Python文件的PyPI但我得到的SSL錯誤:蟒蛇一些分佈SSL證書驗證失敗命令

使用SSL有同樣的問題
C:\pypubsub>twine upload dist\PyPubSub-4.0.0rc1-py3-none-any.whl 
Uploading distributions to https://upload.pypi.org/legacy/ 
Uploading PyPubSub-4.0.0rc1-py3-none-any.whl 
SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645) 

其他Python腳本,例如

  • python setup.py bdist_wheel upload <my_package>
  • pip install <any_package>;但我可以添加--trusted-host pypi.python.org任何pip install命令和相關的安裝和下載會成功

這發生在我的筆記本電腦的企業無論在家庭或工作,但它並不在我的個人筆記本電腦發生。

要解決這個問題,我基本上是試圖SO answer to similar problem(即導出證書麻線正試圖驗證 - 大概是pypi.python.org的 - 然後告訴麻線使用它):

    從Chrome瀏覽器
  1. ,我去https://pypi.pythong.org,點擊URL旁邊的鎖,然後點擊Details,View Certificate,Details,Copy to File。這生成了一個.CER文件。
  2. 我用SSL Converter將.CER文件從DER格式轉換爲PEM格式。這創建了一個.CRT文件。
  3. 我跑線爲twine upload <my_package> --cert <path to CRT file>;這次SSL錯誤是SSLError: [SSL] PEM lib (_ssl.c:2846)

我然後試圖通過如Opting Out描述修補c:\Python35\lib\ssl.py停用服務器證書驗證的:我通過_create_default_https_context = _create_unverified_context取代線_create_default_https_context = create_default_context。重新運行twine命令再次失敗,原因是CERTIFICATE_VERIFY_FAILED錯誤。

我並不是那麼熟悉證書,所以我現在處於虧損狀態,還有什麼可以嘗試。

回答

0

您可以通過一個--cert標誌告訴twine使用哪個證書。

twine upload dist\PyPubSub-4.0.0rc1-py3-none-any.whl --cert <path-to-.pem-file> 

隱蔽一個.cer.pem文件,做到以下幾點。

openssl x509 -inform der -in certificate.cer -out certificate.pem 

--cert標誌是一個誰使用自定義SSL證書是必不可少的。如果您使用的是公司網絡,上述修補程序應該將您排除在外。詢問您的管理員的SSL證書:)

+0

Thx @karanja for answer。但似乎這證實我的文章的步驟1到3應該工作,但也許我沒有正確地做第2步? – Schollii

+0

@Schollii是否支持企業防火牆?如果是這樣,你有權訪問https SSL證書嗎? 您需要將'.cer'文件轉換爲'.pem'文件。 –

+0

所以我需要從我們的IT獲得https SSL證書?所以這是一套ssl證書,不僅僅是那個我遇到麻煩的網站? – Schollii

相關問題