Закрепление SSL-сертификата с помощью libcurl
Я хотел бы знать, достаточно ли этого примера для обеспечения закрепления сертификата с помощью libcurl: http://curl.haxx.se/libcurl/c/cacertinmem.html
потому что я обнаружил, что curl также позволяет http://curl.haxx.se/libcurl/c/CURLOPT_PINNEDPUBLICKEY.html
Поскольку я буду использовать самозаверяющий сертификат и доверяю только ему, я не знаю, действительно ли это необходимо прикреплять.
резюме: Может ли соединение быть скомпрометировано, если я только добавлю свой сертификат (самоподписанный) в хранилище сертификатов x509, как в примере? мне нужно добавить дополнительные проверки? мне нужно использовать опцию CURLOPT_PINNEDPUBLICKEY?
Благодарю.
1 ответ
Другой пример можно найти в реализации новой опции curl в git 2.8 (март 2016 года):
Смотрите коммит aeff8a6 (15 февраля 2016 г.) Кристофа Эггера ( siccegge
)
(Объединено Юнио С Хамано - gitster
- в комитете e79112d, 24 февраля 2016 г.)
http
: реализовать закрепление открытого ключаДобавить
http.pinnedpubkey
опция конфигурации для закрепления открытого ключа. Это позволяет любую строку, поддерживаемуюlibcurl
-base64(sha256(pubkey))
или жеfilename
полного открытого ключа.Если cURL не поддерживает закрепление (слишком старое), выведите предупреждение пользователю.
git config
страница руководства упоминает:
http.pinnedpubkey:
Открытый ключ сервиса https.
Это может быть имя файла открытого ключа в кодировке PEM или DER или строка, начинающаяся с 'sha256//
'затем следует хэш открытого ключа sha256 в кодировке base64. Смотрите также https://curl.haxx.se/libcurl/c/CURLOPT_PINNEDPUBLICKEY.html.
git завершит работу с ошибкой, если эта опция установлена, но не поддерживается cURL.