Не удается установить рубиновые гемы в Mac OS - ошибка SSL_connect
Моя среда - Mac OS 10.10.5, ruby версии 2.2.4 (или 2.2.2 или 2.2.0), gem (после обновления) - 2.6.7, версия rvm 1.27.0.
Это имеет несколько дубликатов даже в последние несколько дней, но это больше информации, чем я могу добавить в комментарии.
При установке любых драгоценных камней на любую версию ruby я получаю следующее:
$ gem install bundler
ERROR: Could not find a valid gem 'bundler' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)
Существует много информации об этом, особенно для проблем в Windows. Увидетьhttp://guides.rubygems.org/ssl-certificate-update/ для предложенного решения. Я следую этому, но продолжаю получать ту же ошибку.
Проблема, кажется, заключается в получении файла GlobalSignRootCA.pem в соответствующем месте, что не совсем понятно. Приведенная выше ссылка объясняет, как найти соответствующий каталог ssl_certs, которых в моей системе 2, но ни один из них не работает.
Я забыл, где я узнал следующее:
$ ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_DIR'
/etc/openssl/certs
$ ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_FILE'
/etc/openssl/cert.pem
который мог бы дать подсказку, но добавление файла .pem к последнему или копирование к первому не имеют никакого эффекта.
Когда я переустанавливаю openssl (homebrew), он услужливо говорит мне:
A CA file has been bootstrapped using certificates from the system
keychain. To add additional certificates, place .pem files in
/usr/local/etc/openssl/certs
and run
/usr/local/opt/openssl/bin/c_rehash
но это также не решает проблему.
Из другого ТАК вопроса:
rvm osx-ssl-certs update all
не работает И не делает:
security find-certificate -a -p /Library/Keychains/System.keychain > "$cert_file"
security find-certificate -a -p /System/Library/Keychains/SystemRootCertificates.keychain >> "$cert_file"
Кто-нибудь знает, как получить представление о том, что ожидает здесь rubygems? Где он хочет этот файл или это даже тот файл, который он хочет? Должен ли я импортировать файл .pem в цепочку ключей OSX? Как это сделать?
Или есть способ получить файл gem и установить его локально? rubygems делает это полезно для самого rubygems, но не для отдельных драгоценных камней из того, что я могу сказать.
- обходной путь
Хорошо - ответ на вопрос, где взять драгоценный камень: перейти кhttps://rubygems.org/gems/[package name]
и выберите версию и перейдите к загрузке - в настоящее время по ссылкам на правой стороне. Загрузите файл иgem install --local [downloaded gem file]
, Плюс все зависимости.
Для автоматизации:
# start by adding insecure source for --explain - thanks to @tnum
gem source -a http://rubygems.org/
while read x
do
wget https://rubygems.org/downloads/$x.gem
gem install --local $x.gem
rm $x.gem
done < <(gem install --explain [package name] | grep "^ ")
# remove insecure source
gem source -r http://rubygems.org/
Некоторая нехватка безопасности может быть смягчена с помощью лучшего регулярного выражения grep, но это все еще небезопасно. Обратите внимание, чтоwget https://
работает так что проблема ssl определенно с rubygems.