git - আমি কিভাবে গিট একটি স্ব স্বাক্ষরিত শংসাপত্র গ্রহণ করতে পারি?




version-control https self-signed (10)

আমি এটা পছন্দ করি:

git init
git config --global http.sslVerify false
git clone https://myurl/myrepo.git

গিট ব্যবহার করে, একটি স্ব স্ব স্বাক্ষরিত শংসাপত্র গ্রহণ করতে বলার উপায় আছে?

আমি একটি গিট সার্ভার হোস্ট করার জন্য একটি https সার্ভার ব্যবহার করছি কিন্তু এখন জন্য শংসাপত্র স্বাক্ষরিত হয়।

যখন আমি প্রথমবার সেখানে রেপো তৈরি করার চেষ্টা করি:

git push origin master -f

আমি ত্রুটি পেতে:

error: Cannot access URL     
https://the server/git.aspx/PocketReferences/, return code 22

fatal: git-http-push failed

আপনি যখন এসএসকিকি বা এসএসএলকার্ট ব্যবহার করে এক লাইনার ব্যবহার করছেন তখন সতর্ক হোন, যেমন answer :

git clone -c http.sslCAPath="/path/to/selfCA" \
  -c http.sslCAInfo="/path/to/selfCA/self-signed-certificate.crt" \
  -c http.sslVerify=1 \
  -c http.sslCert="/path/to/privatekey/myprivatecert.pem" \
  -c http.sslCertPasswordProtected=0 \
https://mygit.server.com/projects/myproject.git myproject

শুধুমাত্র গিট 2.14.x / 2.15 (Q3 2015) ~username/mykey সঠিকভাবে একটি পথ ব্যাখ্যা করতে সক্ষম হবে (যদিও এটি এখনও একটি সম্পূর্ণ পথ যেমন /path/to/privatekey ব্যাখ্যা করতে /path/to/privatekey )।

Junio ​​C Hamano ( gitster ) দ্বারা 8d15496 (20 জুলাই 2017) gitster
সাহায্য করেছেন: চার্লস বেইলি ( hashpling )
( জুনিয়ো সি হামানো দ্বারা gitster - gitster - 17 বি 1e1d , 11 আগস্ট 2017)

http.c : http.sslcert এবং http.sslkey উভয় http.sslkey নাম

ফিরে যখন আধুনিক http_options () কোডপ্যাথটি বিভিন্ন http। * বিকল্পগুলি পোর্ট করার জন্য তৈরি হয়েছিল। 29508e1 (" 29508e1 ভাগ করা HTTP অনুরোধ কার্যকারিতা", 2005-11-18, গিট 0.99.9k), এবং তারপরে পরে একাধিক 7059cd9 কনফিগারেশন ফাইলগুলি (" http_init() : কনফিগার ফাইল 7059cd9 ঠিক করুন", 2009-03-09, গিট 1.6.3-রসি 0), আমরা কনফিগারেশন ভেরিয়েবল যেমন http.sslkey , http.sslcert প্লেইন ভ্যানিলা স্ট্রিং হিসাবে পার্স করা হয়েছে, কারণ git_config_pathname() যে বোঝে " ~[username]/ " উপসর্গ বিদ্যমান ছিল না।

পরবর্তীতে, ফাংশনটি ব্যবহার করতে আমরা তাদের কিছু (অর্থাত http.sslCAPath এবং http.sslCAInfo ) রূপান্তর করেছি, এবং শুরু থেকে ফাংশনটি ব্যবহার করতে http.cookeyFile http.pinnedpubkey যুক্ত ভেরিয়েবলগুলি যোগ করেছি। যে কারণে, এই ভেরিয়েবল সব " ~[username]/ " উপসর্গ বুঝতে।

অবশিষ্ট দুটি ভেরিয়েবল, http.sslcert এবং http.sslkey , কনভেনশন সম্পর্কে সচেতন, কারণ তারা উভয় ফাইলগুলিতে স্পষ্টভাবে http.sslkey নাম।


এই উত্তরটি মাইকেল কফম্যানের লেখা এই নিবন্ধ থেকে উদ্ধৃত করা হয়েছে।

একটি কর্পোরেট SSL শংসাপত্রের সাথে উইন্ডোজের জন্য গিট ব্যবহার করুন

ইস্যু :

