নির্দিষ্ট https রিমোটের জন্য একটি নির্দিষ্ট স্ব-স্বাক্ষরিত সার্ভার শংসাপত্র গ্রহণ করতে গিটকে কনফিগার করুন


167

আমি যে প্রকল্পে আছি তার সিসাদমিন সিদ্ধান্ত নিয়েছে যে এসএসএইচ "খুব বেশি সমস্যা"; পরিবর্তে, তিনি একটি https://ইউআরএল (এবং ব্যবহারকারীর নাম / পাসওয়ার্ড প্রমাণীকরণ) এর মাধ্যমে অ্যাক্সেসযোগ্য হওয়ার জন্য গিট সেট আপ করেছেন । এই ইউআরএলটির সার্ভারটি স্ব-স্বাক্ষরিত শংসাপত্র উপস্থাপন করে, তাই তিনি সবাইকে শংসাপত্রের বৈধতা বন্ধ করার পরামর্শ দেন। এটি আমাকে সুরক্ষা-ভিত্তিক একটি ভাল সেটআপ হিসাবে আঘাত করে না।

গিটকে কী বলা সম্ভব যে দূরবর্তী এক্সের জন্য (বা আরও ভাল, কোনও রিপোসিটরিতে যে কোনও রিমোটারি শুরু হতে পারে https://$SERVERNAME/) কোনও নির্দিষ্ট শংসাপত্র গ্রহণ করা, এবং কেবল সেই শংসাপত্রটিই? মূলত এসএসএইচের সার্ভার-কী আচরণটি নকল করুন।


আপনি ইউনিক্সে সি গিট সম্পর্কে জিজ্ঞাসা করছেন, আমার ধারণা?
পাইটর ফাইন্ডেন

এ্যা। ঠিক আছে, উইন্ডোজও উপলব্ধিযোগ্য, তবে এখনই কেউ তা করছে না।
zwol 1

5
ডব্লিউটিএফ? @ জ্যাক আপনি শংসাপত্রের চেক সম্পর্কে একেবারে সঠিক are আপনার প্রশাসক যখন বলেন যে আপনার শংসাপত্রের চেক বন্ধ করা উচিত, তখন সে সার্ভারে টিএলএসও বন্ধ করতে পারে, তারপরে প্রত্যেকেই মধ্য-আক্রমণের মধ্য থেকে আক্রমণ থেকে সুরক্ষা অক্ষম করছে।
রুডি

@ রূদি, তারা কি সার্ভারটি অ্যাক্সেস করার জন্য কোনও আইপি ঠিকানা ব্যবহার করে এখনও এই অবস্থা? (মনে হচ্ছে ডিএনএসের লুকআপটি এমআইটিএম কীভাবে অভ্যন্তরীণ হয়ে যায় তাই আমি মনে করি আইপি ঠিকানাটি এর থেকে সুরক্ষা পাওয়া উচিত))
ক্রিস

6
@ ক্রিস হ্যাঁ, এটি এখনও রয়েছে। একটি এমআইটিএম রাউটার তাদের যে কোনও আইপি ঠিকানা বলে ভান করতে পারে। (আপনি ঐ স্থানে পৃষ্ঠাগুলি আপনার এয়ারপোর্টে বিনামূল্যে ওয়াইফাই পেতে জানি যারা MITMs হয় আইপি এড্রেস একদা দ্বারা একটি পৃষ্ঠায় অ্যাক্সেস করার চেষ্টা করুন।।)
zwol

উত্তর:


295

সংক্ষেপে:

  1. স্ব স্বাক্ষরিত শংসাপত্র পান
  2. এটি কিছু (যেমন ~/git-certs/cert.pem) ফাইলের মধ্যে রাখুন
  3. প্যারামিটার gitব্যবহার করে এই শংসাপত্রটি বিশ্বাস করতে সেট করুনhttp.sslCAInfo

আরও বিশদে:

রিমোট সার্ভারের স্ব স্ব স্বাক্ষরিত শংসাপত্র পান

ধরে নিচ্ছি, সার্ভার ইউআরএল repos.sample.comএবং আপনি এটি পোর্টের মাধ্যমে অ্যাক্সেস করতে চান 443

এটি একাধিক বিকল্প রয়েছে, এটি কীভাবে পাবেন।

ওপেনসেল ব্যবহার করে শংসাপত্র পান

$ openssl s_client -connect repos.sample.com:443

কোনও ফাইলে আউটপুটটি ধরুন cert.pemএবং (এবং সহ) -BEGIN CERTIFICATE-এবং এর মধ্যে অংশ ছাড়া সমস্ত মুছুন-END CERTIFICATE-

ফলাফল ফাইল Content / গিট-সার্টস / cert.pem এর বিষয়বস্তু এই জাতীয় দেখতে পারে:

