2015-12-29 3 views
0

У меня есть собственный репозиторий git, работающий под причалом-9. Я хочу знать, как я могу установить сертификат клиента git, чтобы мой сервер git (сервер причала) мог получить сертификат в запросе сервлета и иметь возможность получить объявление сертификата клиента git для проверки подлинности клиента.Как установить сертификат клиента git для проверки подлинности клиента?

После команды я пытаюсь запустить,

> git -c http.sslcainfo=D:\jetty\punws-sohanba.sigmasys.net.crt -c http.sslCert=D:\jetty\curl-ca-bundle.crt clone "https://punws-sohanba.sigmasys.net:8443/git.ctr-0.0.1-SNAPSHOT/dashboard-portal/.git" 

Где «punws-sohanba.sigmasys.net.crt» мой сервер серт для того, чтобы мерзавец-клиент должен принять самоподписывающиеся сертификаты.

curl-ca-bundle.crt - это набор сертификатов git в глобальной конфигурации git, а также я также пытаюсь установить его через командную строку. (я не уверен, что делаю это правильно). Этот файл curl-ca-bundle.crt также импортируется в файл server.jks в качестве truststore.

На сервере я не в состоянии получить сертификаты, когда я делаю,

X509Certificate[] certs = (X509Certificate[])req.getAttribute("javax.servlet.request.X509Certificate"); 
System.out.println("cert name from git client =========>> " + certs[0].getSubjectDN().getName()); //returns null-pointer here 

I дает следующие ошибки в командной строке:

fatal: unable to access 'https://punws-sohanba.sigmasys.net:8443/git.ctr-0.0.1-SNAPSHOT/dashboard-portal/.git/': unable to set private key file: 'D:\jetty\curl-ca-bundle.crt' type PEM 

Просьба предложить.

+0

Что делать, если вы полностью опустите бит '-c http.sslCert = D: \ jetty \ curl-ca-bundle.crt'? Из вывода 'git help config', похоже, что' http.sslCert' предназначен для установки сертификатов, которые ваш Git-клиент должен * использовать для себя *, а не для проверки своих сверстников. – kostix

+0

Если я опускаю ** http.sslCert **, он грозит смертельным: невозможно получить доступ к 'https://punws-sohanba.sigmasys.net:8443/git.ctr-0.0.1-SNAPSHOT/dashboard-portal/.git/': Неизвестная ошибка протокола SSL в связи с punws-sohanba.sigmasys.net: 8443' ошибка – Sohan

ответ

1

Трудно читать непрерывные строки таким образом, и не совсем ясно, как вы пытаетесь добиться аутентификации с помощью пакета CA в качестве закрытого ключа (который не будет работать - сертификаты CA не имеют частный компонент), можете ли вы выяснить, сколько сертификатов и частных ключей у вас есть?

Вам нужно прочитать некоторые материалы о том, как работает проверка подлинности TLS.

Если вам требуется только грубое направление, для проверки подлинности сверстника (клиента или сервера) ему необходим открытый ключ в сертификате, а также закрытый ключ, а для другой стороны, которому он доверяет, другой стороне будет нужен CA (или сам подписанный сертификат) эмитента как доверенный.

Обычная конфигурация - это сертификат ПЛЮС, закрытый ключ для сертификата для сервера, а также комплект CA или, по крайней мере, единственный CA-эмитента, настроенный в КЛИЕНТЕ в качестве доверенного уточнения.

С идентификацией клиента в дополнение к этому вам понадобится аналогичная конфигурация на стороне клиента: сертификат для клиента ПЛЮС закрытый ключ для него и конфигурация на сервере (или, по крайней мере, один эмитент сертификат на SERVER в качестве доверенного сертификата).

Он не будет работать, если у вас есть только один самозаверяющий сертификат, вам понадобится один (самозаверяющий или выпущенный CA) для сервера и клиента.

Вы не можете просто скопировать часть сертификата с сервера для проверки подлинности клиента. Эта часть достаточна для того, чтобы клиент мог доверять серверу, но без закрытого ключа он не может использоваться для криптографической аутентификации.

Вышеупомянутая командная строка показывает, что вы пытаетесь использовать список открытых сертификатов (пакет CA) в качестве закрытого ключа. У вас есть фактический сертификат с закрытым ключом?

+0

Это часто путается с сертификатами SSL. Я упомянул несколько ссылок и сгенерировал сертификаты. Я не уверен, что они правы. Будет здорово, если вы предоставите несколько шагов для создания сертификатов надлежащим образом, и я могу использовать их на сервере и на стороне клиента. – Sohan

+1

Я решил эту проблему, правильно экспортировав хранилище ключей в .p12, а затем создав файл .crt, используя 'openssl pkcs12 -in keystore.p12 -out client1.crt'. Теперь моя последняя команда выглядит так: 'git -c http.sslcainfo = D: \ jetty \ punws-sohanba.sigmasys.net.crt -c http.sslCert = D: \ jetty \ client1.crt -c http.sslCertPasswordProtected clone "https://punws-sohanba.sigmasys.net:8443/git.ctr-0.0.1-SNAPSHOT/dashboard-portal/.git" ' – Sohan