डिफ़ॉल्ट CA प्रमाणपत्र बंडल स्थान


18

मुझे अपने डिफ़ॉल्ट CA सर्टिफिकेट बंडल में .pem सर्टिफिकेट फ़ाइल जोड़ने की आवश्यकता है, लेकिन मुझे नहीं पता कि डिफ़ॉल्ट CA सर्टिफिकेट बंडल कहाँ रखा गया है।

मुझे अपनी नई। Pem फ़ाइल को इस डिफ़ॉल्ट बंडल में संलग्न करना होगा। मैं बल्कि ऐसा करना चाहता हूं कि --capath का उपयोग करके अपना खुद का स्थान निर्दिष्ट करें

cURL को स्पष्ट रूप से पता है कि कहां देखना है लेकिन मुझे कोई भी cURL कमांड नहीं दिखता है जो स्थान को प्रकट करे। क्या कोई आदेश है जो इस स्थान को प्रकट करेगा? मुझे ये कैसे मिल सकता है?

CURL के अनुसार:
अपने सर्वर के लिए मौजूदा डिफ़ॉल्ट CA प्रमाणपत्र बंडल में CA प्रमाणपत्र जोड़ें। उपयोग किए गए CA बंडल के डिफ़ॉल्ट पथ को आपकी पसंद के पथ को इंगित करते हुए --with-ca-बंडल विकल्प के साथ कॉन्फ़िगर करके चलाया जा सकता है।

धन्यवाद


आप कौन से ऑपरेटिंग सिस्टम का उपयोग कर रहे हैं?
क्रिस्टियान सियुपिटु

जवाबों:


20

curlसाथ दौड़ना straceआपको एक संकेत दे सकता है।

strace कर्ल https://www.google.com | & grep खुला

उत्पादन के बहुत सारे, लेकिन अंत में मैं देख रहा हूँ:

खुला ("/ etc / ssl / certs / 578d5c04.0", O_RDONLY) = 4

वह जगह है जहाँ मेरे प्रमाण पत्र संग्रहीत हैं।


2
मुझे दिखाने के लिए +1 strace!
रॉबर्ट डंडन

straceस्पष्ट रूप से macOS पर उपलब्ध नहीं है। "समतुल्य" dtrussने मुझे बताया "dtrace: dtrace को आरंभ करने में विफल: DTrace को अतिरिक्त विशेषाधिकारों की आवश्यकता है"। इसलिए मैंने इसके sudoसाथ प्रयोग किया । जिसके लिए इसने उत्तर दिया "dtrace: कर्ल निष्पादित करने में विफल: dtrace निष्कासन को प्रतिबंधित एंटाइटेलमेंट के साथ हस्ताक्षरित नहीं कर सकता है"। बहुत मददगार नहीं।
एलएस

17

कर्ल के 'बिन /' में एक प्रोग्राम 'कर्ल-कॉन्फिग' होना चाहिए, यानी जहां 'कर्ल' बाइनरी रहता है।

./curl-config --ca

ca बंडल बंडल पथ देता है।

मैंने अभी एक व्हाईस कर्ल-कॉन्फिगर किया था: "एक लिबरक्यूलर इंस्टालेशन के बारे में जानकारी प्राप्त करें", इसलिए मुझे लगता है कि यह केवल तभी उपलब्ध होगा जब लिबर्कल स्थापित किया गया था, जो मुझे लगता है कि मानक है।


1
मुझे इसे चलाने के लिए उबंटू पर एक पैकेज स्थापित करना था (यदि यह स्थापित नहीं है तो आपको उपलब्ध विकल्पों की एक सूची दिखाई जाएगी), लेकिन इस आदेश का उपयोग करके मुझे सही जगह पर ले जाया गया!
राबर्ट डंडन

2
यह curl-configप्रोग्राम प्रोग्राम या इंस्टॉलेशन के सभी संस्करणों के साथ उपलब्ध नहीं है। उदाहरण के लिए, कुछ व्यवस्थापक कार्यक्रम के उद्देश्य को नहीं समझ सकते हैं और इसे स्थापित नहीं कर सकते क्योंकि उन्हें लगता है कि यह केवल एक बिल्ड कॉन्फ़िगरेशन उपकरण है। इसके अलावा, यदि उपयोगकर्ता को प्रोग्राम की आवश्यकता है, तो वह उस सिस्टम का व्यवस्थापक नहीं है जिसे वे इसे स्थापित नहीं कर सकते। मेरे पास दो प्रणालियों तक पहुंच है, एक में यह कार्यक्रम नहीं है, दूसरे के लिए कोई आउटपुट नहीं दिया गया है curl-config --ca
एलएस

