TLDR:
hostname=XXX
port=443
trust_cert_file_location=`curl-config --ca`
sudo bash -c "echo -n | openssl s_client -showcerts -connect $hostname:$port -servername $hostname \
2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' \
>> $trust_cert_file_location"
Jawaban panjang
Alasan dasarnya adalah bahwa komputer Anda tidak mempercayai otoritas sertifikat yang menandatangani sertifikat yang digunakan di server Gitlab . Ini tidak berarti sertifikat mencurigakan, tetapi dapat ditandatangani sendiri atau ditandatangani oleh lembaga / perusahaan yang tidak ada dalam daftar CA OS Anda. Apa yang harus Anda lakukan untuk menghindari masalah di komputer adalah mengatakannya untuk memercayai sertifikat itu - jika Anda tidak punya alasan untuk curiga tentang hal itu.
Anda perlu memeriksa sertifikat web yang digunakan untuk server gitLab Anda, dan menambahkannya ke </git_installation_folder>/bin/curl-ca-bundle.crt
.
Untuk memeriksa apakah setidaknya klon bekerja tanpa memeriksa sertifikat tersebut, Anda dapat mengatur:
export GIT_SSL_NO_VERIFY=1
#or
git config --global http.sslverify false
Tapi itu hanya untuk pengujian, seperti yang diilustrasikan dalam " SSL berfungsi dengan browser, wget, dan curl, tetapi gagal dengan git ", atau dalam posting blog ini .
Periksa pengaturan GitLab Anda, dalam edisi 4272 .
Untuk mendapatkan sertifikat itu (yang perlu Anda tambahkan ke curl-ca-bundle.crt
file Anda ), ketikkan:
echo -n | openssl s_client -showcerts -connect yourserver.com:YourHttpsGitlabPort \
2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
(dengan ' yourserver.com
menjadi nama server GitLab Anda, dan biasanya YourHttpsGitlabPort
adalah port https 443
)
Untuk memeriksa CA (penerbit Otoritas Sertifikat), ketik a:
echo -n | openssl s_client -showcerts -connect yourserver.com:YourHttpsGilabPort \
2>/dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' \
| openssl x509 -noout -text | grep "CA Issuers" | head -1
Catatan: Valeriy Katkov menyarankan dalam komentar untuk menambahkan -servername
opsi ke perintah openssl, jika tidak, perintah tersebut tidak menunjukkan sertifikat untuk www.github.com dalam kasus Valeriy.
openssl s_client -showcerts -servername www.github.com -connect www.github.com:443
Findekano menambahkan dalam komentar :
untuk mengidentifikasi lokasi curl-ca-bundle.crt
, Anda dapat menggunakan perintah
curl-config --ca
Juga, lihat jawaban saya yang lebih baru " github: verifikasi sertifikat server gagal ": Anda mungkin harus memperbarui semua sertifikat itu:
sudo apt-get install --reinstall ca-certificates
sudo mkdir /usr/local/share/ca-certificates/cacert.org
sudo wget -P /usr/local/share/ca-certificates/cacert.org http://www.cacert.org/certs/root.crt http://www.cacert.org/certs/class3.crt
sudo update-ca-certificates
git config --global http.sslCAinfo /etc/ssl/certs/ca-certificates.crt
curl-config --ca
dikembalikan/etc/ssl/certs/ca-certificates.crt
, di situlah saya harus menambahkan sertifikat. Terlepas dari itu, jawaban ini adalah informasi pertama yang menunjukkan saya ke arah yang benar dengan masalah ini