আপনার যদি একটি কর্পোরেট SSL শংসাপত্র থাকে এবং কনসোল বা VSCode থেকে আপনার রেপো ক্লোন করতে চান তবে আপনি নিম্নলিখিত ত্রুটিটি পান:

মারাত্মক: ' https://myserver/tfs/DefaultCollection/_git/Proj/ ' অ্যাক্সেস করতে অক্ষম: SSL শংসাপত্রের সমস্যা: স্থানীয় ইস্যুকারী সার্টিফিকেট পেতে অক্ষম

সমাধান :

  1. একটি ফাইল রুট স্বাক্ষরিত শংসাপত্র রপ্তানি করুন। আপনি আপনার ব্রাউজারের মধ্যে থেকে এই কাজ করতে পারেন।

  2. আপনার গিট ফোল্ডারে "ca-bundle.crt" ফাইলটি সনাক্ত করুন (বর্তমান সংস্করণ C: \ Program Files \ Git \ usr \ ssl \ certs তবে অতীতে পরিবর্তিত হয়েছে)। ফাইলটি আপনার ব্যবহারকারী প্রোফাইলে অনুলিপি করুন। VSCode মত একটি টেক্সট এডিটর দিয়ে এটি খুলুন এবং ফাইলের শেষে আপনার রপ্তানি সার্টিফিকেট কন্টেন্ট যোগ করুন।

এখন নতুন ফাইলটি ব্যবহার করার জন্য আমাদের গিট কনফিগার করতে হবে:

git config --global http.sslCAInfo C:/Users/<yourname>/ca-bundle.crt

এটি আপনার ব্যবহারকারী প্রোফাইলের রুটটিতে আপনার .gitconfig ফাইলে নিম্নলিখিত এন্ট্রি যোগ করবে।

[http] sslCAInfo = C:/Users/<yourname>/ca-bundle.crt


উইন্ডোজের 64 গিগাবাইট সংস্করণটি ব্যবহার করে, এই ফাইলগুলির মধ্যে স্ব স্বাক্ষরকৃত CA শংসাপত্র যুক্ত করুন:

  • C: \ Program Files \ Git \ mingw64 \ ssl \ certs \ ca-bundle.crt
  • C: \ Program Files \ Git \ mingw64 \ ssl \ certs \ ca-bundle.trust.crt

এটি শুধুমাত্র একটি সার্ভার স্ব স্ব স্বাক্ষরিত শংসাপত্র এটি যোগ করুন

  • সি: \ প্রোগ্রাম ফাইল \ Git \ mingw64 \ ssl \ cert.pem

আমি [সম্পাদনা: বিদ্যমান সংস্করণগুলির আসল সংস্করণগুলির] একটি বিশাল ফ্যান নই, কারণ নিরাপত্তা চেক নিষ্ক্রিয় করা শেষ অবলম্বন হওয়া উচিত নয়, প্রস্তাবিত প্রথম সমাধানটি নয়। যদিও আপনি প্রথম প্রাপ্তি ছাড়া যাচাইয়ের কিছু অতিরিক্ত পদ্ধতি ছাড়াই স্বতঃ স্বাক্ষরিত শংসাপত্রগুলিতে বিশ্বাস করতে পারেন না, পরবর্তী git ক্রিয়াকলাপগুলির জন্য শংসাপত্র ব্যবহার করে অন্তত জীবনকে আক্রমণের জন্য অনেক কঠিন করে তোলে যা আপনি কেবলমাত্র শংসাপত্রটি ডাউনলোড করার পরে ঘটে। অন্য কথায়, যদি আপনি ডাউনলোড করা শংসাপত্রটি প্রকৃত হয় তবে আপনি সেই বিন্দু থেকে পরে ভাল। বিপরীতে, যদি আপনি কেবল যাচাইকরণটি নিষ্ক্রিয় করেন তবে আপনি যে কোনও সময়ে যে কোনও ধরণের ম্যান-ইন-দ্য-মধ্য আক্রমণের জন্য উন্মুক্ত।

একটি নির্দিষ্ট উদাহরণ দিতে: বিখ্যাত repo.or.cz সংগ্রহস্থল একটি স্ব স্বাক্ষরিত সার্টিফিকেট প্রদান করে । আমি যে ফাইলটি ডাউনলোড করতে পারি, এটি কোথাও /etc/ssl/certs , এবং তারপর করুন:

