2016-03-03 8 views
8

मैं इस छोटे Dockerfileअल्पाइन 3.3, अजगर 2.7.11, urllib2 के कारण एसएसएल: CERTIFICATE_VERIFY_FAILED

FROM alpine:3.3 
RUN apk --update add python 
CMD ["python", "-c", "import urllib2; response = urllib2.urlopen('https://www.python.org')"] 

docker build -t alpine-py/01 . साथ यह बिल्डिंग और फिर docker run -it --rm alpine-py/01 के साथ चल रहा है निम्न उत्पादन

Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
    File "/usr/lib/python2.7/urllib2.py", line 154, in urlopen 
    return opener.open(url, data, timeout) 
    File "/usr/lib/python2.7/urllib2.py", line 431, in open 
    response = self._open(req, data) 
    File "/usr/lib/python2.7/urllib2.py", line 449, in _open 
    '_open', req) 
    File "/usr/lib/python2.7/urllib2.py", line 409, in _call_chain 
    result = func(*args) 
    File "/usr/lib/python2.7/urllib2.py", line 1240, in https_open 
    context=self._context) 
    File "/usr/lib/python2.7/urllib2.py", line 1197, in do_open 
    raise URLError(err) 
urllib2.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)> 

कल बनाता है मुझे हालिया ओपनएसएसएल 1.0.2 जी रिलीज द्वारा काट दिया गया, जिसने संकलन के लिए py-cryptograpy का कारण बना दिया। सौभाग्य से py-cryptography के लोगों ने कुछ घंटों बाद पीईपीआई पर एक नया संस्करण जारी किया। मुद्दा यह था कि ओपनएसएसएल में एक समारोह को एक नया हस्ताक्षर मिला।

क्या यह संबंधित हो सकता है या क्या मुझे कुछ याद आ रहा है?

उत्तर

10

आप सार्वजनिक सीए द्वारा हस्ताक्षरित प्रमाणपत्र मान्य करने के लिए सक्षम होने के लिए CA-प्रमाण पत्र स्थापित करने की आवश्यकता:

FROM alpine:3.3 
RUN apk --no-cache add python ca-certificates 
CMD ["python", "-c", "import urllib2; response = urllib2.urlopen('https://www.python.org')"] 
+0

धन्यवाद, यह वास्तव में मुझे बचाता है। –

0

रूप libssl एक पैच

FROM alpine:3.3 
RUN apk -U upgrade && \ 
    apk -U add python ca-certificates && \ 
    update-ca-certificates 
CMD ["python", "-c", "import urllib2; response = urllib2.urlopen('https://www.python.org')"] 
के साथ उन्नत करने की जरूरत है आप अल्पाइन को अपग्रेड करना होगा

apk -u इन अपग्रेड कर देंगे उन्नयन:

  • libcrypto1.0 (1.0.2e-r0 -> 1.0.2g-r0)
  • libssl1.0 (1.0.2e-r0 -> 1.0.2g-r0)
+0

हां, धन्यवाद, स्वीकार किया गया जवाब पहले ही मुझे 'सीए-प्रमाणपत्र' जोड़ने के लिए समाधान दे रहा था। ओह, मैं देखता हूं, मेरे मामले में अपग्रेड नहीं था, लेकिन संकेत के लिए धन्यवाद, यह कभी-कभी काम में आ सकता है। –

+0

लेकिन क्या इन उन्नयनों को वैसे भी लागू नहीं किया जाता है? मुझे लगता है कि जब मैं 'पायथन-देव' स्थापित कर रहा था, तो मैं देख सकता था कि यह सभी उपयोग की गई पुस्तकालयों को भी अपग्रेड कर रहा था। एपीके के लिए –

+0

, अपग्रेड "वर्तमान में स्थापित संकुल को अपग्रेड करेगा"। अल्पाइन के बाद के संस्करणों में libssl और libcrypto के लिए एक पैच है जो आवश्यक है। जोड़ते समय, यानी apk python-dev जोड़ें, यह उस पैकेज के लिए रखरखाव अनुरोधित निर्भरताओं में खींच जाएगा - जो समान नहीं हो सकता है। –

संबंधित मुद्दे