Cấu hình chứng chỉ tự ký Git
tl; dr
KHÔNG BAO GIỜ vô hiệu hóa tất cả xác minh SSL!
Điều này tạo ra một văn hóa bảo mật xấu. Đừng là người đó.
Các khóa cấu hình bạn đang theo sau là:
Đây là để cấu hình chứng chỉ máy chủ mà bạn tin tưởng
Đây là để cấu hình chứng chỉ CỦA BẠN để đáp ứng với các thách thức SSL.
Chọn lọc áp dụng các cài đặt trên cho các máy chủ cụ thể.
Toàn cầu .gitconfig
cho các cơ quan cấp chứng chỉ tự ký
Vì lợi ích của riêng tôi và đồng nghiệp của tôi, đây là cách chúng tôi quản lý để có được chứng chỉ tự ký để làm việc mà không vô hiệu hóa sslVerify
. Chỉnh sửa của bạn.gitconfig
để sử dụng git config --global -e
thêm:
# 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
Người giới thiệu:
Chỉ định cấu hình khi git clone
-ing
Nếu bạn cần áp dụng nó trên cơ sở mỗi repo, tài liệu sẽ cho bạn biết chỉ cần chạy git config --local
trong thư mục repo của bạn. Chà điều đó không hữu ích khi bạn chưa có repo nhân bản tại địa phương bây giờ phải không?
Bạn có thể thực hiện global -> local
hokey-pokey bằng cách đặt cấu hình toàn cầu của mình như trên và sau đó sao chép các cài đặt đó sang cấu hình repo cục bộ của bạn sau khi sao chép ...
HOẶC những gì bạn có thể làm là chỉ định các lệnh cấu hình tạigit clone
đó được áp dụng cho repo đích sau khi được sao chép.
# 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/
Lót
EDIT: Xem câu trả lời của VonC chỉ ra một cảnh báo về các đường dẫn tuyệt đối và tương đối cho các phiên bản git cụ thể từ 2.14.x / 2.15 đến một lớp lót này
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
Nếu bạn đang thử điều này trên CentOS và .pem
tệp của bạn sẽ cung cấp cho bạn
unable to load client key: "-8178 (SEC_ERROR_BAD_KEY)"
Sau đó, bạn sẽ muốn câu trả lời StackOverflow này về cách curl
sử dụng NSS thay vì Open SSL.
Và bạn sẽ muốn xây dựng lại curl
từ nguồn :
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
khởi động lại máy tính vì libcurl vẫn còn trong bộ nhớ dưới dạng thư viện dùng chung
Python, pip và conda
Liên quan : Làm cách nào để thêm chứng chỉ CA Root tùy chỉnh vào CA Store được sử dụng bởi pip trong Windows?