Сервер Ruby Webrick не может проверить сертификат клиента - PullRequest
0 голосов
/ 02 января 2019

Я запускаю веб-приложение на основе sinatra, используя Webrick.Я смог настроить TLS, используя свои самозаверяющие серверные сертификаты, и вебрик запускается в режиме TLS, но я не могу установить соединение с сервером с помощью клиентского сертификата (проверка подлинности на основе сертификатов).

В журналах сервера указано « ОШИБКА OpenSSL :: SSL :: SSLError: возвращено SSL_accept = 1 errno = 0 состояние = ошибка: сбой проверки сертификата "

Но те же сертификаты(и сервер, и клиент) работают с сервером Apache.

def self.run!
    server_options = {
      :Host => '0.0.0.0',
      :Port => 33443,
      :SSLEnable => true,
      :SSLVerifyClient    => OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT | OpenSSL::SSL::VERIFY_PEER,
      :SSLVerifyDepth => 3,
      :SSLCertificate => OpenSSL::X509::Certificate.new(File.open('/Users/cert.pem').read),
      :SSLPrivateKey => OpenSSL::PKey::RSA.new(File.open('/Users/key.pem').read),
      :SSLClientCA => OpenSSL::X509::Certificate.new(File.open('/Users/cai.cer').read)
  }

  Rack::Handler::WEBrick.run self, server_options do |server|
    [:INT, :TERM].each { |sig| trap(sig) { server.stop } }
    server.threaded = settings.threaded if server.respond_to? :threaded=
    set :running, true
  end
end
...