Classe: Mongo::Socket::OcspVerifier Private

Herda:
Objeto
  • Objeto
mostrar tudo
Inclui:
Logável
Definido em:
build/ruby-driver-v2.19/lib/mongo/socket/ocsp_verifier.rb

Visão geral

Esta classe faz parte de uma API privada. Evite usar essa classe, se possível, pois ela pode ser removida ou alterada no futuro.

Verificador de endpoint OCSP.

Depois que uma conexão TLS é estabelecida, esse verificador inspeciona o certificado apresentado pelo servidor e, se o certificado contiver um URI OCSP, executa a solicitação de status OCSP para o URI especificado (seguindo até 5 redirecionamentos) para verificar o status do certificado.

Resumo constante

Constantes incluídas do Loggable

Loggable::Prefix

Recolhimento do Resumo do atributo de instância

Recolhimento do Resumo do método de instância

Métodos incluídos no Loggable

#log_debug, #log_error, #log_fatal, #log_info, #log_WARN, #logger

Detalhes do construtor

#initialize(host_name, cert, ca_cert, cert_store, **opts) ➤ OcspVerifier

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna uma nova instância do OcspVerifier.

Parâmetros:

  • host_name (string)

    O nome do host que está sendo verificado, para saída de diagnóstico.

  • cert (OpenSSL::X509::Certificate)

    O certificado apresentado pelo servidor em host_name.

  • ca_cert (OpenSSL::X509::Certificate)

    O certificado CA apresentado pelo servidor ou resolvido localmente a partir do certificado do servidor.

  • cert_store (OpenSSL::X509::Store)

    O armazenamento de certificados a ser usado para verificar a resposta do OCSP. Este deve ser o mesmo armazenamento usado no SSLContext usado com o SSLSocket para o qual estamos verificando o certificado. Este NÃO deve ser o certificado CA fornecido pelo servidor (ou seja, qualquer coisa retirada de peer_cert) - caso contrário, o servidor ditaria em quais autoridades de CA o cliente confia.

Desde:

  • 2.0.0



51
52
53
54
55
56
57
# File 'build/ruby-driver-v2.19/lib/mongo/socket/ocsp_verifier.rb', linha 51

def inicializar(host_name, cert, ca_cert, cert_store, **opciona)
  @host_name = host_name
  @cert = cert
  @ca_cert = ca_cert
  @cert_store = cert_store
  @opções = opciona
end

Detalhes do atributo da instância

#ca_cert ➤ Objeto (somente leitura)

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Desde:

  • 2.0.0



61
62
63
# File 'build/ruby-driver-v2.19/lib/mongo/socket/ocsp_verifier.rb', linha 61

def ca_cert
  @ca_cert
end

#certObject (somente leitura)

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Desde:

  • 2.0.0



60
61
62
# File 'build/ruby-driver-v2.19/lib/mongo/socket/ocsp_verifier.rb', linha 60

def cert
  @cert
end

#cert_store ➤ Objeto (somente leitura)

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Desde:

  • 2.0.0



62
63
64
# File 'build/ruby-driver-v2.19/lib/mongo/socket/ocsp_verifier.rb', linha 62

def cert_store
  @cert_store
end

#host_nameObject (somente leitura)

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Desde:

  • 2.0.0



59
60
61
# File 'build/ruby-driver-v2.19/lib/mongo/socket/ocsp_verifier.rb', linha 59

def host_name
  @host_name
end

#opções Objeto (somente leitura)

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Desde:

  • 2.0.0



63
64
65
# File 'build/ruby-driver-v2.19/lib/mongo/socket/ocsp_verifier.rb', linha 63

def opções
  @opções
end

Detalhes do método de instância

#cert_id ➤ Objeto

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Desde:

  • 2.0.0



91
92
93
94
95
96
97
# File 'build/ruby-driver-v2.19/lib/mongo/socket/ocsp_verifier.rb', linha 91

def cert_id
  @cert_id ||= OpenSSL::OCSP::CertificateId.Novo(
    cert,
    ca_cert,
    OpenSSL::Digest::SHA1.Novo,
  )
end

#ocsp_uris ➤ Array<String>

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna URIs OCSP no certificado de servidor especificado.

Retorna:

  • (Array<String>)

    URIs de OCSP no certificado de servidor especificado.

Desde:

  • 2.0.0



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'build/ruby-driver-v2.19/lib/mongo/socket/ocsp_verifier.rb', linha 70

def ocsp_uris
  @ocsp_uris ||= começar
    # https://tools.ietf.org/html/rfc3546#section-2.3
    # proíbe várias extensões com o mesmo oid.
    ext = cert.Extensões.detectar fazer |ext|
      ext.vazio == 'AuthorityInfoAccess'
    end

    se ext
      # Nossos certificados de teste têm vários URIs OCSP.
      ext.valor.dividir("\n").selecione fazer |linha|
        linha.start_with?('OCSP - URI:')
      end.map fazer |linha|
        linha.dividir(':', 2).último
      end
    mais
      []
    end
  end
end

#timeoutObject

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Desde:

  • 2.0.0



65
66
67
# File 'build/ruby-driver-v2.19/lib/mongo/socket/ocsp_verifier.rb', linha 65

def timeout
  opções[:timeout] || 5
end

#verifytrue | false

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna se o certificado foi verificado.

Retorna:

  • (verdadeiro | falso)

    Se o certificado foi verificado.

Aumenta:

Desde:

  • 2.0.0



122
123
124
125
126
127
128
129
# File 'build/ruby-driver-v2.19/lib/mongo/socket/ocsp_verifier.rb', linha 122

def verificar
  handle_Exceptions fazer
    Método false se ocsp_uris.vazio?

    res, errors = do_verify
    return_ocsp_response(res, errors)
  end
end

#verify_with_cache ➤ Objeto

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Desde:

  • 2.0.0



99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'build/ruby-driver-v2.19/lib/mongo/socket/ocsp_verifier.rb', linha 99

def verify_with_cache
  handle_Exceptions fazer
    Método false se ocsp_uris.vazio?

    res = OcspCache.obter(cert_id)
    se res
      Método return_ocsp_response(res)
    end

    res, errors = do_verify

    se res
      OcspCache.set(cert_id, res)
    end

    return_ocsp_response(res, errors)
  end
end