# Initial clone
GIT_SSL_CAINFO=/etc/ssl/certs/rorcz_root_cert.pem \
    git clone https://repo.or.cz/org-mode.git

# Ensure all future interactions with origin remote also work
cd org-mode
git config http.sslCAInfo /etc/ssl/certs/rorcz_root_cert.pem

এখানে স্থানীয় git config ব্যবহার করে (অর্থাৎ --global ছাড়া) মানে এই স্ব স্বাক্ষরিত শংসাপত্রটি শুধুমাত্র এই বিশেষ সংগ্রহস্থলের জন্য বিশ্বস্ত, যা সুন্দর। এটি GIT_SSL_CAPATH ব্যবহার করার চেয়ে আরও সুন্দর, কারণ এটি একটি ভিন্ন শংসাপত্র কর্তৃপক্ষের মাধ্যমে যাচাই করার GIT_SSL_CAPATH ঝুঁকিকে দূর করে, যা সম্ভাব্যভাবে আপোস করা যেতে পারে।


আমি এই সমস্যার মুখোমুখি হতে থাকি, তাই সার্ভার থেকে স্বাক্ষরিত শংসাপত্রটি ডাউনলোড করতে এবং এটি ~ / .gitcerts এ ইনস্টল করার জন্য একটি স্ক্রিপ্ট লিখে রেখেছে, তারপর এই শংসাপত্রগুলিতে নির্দেশ করার জন্য git-config আপডেট করুন। এটি বিশ্বব্যাপী কনফিগারেশনে সংরক্ষণ করা হয়, তাই আপনাকে দূরবর্তী প্রতি একবার এটি চালানোর প্রয়োজন।

https://github.com/iwonbigbro/tools/blob/master/bin/git-remote-install-cert.sh


স্থায়ীভাবে একটি নির্দিষ্ট সার্টিফিকেট গ্রহণ করতে

http.sslCAPath বা http.sslCAInfo । অ্যাডাম স্পিয়ার্স এর উত্তর কিছু মহান উদাহরণ দেয়। এই প্রশ্নের সবচেয়ে নিরাপদ সমাধান।

একক git কমান্ডের জন্য TLS / SSL যাচাইকরণ অক্ষম করতে

সঠিক কনফিগারেশন পরিবর্তনশীলের সাথে git করতে -c পাস করার চেষ্টা করুন, অথবা ফ্লো এর উত্তরটি ব্যবহার করুন:

git -c http.sslVerify=false clone https://example.com/path/to/git

একটি নির্দিষ্ট সংগ্রহস্থল জন্য SSL যাচাই নিষ্ক্রিয় করতে

যদি রিপোজিটরিটি সম্পূর্ণরূপে আপনার নিয়ন্ত্রণে থাকে তবে আপনি চেষ্টা করতে পারেন:

git config http.sslVerify false

বিশ্বব্যাপী টিএলএস (/ SSL) সার্টিফিকেট যাচাই নিষ্ক্রিয় করা একটি ভয়ঙ্কর অনিরাপদ অনুশীলন। এটা করবেন না। একটি --global মডিফায়ারের সাথে উপরের কমান্ডটি ইস্যু করবেন না।

git মধ্যে বেশ কয়েকটি SSL কনফিগারেশন অপশন আছে। git config ম্যান পৃষ্ঠা থেকে:

http.sslVerify
    Whether to verify the SSL certificate when fetching or pushing over HTTPS.
    Can be overridden by the GIT_SSL_NO_VERIFY environment variable.

http.sslCAInfo
    File containing the certificates to verify the peer with when fetching or pushing
    over HTTPS. Can be overridden by the GIT_SSL_CAINFO environment variable.

http.sslCAPath
    Path containing files with the CA certificates to verify the peer with when
    fetching or pushing over HTTPS.
    Can be overridden by the GIT_SSL_CAPATH environment variable.

কিছু অন্যান্য দরকারী SSL কনফিগারেশন অপশন:

http.sslCert
    File containing the SSL certificate when fetching or pushing over HTTPS.
    Can be overridden by the GIT_SSL_CERT environment variable.

http.sslKey
    File containing the SSL private key when fetching or pushing over HTTPS.
    Can be overridden by the GIT_SSL_KEY environment variable.

