У меня есть сервер Bitbucket, работающий onprem с сертификатом. Я добавил его в хранилище ключей, используя следующие команды
openssl pkcs12 -export -in myurl.com.cer -inkey myurl.com.key -out myurl.com.p12
keytool -importkeystore -srckeystore myurl.com.p12 -srcstoretype PKCS12 -destkeystore bitbucket.jks -deststoretype JKS
Это выглядит так, если я просматриваю сервер в Chrome (что выглядит хорошо):
Когда я пытаюсь клонировать репозиторий с сервера, я получаю следующую ошибку
root@BS01:~# git clone https://source.server.com/scm/p/project.git
Cloning into 'project'...
фатальный: невозможно получить доступ 'https://source.server.com/scm/p/project.git': проверка сертификата сервера не удалась. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: нет
В Windows ошибка выглядит немного иначе:
фатальный: невозможно получить доступ 'https://source.server.com/scm/p/project.git/': Проблема с сертификатом SSL: невозможно получить сертификат местного эмитента
Когда я искал эту ошибку в Google, многие решения предполагают, что мне нужно использовать сертификат CA вместо самоподписанного (возможно, я ошибся в концепции, но я думал, что сертификат является сертификатом CA) или полностью отключить sslVerificaction (что неприемлемо ) Какая проблема у git с сертификатом и как это исправить?
На самом деле сертификат подходит только для моего компьютера, мобильные устройства не доверяют ему - если я объединю всю цепочку доверия в один файл .pem, который выглядит следующим образом:
-----BEGIN RSA PRIVATE KEY-----
KEY FROM domain.key
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
domain.crt
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Intermediate.crt
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
Root.crt
-----END CERTIFICATE-----
И добавьте этот в jks, он работает как положено.
openssl pkcs12 -export -in server.pem \
-out server.p12 -name tomcat
keytool -importkeystore -srckeystore server.p12 \
-srcstoretype pkcs12 -destkeystore bitbucket.jks -deststoretype JKS