docker कंटेनर ssl प्रमाणपत्र


88

वहाँ किसी भी तरह से छवियों को ssl प्रमाणपत्र जोड़ने के लिए है कि docker पुल से आए हैं?

मैं फ़ाइल को / etc / ssl / certs में चलाने का एक सरल और प्रतिलिपि प्रस्तुत करने योग्य तरीका खोज रहा हूं और अपडेट-कै-सर्टिफिकेट चलाता हूं। (यह ubuntu और डेबियन छवियों को कवर करना चाहिए)।

मैं CoreOS पर docker का उपयोग कर रहा हूं, और coreos मशीन को आवश्यक ssl प्रमाणपत्रों पर भरोसा है, लेकिन docker के कंटेनरों में स्पष्ट रूप से केवल डिफ़ॉल्ट है।

मैंने इसके docker run --entrypoint=/bin/bashबाद प्रमाणपत्र जोड़ने और चलाने का उपयोग करने की कोशिश की है update-ca-certificates, लेकिन यह प्रविष्टि बिंदु को स्थायी रूप से ओवरराइड करता है।

मैं भी अब सोच रहा था, क्या /etc/ssl/certsमेजबान मशीनों की नकल से कंटेनर पर चढ़ना अधिक सुरुचिपूर्ण होगा ? ऐसा करने से कंटेनरों को मेजबान के समान चीजों पर भरोसा करने की अनुमति मिलेगी।

मैं एक कष्टप्रद छद्म के साथ काम कर रहा हूं जो सब कुछ इस्तीफा दे देता है :( जो एसएसएल को तोड़ता है और कंटेनरों को काम करने के लिए अजीब बनाता है।


3
क्या आपने एक Dockerfile बनाने के बारे में सोचा है जो आपकी छवि का उपयोग करेगा, फ़ाइल को जोड़ेगा और अपडेट-कै-सर्टिफिकेट चलाएगा? या यह नहीं कि आप क्या देख रहे हैं?
सेलाइन औसॉरड

मैंने कुछ छवियों के लिए ऐसा किया है। यह एक बुरा समाधान नहीं है। हालांकि आपको अपने स्वयं के साथ सभी छवियों पर निर्माण करने की आवश्यकता है।
ब्यू ट्रेप

जवाबों:


75

का उपयोग कर डॉक कंटेनर पर सीरेट्स माउंट करें -v:

docker run -v /host/path/to/certs:/container/path/to/certs -d IMAGE_ID "update-ca-certificates"

5
यह बहुत बुरा है। यदि कंटेनर ssl_certs की उसी शैली का उपयोग करता है, तो आपको अपडेट-कै-सर्टिफिकेट लाइन की भी आवश्यकता नहीं होगी, तो होस्ट पहले ही कर चुका होगा :)।
ब्यू ट्रेप

2
और अगर हम बादल में निर्माण कर रहे हैं?
इवोकस

27

मैं ऐसा ही कुछ करने की कोशिश कर रहा हूं। जैसा कि ऊपर टिप्पणी की गई है, मुझे लगता है कि आप एक कस्टम डॉकरफाइल (आधार छवि के रूप में आपके द्वारा खींची गई छवि का उपयोग करके), ADDअपने प्रमाण पत्र के साथ एक नई छवि बनाना चाहेंगे RUN update-ca-certificates। इस बार आपके पास इस नई छवि से एक कंटेनर शुरू करने पर हर बार एक सुसंगत स्थिति होगी।

# Dockerfile
FROM some-base-image:0.1
ADD you_certificate.crt:/container/cert/path
RUN update-ca-certificates

मान लीजिए docker buildकि डॉकफाइल ने IMAGE_ID का उत्पादन किया है। अगले पर docker run -d [any other options] IMAGE_ID, उस आदेश द्वारा शुरू किया गया कंटेनर आपके पास प्रमाणपत्र जानकारी होगी। सरल और प्रतिलिपि प्रस्तुत करने योग्य।


आमतौर पर मैं अन्य उत्तरों में उल्लिखित docker रन -v समाधान पसंद करूंगा। लेकिन आपका समाधान भी काम करता है यदि आपको डॉक निर्माण के दौरान प्रमाण पत्र की आवश्यकता होती है। धन्यवाद!
बस्तियन

10
मैं किसी भी सार्वजनिक कंटेनर में प्रमाण पत्र डालने से सावधान रहूंगा। कोई और आपके कंटेनर को खींच सकता है और आपके निजी अनाज को निकाल सकता है।
skibum55

4
जबकि यह एक बहुत अच्छा बिंदु है, उपरोक्त समाधान कुछ भी सार्वजनिक नहीं करता है। यह अपने स्वयं के प्रमाण पत्र को एक छवि में जोड़ने के लिए है जो स्थानीय रूप से बनाया गया है और फिर निजी तौर पर उपयोग किया जाता है। फिर आप परिणामी छवि को एक सार्वजनिक भंडार में धकेल सकते हैं , लेकिन यह एक बुरा विचार होगा जैसा आपने कहा।
13 अक्टूबर को shudgston

9
प्रमाणपत्र कब से गुप्त हैं?
टेकफुल

4
चूँकि आपके सर्वर को प्रकाशित होने वाले प्रमाणपत्र से मिलान करने के लिए एक निजी कुंजी की आवश्यकता होती है।
जॉन रिक्स

22

जैसा कि ऊपर एक टिप्पणी में सुझाया गया था , अगर मेजबान पर प्रमाणपत्र स्टोर अतिथि के साथ संगत है, तो आप इसे सीधे माउंट कर सकते हैं।

डेबियन होस्ट (और कंटेनर) पर, मैंने सफलतापूर्वक किया है:

docker run -v /etc/ssl/certs:/etc/ssl/certs:ro ...

तो बिल्ड सर्वर पर डॉकर छवि बनाते समय क्या करें? : /
इवोक्स

@ ईवोक आप कुछ निजी डीएनएस पर अपने सेर्ट्स की मेजबानी कर सकते हैं और उन्हें अपने हेलम चार्ट के अंदर लोड कर सकते हैं और आप अपने क्लस्टर पर वॉल्यूम बनाने को स्वचालित कर सकते हैं।
बस्साम गामल

2

आप कंटेनर को वॉल्यूम माउंट करने के लिए सापेक्ष पथ का उपयोग कर सकते हैं:

docker run -v `pwd`/certs:/container/path/to/certs ...

नोट करें, pwdजिस पर आपको वर्तमान कार्य निर्देशिका दी गई है। यह मानता है कि आपके पास certsमौजूदा निर्देशिका में फ़ोल्डर docker runहै जिसे निष्पादित किया गया है। Kinda स्थानीय विकास के लिए बहुत अच्छा है और अपने प्रोजेक्ट के लिए दृश्य फ़ोल्डर को रखें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.