http.sslCertPasswordProtected
    Enable git's password prompt for the SSL certificate. Otherwise OpenSSL will
    prompt the user, possibly many times, if the certificate or private key is encrypted.
    Can be overridden by the GIT_SSL_CERT_PASSWORD_PROTECTED environment variable.

স্বাক্ষরিত সার্টিফিকেট কর্তৃপক্ষের জন্য গ্লোবাল। জিটি কনফিগার

আমার নিজের এবং আমার সহকর্মীদের জন্য এখানে আমরা sslVerify নিষ্ক্রিয় না করে কাজ করতে স্বাক্ষরিত শংসাপত্রগুলি কীভাবে পরিচালনা করতে sslVerifygit config --global -e ব্যবহার করতে আপনার .gitconfig সম্পাদনা করুন - .gitconfig git config --global -e যোগ করুন:

# Specify the scheme and host as a 'context' that only these settings apply
# Must use Git v1.8.5+ for these contexts to work
[credential "https://your.domain.com"]
  username = user.name

  # Uncomment the credential helper that applies to your platform
  # Windows
  # helper = manager

  # OSX
  # helper = osxkeychain

  # Linux (in-memory credential helper)
  # helper = cache

  # Linux (permanent storage credential helper)
  # https://askubuntu.com/a/776335/491772

# Specify the scheme and host as a 'context' that only these settings apply 
# Must use Git v1.8.5+ for these contexts to work
[http "https://your.domain.com"]
  ##################################
  # Self Signed Server Certificate #
  ##################################

  # MUST be PEM format
  # Some situations require both the CAPath AND CAInfo 
  sslCAInfo = /path/to/selfCA/self-signed-certificate.crt
  sslCAPath = /path/to/selfCA/
  sslVerify = true

  ###########################################
  # Private Key and Certificate information #
  ###########################################

  # Must be PEM format and include BEGIN CERTIFICATE / END CERTIFICATE, 
  # not just the BEGIN PRIVATE KEY / END PRIVATE KEY for Git to recognise it.
  sslCert = /path/to/privatekey/myprivatecert.pem

  # Even if your PEM file is password protected, set this to false.
  # Setting this to true always asks for a password even if you don't have one.
  # When you do have a password, even with this set to false it will prompt anyhow. 
  sslCertPasswordProtected = 0

তথ্যসূত্র:

git clone জিট করলে git clone

প্রতি git config --local ভিত্তিতে এটি প্রয়োগ করার প্রয়োজন হলে, ডকুমেন্টেশন আপনাকে আপনার git config --local ডিরেক্টরিতে git config --local চালাতে বলে। যদি আপনি স্থানীয়ভাবে ক্লোনের পুনঃ ক্লোন না পেয়ে থাকেন তবে এটি কি দরকারী নয়?

আপনি গ্লোবাল কনফিগারেশনটি নিজের গ্লোবাল কনফিগারেশনের উপরে উপরে সেট করে global -> local হকি-পোকেই করতে পারেন এবং তারপরে এটি ক্লোনগুলি একবারে স্থানীয় সেটিংস প্রতিলিপিতে কপি করুন ...

অথবা আপনি যা করতে পারেন তা git clone করা একবার লক্ষ্য রেপোতে প্রয়োগ করা যে git clonegit clone কমান্ড উল্লেখ করা হয়।

# Declare variables to make clone command less verbose     
OUR_CA_PATH=/path/to/selfCA/
OUR_CA_FILE=$OUR_CA_PATH/self-signed-certificate.crt
MY_PEM_FILE=/path/to/privatekey/myprivatecert.pem
SELF_SIGN_CONFIG="-c http.sslCAPath=$OUR_CA_PATH -c http.sslCAInfo=$OUR_CA_FILE -c http.sslVerify=1 -c http.sslCert=$MY_PEM_FILE -c http.sslCertPasswordProtected=0"

# With this environment variable defined it makes subsequent clones easier if you need to pull down multiple repos.
git clone $SELF_SIGN_CONFIG https://mygit.server.com/projects/myproject.git myproject/

এক রৈখিক

সম্পাদনা করুন: VonC এর answer যা 2.14.x / 2.15 থেকে নির্দিষ্ট গিট সংস্করণগুলির জন্য পরম এবং আপেক্ষিক পাথ সম্পর্কে একটি সতর্কতা নির্দেশ করে

