2014-12-17 6 views
8

नीचे दिए गए मुद्दे के लिए मेरा अंतिम कार्यवाही हमारे आईटी लोगों को मनाने के लिए था कि डॉकरहब रजिस्ट्री में मैन-इन-द-बीच में नहीं। मैं काम करने के लिए कुछ भी नहीं मिला, हां।प्रॉक्सी के पीछे मैक पर डॉकर जो एसएसएल प्रमाणपत्र

मैं काम पर अपने मैक पर डॉकर चलाने के अपने प्रारंभिक प्रयास के साथ एक समस्या में भाग रहा हूं, जो 10.8.5 चल रहा है। ऐसा लगता है कि मेरी कंपनी के प्रमाण पत्र-पुनर्लेखन प्रॉक्सी छवियां ला के रास्ते में आ जा रहा है:

orflongpmacx8:docker pohl_longsine$ docker run hello-world 
Unable to find image 'hello-world:latest' locally 
Pulling repository hello-world 
FATA[0001] Get https://index.docker.io/v1/repositories/library/hello-world/images: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "bcauth") 

(वास्तव में, जब मैं अतिथि वायरलेस पर लॉग इन करें - अतीत मैं प्राप्त कर सकते हैं - जो उकतानेवाला प्रॉक्सी नहीं है हालांकि, मुझे यह पता लगाने की जरूरत है कि अतिथि काम का उपयोग प्रॉक्सी के माध्यम से कैसे किया जाए क्योंकि अतिथि वायरलेस का उपयोग दीर्घकालिक समाधान के रूप में अस्थिर है।)

मेरी समस्या, सतह पर, बहुत अधिक प्रतीत होती है एक ने जवाब दिया this question। हालांकि, उस प्रश्न में स्वीकृत उत्तर मेरे लिए काम नहीं करता है, क्योंकि root_unix.go फ़ाइल पर चर्चा की गई है जो मैक पर नहीं आती है। (चारों ओर ब्राउज़ कर से, मुझे लगता है कि होता है कि root_cgo_darwin.go और/या root_darwin.go बजाय शामिल किया जाएगा।)

कि वास्तव में मुझे नहीं बताता है कि कैसे, प्रचालन, मैं विश्वसनीय प्रमाणपत्र के कुछ प्रकार स्थापित करने के बराबर काम करने की ज़रूरत है। मैं *.cer फ़ाइल पर अपने हाथों को पाने में कामयाब रहा, जो मुझे विश्वास है कि मुझे वह चाहिए, लेकिन मुझे नुकसान है कि इसके साथ क्या करना है।

मुझे उम्मीद है कि कोई मुझे सही दिशा में इंगित कर सकता है।

संपादित करें: मैंने सोचा कि शायद मुझे प्रमाणपत्र जोड़ने के लिए this page suggests के समान कुछ करने की आवश्यकता है। अफसोस, उन निर्देशों का पालन पर मेरे प्रयास के बाद रास्ते में विफल रहा है:

orflongpmacx8:docker pohl_longsine$ sudo security add-trusted-cert -d -r trustRoot -k "/Library/Keychains/System.keychain" "~/Desktop/Certs/redacted.cer" 
Password: 
***Error reading file ~/Desktop/Certs/redacted.cer*** 
Error reading file ~/Desktop/Certs/redacted.cer 

संपादित करें 2: मैं एक कदम इस सुलझाने के करीब आया हो सकता है। मुझे उद्धरण चिह्नों के अंदर एक टिल्ड के साथ पथ का उपयोग करने के लिए बेहतर जाना चाहिए था। यदि मैं इसके बजाय एक पूर्ण पथ का उपयोग करता हूं, तो मैं उपरोक्त कमांड को सफलतापूर्वक कर्ट जोड़ने के लिए चला सकता हूं।

ओह, इस परम लक्षण को कम नहीं किया:

FATA[0001] Get https://index.docker.io/v1/repositories/library/hello-world/images: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "bcauth") 
+2

डॉकर डिमन वास्तव में मैक पर नहीं चलता है क्योंकि यह बहुत लिनक्स विशिष्ट है। मुझे लगता है कि आप डॉकर "मेजबान" शुरू करने के लिए वानर का उपयोग कर रहे हैं और फिर सॉकेट के माध्यम से इसके साथ संवाद कर रहे हैं।मैं boot2docker के साथ अनुमान लगाऊंगा। डॉकर डिमन स्वयं अमान्य कर्ट को अनदेखा कर सकता है (हम एक पालो अल्टो प्रॉक्सी का उपयोग करते हैं जो यह भी करता है)। खराब डर्ट को अनदेखा करने के लिए आपको डॉकर होस्ट वीएम और संपादित/etc/default/docker को संपादित करने की आवश्यकता है (विकल्प भूल जाओ, मुझे मौका मिलने पर बाद में जोड़ सकते हैं) –