-----BEGIN CERTIFICATE-----
MIIDnzCCAocCBE/xnXAwDQYJKoZIhvcNAQEFBQAwgZMxCzAJBgNVBAYTAkRFMRUw
EwYDVQQIEwxMb3dlciBTYXhvbnkxEjAQBgNVBAcTCVdvbGZzYnVyZzEYMBYGA1UE
ChMPU2FhUy1TZWN1cmUuY29tMRowGAYDVQQDFBEqLnNhYXMtc2VjdXJlLmNvbTEj
MCEGCSqGSIb3DQEJARYUaW5mb0BzYWFzLXNlY3VyZS5jb20wHhcNMTIwNzAyMTMw
OTA0WhcNMTMwNzAyMTMwOTA0WjCBkzELMAkGA1UEBhMCREUxFTATBgNVBAgTDExv
d2VyIFNheG9ueTESMBAGA1UEBxMJV29sZnNidXJnMRgwFgYDVQQKEw9TYWFTLVNl
Y3VyZS5jb20xGjAYBgNVBAMUESouc2Fhcy1zZWN1cmUuY29tMSMwIQYJKoZIhvcN
AQkBFhRpbmZvQHNhYXMtc2VjdXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP
ADCCAQoCggEBAMUZ472W3EVFYGSHTgFV0LR2YVE1U//sZimhCKGFBhH3ZfGwqtu7
mzOhlCQef9nqGxgH+U5DG43B6MxDzhoP7R8e1GLbNH3xVqMHqEdcek8jtiJvfj2a
pRSkFTCVJ9i0GYFOQfQYV6RJ4vAunQioiw07OmsxL6C5l3K/r+qJTlStpPK5dv4z
Sy+jmAcQMaIcWv8wgBAxdzo8UVwIL63gLlBz7WfSB2Ti5XBbse/83wyNa5bPJPf1
U+7uLSofz+dehHtgtKfHD8XpPoQBt0Y9ExbLN1ysdR9XfsNfBI5K6Uokq/tVDxNi
SHM4/7uKNo/4b7OP24hvCeXW8oRyRzpyDxMCAwEAATANBgkqhkiG9w0BAQUFAAOC
AQEAp7S/E1ZGCey5Oyn3qwP4q+geQqOhRtaPqdH6ABnqUYHcGYB77GcStQxnqnOZ
MJwIaIZqlz+59taB6U2lG30u3cZ1FITuz+fWXdfELKPWPjDoHkwumkz3zcCVrrtI
ktRzk7AeazHcLEwkUjB5Rm75N9+dOo6Ay89JCcPKb+tNqOszY10y6U3kX3uiSzrJ
ejSq/tRyvMFT1FlJ8tKoZBWbkThevMhx7jk5qsoCpLPmPoYCEoLEtpMYiQnDZgUc
TNoL1GjoDrjgmSen4QN5QZEGTOe/dsv1sGxWC+Tv/VwUl2GqVtKPZdKtGFqI8TLn
/27/jIdVQIKvHok2P/u9tvTUQA==
-----END CERTIFICATE-----

আপনার ওয়েব ব্রাউজার ব্যবহার করে শংসাপত্র পান

আমি গিট সংগ্রহস্থলগুলির সাথে রেডমাইন ব্যবহার করি এবং আমি ওয়েব ইউআই এবং গিট কমান্ড লাইন অ্যাক্সেসের জন্য একই URL টি অ্যাক্সেস করি। এইভাবে, আমাকে আমার ওয়েব ব্রাউজারে সেই ডোমেনটির জন্য ব্যতিক্রম যুক্ত করতে হয়েছিল।

ফায়ারফক্স ব্যবহার করে, আমি সেখানে গিয়ে Options -> Advanced -> Certificates -> View Certificates -> Serversসেখানে স্ব-স্বাক্ষরিত হোস্টটি খুঁজে পেয়েছি, এটি নির্বাচন করেছি এবং Exportবোতামটি ব্যবহার করে ঠিক একই ফাইলটি পেয়েছি, যেমনটি ব্যবহার করে তৈরি হয়েছিল openssl

দ্রষ্টব্য: আমি কিছুটা অবাক হয়েছিলাম, কর্তৃপক্ষের নাম দৃশ্যমানভাবে উল্লেখ করা হয়নি। ্রফ.

ডেডিকেটেড ফাইলে বিশ্বস্ত শংসাপত্র রয়েছে

পূর্ববর্তী পদক্ষেপগুলির ফলে কোনও ফাইলে শংসাপত্রের ফল পাওয়া যাবে। আপনার ডোমেনটি অ্যাক্সেস করার সময় আপনার গিটের কাছে দৃশ্যমান ততক্ষণ এটি কোনও ফাইলের বিষয় নয়। আমি ব্যবহার করতাম~/git-certs/cert.pem

দ্রষ্টব্য: আপনার যদি আরও বিশ্বস্ত স্ব-স্বাক্ষরিত শংসাপত্রগুলির প্রয়োজন হয় তবে এগুলি একই ফাইলে রাখুন:

-----BEGIN CERTIFICATE-----
MIIDnzCCAocCBE/xnXAwDQYJKoZIhvcNAQEFBQAwgZMxCzAJBgNVBAYTAkRFMRUw
...........
/27/jIdVQIKvHok2P/u9tvTUQA==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
AnOtHeRtRuStEdCeRtIfIcAtEgOeShErExxxxxxxxxxxxxxxxxxxxxxxxxxxxxxw
...........
/27/jIdVQIKvHok2P/u9tvTUQA==
-----END CERTIFICATE-----

এটি কাজ করবে (তবে আমি এটি কেবলমাত্র একক শংসাপত্র দিয়ে পরীক্ষা করেছি)।

এই শংসাপত্রটি বিশ্বাস করতে গিটটি কনফিগার করুন

$ git config --global http.sslCAInfo /home/javl/git-certs/cert.pem

--systemপরিবর্তে ব্যবহার করে আপনি সেই সিস্টেমটি প্রশস্ত করতে চেষ্টা করতে পারেন --global

এবং এটি পরীক্ষা করুন: আপনি এখন এটিকে অবলম্বন না করেই আপনার সার্ভারের সাথে যোগাযোগ করতে সক্ষম হবেন:

$ git config --global http.sslVerify false #NO NEED TO USE THIS

আপনি যদি ইতিমধ্যে এসএসএল শংসাপত্রগুলি সম্পর্কে অজ্ঞতার দিকে নিজের গিটটি সেট করেন তবে এটি আনসেট করুন:

$ git config --global --unset http.sslVerify

এবং আপনি এটিও পরীক্ষা করতে পারেন যে বানান ত্রুটি না করে আপনি এটি সবই সঠিকভাবে করেছেন:

$ git config --global --list

সমস্ত ভেরিয়েবলের তালিকাভুক্ত হওয়া উচিত, আপনি বিশ্বব্যাপী সেট করেছেন। (আমি HTTP কে ভুলভাবে ভুল করে লিখেছি)।


1
আমি মনে করি যে এই উত্তর গৃহীত উত্তরটির চেয়ে আরও সঠিক এবং সম্পূর্ণ। আপনাকে ধন্যবাদ জান ভ্যালসিনস্কি
আলফ্রেডো

1
এর পরে স্বাভাবিক কর্তৃপক্ষ-স্বাক্ষরিত শংসাপত্রগুলি কাজ করা বন্ধ করে দেয়, তাই আমি গিথুব থেকে উদাহরণ টানতে পারি না। কর্তৃপক্ষের স্বাক্ষরিত শংসাপত্রগুলি বন্ধ না করে কোনও স্ব-স্বাক্ষরিত শংসাপত্র যুক্ত করার কোনও উপায় আছে কি?
মাইকেল আইভকো

4
@ মিশেলআইভকো সমাধান যা এখানে 'সাধারণ কর্তৃপক্ষ-স্বাক্ষরিত শংসাপত্রগুলি' বিবেচনা করে তা বিবেচনা করে (আপনার সার্টিফিকেটটি 'কার্ল-সিএ-বান্ডেল সিআরটি' ফাইলটিতে যুক্ত করতে হবে): ব্লগস.এমএসএন
01/20

3
এই পদ্ধতির সমস্যাটি হ'ল এটি গিটের সাথে আসা সমস্ত ডিফল্ট সিএগুলি কার্যকরভাবে মুছে ফেলে (যেমন এটি করার পরে, আপনি গিথুব থেকে টানতে পারবেন না)। সম্ভবত এটিই সর্বাধিক সন্ধান করছে না। আরও ভাল উদাহরণ হ'ল গিট-বিন \ কার্ল-সিএ-বান্ডেল সিআরটি-র একটি অনুলিপিতে নতুন রুট সিএ যুক্ত করা এবং তারপরে আপনার গিটকনফিগ থেকে কার্ল-সিএ-বান্ডেল সিআরটি-র নতুন অনুলিপিটি উল্লেখ করা।
ক্রিম্বো

3
এটি উইন্ডোতে কাজ করে! বেইস 64 কোডেড X.509 ফাইল (.CER) হিসাবে প্রতিটি শংসাপত্রটি শংসাপত্র-চেইনে রফতানি করুন সমস্ত ফাইল একসাথে রাখুন এবং এই ফাইলটিকে রেফারেন্স করুন। নিশ্চিত হয়ে নিন যে
শংসাপত্রের

3

ওএসএক্স ব্যবহারকারীর সমন্বয়।

ওএসএক্সে কনফিগার করার সময় স্বীকৃত উত্তরের পদক্ষেপগুলি অনুসরণ করা আমার পক্ষে সামান্য সংযোজন নিয়ে কাজ করেছিল।

আমি cert.pemফাইলটিকে আমার ওএসএক্স এর অধীনে লগইন করা ইউজারের অধীনে একটি ডিরেক্টরিতে রেখেছি এবং এই কারণে বিশ্বস্ত শংসাপত্রের জন্য অবস্থানটি সামঞ্জস্য করতে পারি।

এই শংসাপত্রটি বিশ্বাস করতে গিটটি কনফিগার করুন:

$ git config --global http.sslCAInfo $HOME/git-certs/cert.pem
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.