git clone -c http.sslCAPath="/path/to/selfCA" -c http.sslCAInfo="/path/to/selfCA/self-signed-certificate.crt" -c http.sslVerify=1 -c http.sslCert="/path/to/privatekey/myprivatecert.pem" -c http.sslCertPasswordProtected=0 https://mygit.server.com/projects/myproject.git myproject/

CentOS unable to load client key

আপনি CentOS এবং আপনার .pem ফাইলে এটি করার চেষ্টা করছেন যদি আপনি

unable to load client key: "-8178 (SEC_ERROR_BAD_KEY)"

তারপর আপনি এই স্ট্যাক ওভারফ্লো উত্তরটি কীভাবে ক্রলটি SSL খুলুন পরিবর্তে NSS ব্যবহার করে তা জানতে চান।

এবং আপনি উৎস থেকে curl পুনঃনির্মাণ করতে চান:

git clone http://github.com/curl/curl.git curl/
cd curl/
# Need these for ./buildconf
yum install autoconf automake libtool m4 nroff perl -y
#Need these for ./configure
yum install openssl-devel openldap-devel libssh2-devel -y

./buildconf
su # Switch to super user to install into /usr/bin/curl
./configure --with-openssl --with-ldap --with-libssh2 --prefix=/usr/
make
make install

libcurl এখনও ভাগ করা লাইব্রেরি হিসাবে মেমরির মধ্যে কম্পিউটার পুনরায় আরম্ভ করুন

পাইথন, পিপ এবং conda

সম্পর্কিত : উইন্ডোজ এর পাইথন দ্বারা ব্যবহৃত CA স্টোরে একটি কাস্টম CA রুট শংসাপত্র কীভাবে যুক্ত করবেন?


আপনার অ্যান্টিভাইরাস এবং ফায়ারওয়াল সেটিংস চেক করুন।

একদিন থেকে অন্য দিকে, গিট আর কাজ করে নি। উপরে বর্ণনা করা হয়েছে কি, আমি পাওয়া যায় যে Kaspersky মাঝখানে একটি স্ব স্বাক্ষর এন্টি ভাইরাস ব্যক্তিগত মূল সার্টিফিকেট রাখে। আমি Git উপরে নির্দেশাবলী অনুসরণ করে যে শংসাপত্র গ্রহণ করার অনুমতি দেওয়া হয়নি। আমি যে ছেড়ে দেওয়া। আমার জন্য কি কাজ এনক্রিপ্ট সংযোগ স্ক্যান স্ক্যান বৈশিষ্ট্য নিষ্ক্রিয় করা হয়।

  1. ক্যাস্পারস্কি খুলুন
  2. সেটিংস> অতিরিক্ত> নেটওয়ার্ক> এনক্রিপ্টযুক্ত সংযোগ স্ক্যান করবেন না

এই পরে, Git sslVerify সক্রিয় সঙ্গে আবার কাজ করে।

বিঃদ্রঃ. এটি এখনও আমার জন্য সন্তুষ্ট নয়, কারণ আমার এন্টি ভাইরাস সক্রিয় করার বৈশিষ্ট্যটি আমি চাই। উন্নত সেটিংসে, ক্যাস্পারস্কি সেই ওয়েবসাইটগুলির তালিকা দেখায় যা সেই বৈশিষ্ট্যটির সাথে কাজ করবে না। Github তাদের মধ্যে একটি হিসাবে তালিকাভুক্ত করা হয় না। আমি ক্যাস্পারস্কি ফোরামে এটি পরীক্ষা করব। কিছু বিষয় বলে মনে হচ্ছে, যেমন https://forum.kaspersky.com/index.php?/topic/395220-kis-interfering-with-git/&tab=comments#comment-2801211


পূর্ববর্তী প্রতিশ্রুতি থেকে HEAD এ পরিবর্তনগুলি রাখা এবং পূর্ববর্তী কমিটিতে যাওয়ার জন্য, তা করুন:

git reset <SHA>

যদি পূর্ববর্তী কমিটি থেকে HEAD এ পরিবর্তনগুলি প্রয়োজন হয় না এবং কেবলমাত্র সমস্ত পরিবর্তন বাতিল করা হয় তবে তা করুন:

git reset --hard <SHA>




git version-control https self-signed