मैं इस उत्तर को स्वीकार करता हूं - straceकॉन्फ़िगर जानकारी का उपयोग करना आवश्यक नहीं होना चाहिए।
केन विलियम्स

7

मुझे एक आसान तरीका मिला: --cacertएक गलत फ़ाइल नाम के साथ उपयोग करें, आउटपुट पथ दिखाएगा।

उदाहरण:

~$ curl --cacert non_existing_file https://www.google.com
curl: (77) error setting certificate verify locations:
  CAfile: non_existing_file
  CApath: /etc/ssl/certs

मुझे लगा कि यह एक अच्छे समाधान की तरह लग रहा है। हालांकि, कर्ल ने मुझे "77" त्रुटि दी, लेकिन अतिरिक्त जानकारी नहीं।
एलएस

@ एलएस क्रिया ध्वज को जोड़ने की कोशिश करते हैं: -v या --verbose
चैनेल पे

2

लिनक्स (उबंटू, डेबियन)

अपने सीए को डीआईआर / यूएसआर / लोकल / शेयर / सीए-सर्टिफिकेट / कॉपी करें

sudo cp foo.crt /usr/local/share/ca-certificates/foo.crt

सीए स्टोर को अपडेट करें

sudo update-ca-certificates

अपना CA निकालें और CA स्टोर अपडेट करें:

sudo update-ca-certificates --fresh

लिनक्स (सेंटो 6)

Ca-प्रमाणपत्र पैकेज स्थापित करें:

yum install ca-certificates

डायनेमिक CA कॉन्फ़िगरेशन सुविधा सक्षम करें: अपडेट-को-ट्रस्ट बल-सक्षम करें इसे एक नई फ़ाइल के रूप में जोड़ें /etc/pki/ca-trust/source/anchors/:

cp foo.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust extract

लिनक्स (सेंटो 5)

फ़ाइल करने के लिए अपना विश्वसनीय प्रमाण पत्र संलग्न करें /etc/pki/tls/certs/ca-bundle.crt

cat foo.crt >>/etc/pki/tls/certs/ca-bundle.crt

https://manuals.gfi.com/en/kerio/connect/content/server-configuration/ssl-certports/adding-trusted-root-certports-to-the-server-1605.html एक अच्छा लिंक, जो बताता है इसे कई लोकप्रिय ओएस में कैसे जोड़ा जाए।


जब भी यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, तो उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर होगा
गेराल्ड श्नाइडर

@GeraldSchneider> आप टिप्पणी पढ़ें, और कार्रवाई की;)
BiG_NoBoDy

1

आप haxx.se से CA रूट सर्टिफिकेट बंडल डाउनलोड कर सकते हैं जो कर्ल के निर्माता हैं। इसके बाद बस अपने सर्टिफिकेट को उनके .pem में संलग्न करें और कर्ल - thecacert विकल्प के साथ प्रयोग करते समय इसे देखें


1

-v URL में https के साथ।

$ curl -v https://google.com
* Rebuilt URL to: https://google.com/
* timeout on name lookup is not supported
*   Trying 172.217.9.174...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Connected to google.com (172.217.9.174) port 443 (#0)
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*   *CAfile: C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt*

नहीं। यह मेरे लिए ऐसा कुछ नहीं दिखा। वास्तव में, मैंने इसके उत्पादन की तुलना एक अन्य रन के साथ करते हुए -kयह देखने का विकल्प जोड़ा कि क्या इसमें कोई अंतर है। कोई फर्क नहीं पड़ा।
एलएस

@ आपके पास अपने URL में https है?
फिलिप रेगो

0

डिफ़ॉल्ट CA बंडल स्थान OS निर्भर है। RHEL5 पर, यह /etc/pki/tls/certs/ca-bundle.pem में स्थित है। लिनक्स या गैर-लिनक्स ओएस के अन्य स्वादों पर, यह एक अलग स्थान पर हो सकता है।


इसलिए मुझे लगता है कि मैं बस उस फ़ाइल के लिए खोज करता हूं ...
स्लिंकी

2
एक अन्य विचार: # स्ट्रिंग्स /usr/lib64/libcurl.so.3 | egrep '^ /' /etc/pki/tls/certs/ca-bundle.crt
offby1
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.