2015-07-03 10 views
16

द्वारा हस्ताक्षरित प्रमाणपत्र मैं विंडोज़ पर डॉकर चला रहा हूं (boot2docker + Oracle वर्चुअल बॉक्स)। मेरे कॉर्पोरेट वातावरण में वे प्रमाणपत्रों को संशोधित करते हैं ताकि सीए कंपनी के स्वयं हस्ताक्षरित सीए हैं। इस प्रकार, श्रृंखला इस तरह समाप्त होता है:विंडोज़ (डॉक 2 डॉकर) पर डॉकर - अज्ञात प्राधिकरण त्रुटि

Company's CA 
    |__ 
     Company's Intermediate CA 
      |__ 
       Docker Certificate 

जब मैं इस तरह के रूप में किसी भी आदेश को चलाने के लिए, की कोशिश:

Get https://index.docker.io/v1/repositories/library/hello-world/images: x509: certificate signed by unknown authority 

मैं कई पाया है: मैं इस त्रुटि मिलती है

docker run hello-world 

इस समस्या का जवाब लेकिन हमेशा लिनक्स वातावरण के लिए। मैं विंडोज़ में इस समस्या को कैसे हल कर सकता हूं?

+0

आप इसे मिला काम कर रहे? बस एक ही समस्या मिली – meilon

+0

क्षमा करें मैंने नहीं किया ... अभी भी एक कामकाज की तलाश में – codependent

+0

इस बारे में कोई भाग्य? –

उत्तर

31

यह सामान्य मुद्दा मुझे कुछ महीनों तक परेशान कर रहा है। मैंने पहली बार पाइथन पैकेज लाने के लिए स्थानीय वर्चुअल मशीन प्राप्त करने का प्रयास करते समय इसे देखा, इसलिए मुझे पहले से ही एक विचार था कि प्रमाण पत्र एक मुद्दा होगा। मैंने इसे अपने वीएम के लिए हल किया, लेकिन आज तक डॉकर के लिए समाधान करने में सक्षम नहीं था। चाल डॉकर के प्रमाण स्टोर में प्रमाण पत्र जोड़ना और उन्हें जारी रखना है। यह bootlocal.sh स्क्रिप्ट का उपयोग करके पूरा किया जाता है जो मशीन शुरू होने पर हर बार निष्पादित होता है।

मुझे लगता है कि क्या आपको पहले से ही लिनक्स के उत्तर मिल चुके हैं, तो आप पहले ही पहले चरण जानते हैं। मैं उन्हें पूरी तरह से होने के लिए यहां दस्तावेज दूंगा, क्योंकि अन्य लोग अब तक इसे प्राप्त नहीं कर पाएंगे। यदि आपने पिछले प्रयासों के माध्यम से पहले से ही # 1 और # 2 किया है तो नीचे # 3 से शुरू करें।

  1. कॉर्पोरेट रूट प्रमाणपत्रों का सेट प्राप्त करें, जो आपके कॉर्पोरेट-कॉन्फ़िगर किए गए ब्राउज़र में स्थापित होना चाहिए। क्रोम में, आप सेटिंग्स पर जा सकते हैं, उन्नत सेटिंग्स दिखाएं क्लिक करें, और एचटीटीपीएस/एसएसएल पर स्क्रॉल करें, जहां आप प्रमाणपत्र प्रबंधित करें चुन सकते हैं। मेरे संगठन ने उन्हें विश्वसनीय रूट सर्टिफिकेशन प्राधिकरणों में रखा है और संगठन के नाम पर उन्हें नामित किया है। प्रत्येक निर्यात करें (मेरे पास दो हैं), एक समय में, डीईआर प्रारूप का चयन करना सुनिश्चित करें।

  2. एक बार जब आप उन्हें किसी ज्ञात स्थान पर सहेज लेते हैं, तो आप उन्हें पीईएम प्रारूप में रूपांतरित करना चाहते हैं। ऐसा करने का सबसे आसान तरीका यह है कि डॉकर क्विकस्टार्ट टर्मिनल के भीतर openssl.exe [1] कमांड चलाएं।

    openssl x509 -inform der -in certificate.cer -out certificate.pem 
    
  3. एक बार जब आप .pem फ़ाइलें हो, तो आप किसी स्थान अपने डोकर मशीन का उपयोग कर सकते है जो करने के लिए करने के लिए उन्हें कॉपी करना चाहते हैं जाएगा। मैंने सी: \ उपयोगकर्ता \ my.username \ certs में एक निर्देशिका बनाई और उन्हें वहां कॉपी किया।

  4. यह चरण कड़ाई से जरूरी नहीं हो सकता है, लेकिन यह मैंने किया है, और यह काम करता है। आप उन प्रमाणपत्रों को अपने boot2docker विभाजन में कॉपी करना चाहते हैं, जो लगातार है। मैं अपनी डिफ़ॉल्ट मशीन है, जो कुछ आप चरण के लिए करने की आवश्यकता होगी है से कनेक्ट कर रहा हूँ 5.

    MINGW64:$ docker-machine ssh default 
    
    [email protected]:~$ sudo -s 
    [email protected]:/home/docker# mkdir /var/lib/boot2docker/certs 
    [email protected]:/home/docker# cp /c/Users/my.username/certs/*.pem /var/lib/boot2docker/certs/ 
    
  5. अब यह एक bootlocal.sh स्क्रिप्ट लिखने के लिए जो उचित स्थान पर हर बार प्रमाण पत्र की प्रतिलिपि बनाएगा समय आ गया है प्रणाली शुरू होती है। [2] यदि आप पहले से नहीं हैं, तो प्रति चरण 4, मशीन के लिए एक एसएसएच कनेक्शन खोलें।

    touch /var/lib/boot2docker/bootlocal.sh && chmod +x /var/lib/boot2docker/bootlocal.sh 
    vi /var/lib/boot2docker/bootlocal.sh 
    

    निम्नलिखित डालें और फाइल को सेव करें: या तो मशीन के भीतर से रिबूट कमांड का उपयोग करके

    #!/bin/sh 
    
    mkdir -p /etc/docker/certs.d && cp certs/certificate.pem /etc/docker/certs.d 
    
  6. पुनः प्रारंभ मशीन, या डोकर टर्मिनल से डोकर मशीन कमांड का उपयोग करके :

    docker-machine restart default 
    

अब आप 'हैलो दुनिया' और दूसरों को चलाने के लिए सक्षम होना चाहिए। आशा है कि ये आपकी मदद करेगा।


सूत्रों का कहना है

[1] https://serverfault.com/questions/254627/how-to-convert-a-cer-file-in-pem

[2] https://github.com/boot2docker/boot2docker/issues/347#issuecomment-189112043

+0

पूरी तरह से काम करता है – Gajotres

0

एक तरह से यह करने के लिए फ़ायरफ़ॉक्स के साथ, यूआरएल पर जाएँ: https://auth.docker.io/token?scope=repository%3Alibrary%2Fhello-world%3Apull&service=registry.docker.io, प्रमाण पत्र के लिए विवरण देखें क्लिक करें और इसे सीआरटी के रूप में निकालें।

कॉपी वी एम के लिए फ़ाइल जहां ओएस भंडार CRT:

CentOS

etc/pki/ca-trust/source/anchors/ 
# Then run 
update-ca-trust force-enable 
update-ca-trust extract 

उबंटू

/usr/share/ca-certificates 
#Then run 
sudo dpkg-reconfigure ca-certificates 

रीबूट डोकर, और यह काम करना चाहिए