Как добавить Root CA Cert для Ruby на Mac - PullRequest
0 голосов
/ 26 мая 2018

Я пытаюсь найти ответ на несколько простых вопросов.

  1. Какие сертификаты использует Ruby при работе с SSL?(Я предполагаю, что это относится и к gem)
  2. Как добавить корневой сертификат в доверенный набор сертификатов CA.
  3. Есть ли лучшие практики для этого?Где это задокументировано?

Справочная информация

Я использую mac (в настоящее время Sierra) и rbenv / ruby-build для установки рубинов.Мы создали внутренний репозиторий rubygems, используя Sonatype Nexus.Сертификат сервера подписан внутренним корневым сертификатом компании, копия которого у меня есть.

Как только я попытался добавить наш репозиторий в качестве источника

gem sources --add https://our.repository.com/bla/bla

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

Очевидно, я смогу использовать его, если я установлю переменную окружения SSL_CERT_FILE=/path/to/root_cert.pem.Но я бы предпочел разместить файл сертификата в надежном месте и позволить ему работать прозрачно, как в случае хранилищ доверия Java.

1 Ответ

0 голосов
/ 26 мая 2018

Из некоторых исследований и экспериментов я понял следующие замечания.(Я рекомендую сделать brew info openssl для этой информации):

  • Ruby использует систему OpenSSL
  • Последние версии OS X не обновляют openssl, так как OS X теперь выкатывает егособственные библиотеки TLS и шифрования
  • Нужно перефразировать файл CA, используемый openssl

Взгляните на интересную часть вывода homebrew относительно openssl:

$ brew info openssl
...
A CA file has been bootstrapped using certificates from the SystemRoots
keychain. To add additional certificates (e.g. the certificates added in
the System keychain), place .pem files in
  /usr/local/etc/openssl/certs

and run
  /usr/local/opt/openssl/bin/c_rehash

This formula is keg-only, which means it was not symlinked into /usr/local,
because Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries.
...

Итак, все, что мне нужно было сделать, это следующее, и все проблемы с SSL исчезли для Ruby:

cp /path/to/my/root_certificate.pem /usr/local/etc/openssl/certs
/usr/local/opt/openssl/bin/c_rehash

Надеюсь, что это поможет другим

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...