Как я могу преобразовать эту команду openssl в ruby? - PullRequest
1 голос
/ 09 марта 2020

Я пытаюсь преобразовать эту команду в ruby код, используя OpenSSL:

openssl s_client -verify_hostname www.example.com -connect example.com:443

Я собрал воедино, что openssl имеет метод verify_hostname, но я не думаю, что я использую это правильно , Контекстуально у меня проблема с проверкой поля SAN домена. Для данного домена я получаю неправильные результаты. Я предоставляю домен, который явно не соответствует названию. Я получаю verify_result код 0, что нормально. Команда выше дает мне правильную информацию, но я не могу заставить ее перевести в ruby. Есть ли онлайн-инструмент, который может преобразовать это для меня?

1 Ответ

0 голосов
/ 11 марта 2020

-verify_hostname - это параметр, а s_client - это имя метода в вашей команде. Проверьте вывод openssl s_client --help, чтобы получить больше информации. OpenSSL gem имеет метод verify_hostname , но его исходный код выглядит так, как будто он проверяет только правильность предоставленных строк, он не вызывает предоставленный хост.

Все клиенты http по умолчанию выполнит для вас проверку SSL (если вы ее не отключите):

require "net/http"

begin
  Net::HTTP.get(URI("https://expired.badssl.com"))
rescue OpenSSL::SSL::SSLError
  puts "bad ssl cert"
end

Если вы хотите точно указать, что ваша команда делает, вам, вероятно, сначала нужно скачать сертификат хоста и затем создайте его экземпляр с помощью OpenSSL::X509::Certificate.new, проверьте его с помощью метода check_validity .

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