+0

यह: https://medium.com/ @ डीआईएट/बिल्डिंग-प्राइवेट-डॉकर-रजिस्ट्री-मूल-प्रमाणीकरण-साथ-स्वयं-हस्ताक्षरित-प्रमाणपत्र---669085e612 मदद कर सकता है। अपनी कंपनियों को रूट प्रमाण जोड़ें जो वे प्रॉक्सी में सामान पर हस्ताक्षर करने के लिए उपयोग करते हैं और सब कुछ वैध हो जाएगा –

+1

हां, मैं "boot2docker up" का उपयोग कर रहा हूं, और डॉकर डिमन वास्तव में वर्चुअलबॉक्स में लिनक्स वीएम में चल रहा है। क्या आप सुझाव दे रहे हैं कि मुझे वास्तव में उस वीएम में प्रमाण जोड़ने की कोशिश करनी चाहिए? (या बुरी चेतावनी को अनदेखा करने के लिए इसे कॉन्फ़िगर करें जैसा आपने कहा था)। मुझे लगता है कि मैंने मैट्रिक्स के लिए असली दुनिया को गलत समझा है। – pohl

उत्तर

7

boot2docker README

Insecure Registry 

As of Docker version 1.3.1, if your registry doesn't support HTTPS, you must add it as an insecure registry. 

$ boot2docker init 
$ boot2docker up 
$ boot2docker ssh 
$ echo 'EXTRA_ARGS="--insecure-registry <YOUR INSECURE HOST>"' | sudo tee -a /var/lib/boot2docker/profile 
$ sudo /etc/init.d/docker restart 
then you should be able to do a docker push/pull. 
+0

पर अधिक जानकारी सार्वजनिक डॉकर रजिस्ट्री "असुरक्षित" है? मैंने सोचा कि इसे HTTPS की आवश्यकता है। यह एक अलग सवाल के जवाब की तरह लगता है। – pohl

+0

सुनिश्चित नहीं है कि असुरक्षित का अर्थ है http या इसका मतलब अमान्य प्रमाण है। आपके मामले में, आपके पास प्रॉक्सी स्वयं हस्ताक्षर सामग्री के कारण "अमान्य" प्रमाणपत्र है। यदि आपके पास सीए प्रमाण है, तो आप (boot2docker vm में) इसे /etc/ssl/cacerts.pem में जोड़ सकते हैं (यह सुनिश्चित करने के लिए पहले प्रारूप देखें कि आपका .cer एक ही सादा पाठ है) –

+0

उत्कृष्ट बिंदु। छुट्टियों की छुट्टी खत्म हो जाने पर उसे अपने प्रयोग का प्रयास करना होगा। – pohl

4

http://golang.org/src/crypto/x509/root_darwin.go के स्रोत आदेश है कि पता चलता है:

cmd := exec.Command("/usr/bin/security", "find-certificate", "-a", "-p", "/System/Library/Keychains/SystemRootCertificates.keychain") 

प्रमाण पत्र लगाने के लिए प्रयोग किया जाता है।

ओएसएक्स प्रमाणपत्र कुंजी-श्रृंखला में .cer फ़ाइल जोड़ने का प्रयास करें।

+1

सुझाव के लिए धन्यवाद। मैंने अपने प्रश्न में कुछ संपादन जोड़े जो दिखाते हैं कि मैं आपके द्वारा सुझाए गए कार्यों को कैसे प्रबंधित करता हूं (मुझे लगता है)। हालांकि, समस्या को हल करने के लिए यह प्रकट नहीं हुआ था। – pohl

+0

डॉकर सेवा को पुनरारंभ करने का प्रयास करें। आप '--insecure-रजिस्ट्री' डॉकर ध्वज को भी देखना चाहते हैं, लेकिन यह काफी हकीश है और जैसा कि नाम से पता चलता है, असुरक्षित। Https://docs.docker.com/reference/commandline/cli/#insecure-registries – Intermernet

0

के अनुसार आप डोकर मशीन का उपयोग करते हैं

संपादित $ उपयोगकर्ता/.docker/मशीन/मशीनों/डिफ़ॉल्ट/config.json

"EngineOptions": { 
    "InsecureRegistry": [ 
     "XXX.XXX.virtual" 
    ], 
} 
संबंधित मुद्दे