Clase: Mongo::Socket::OcspVerifier Privado

Hereda:
Objeto
  • Objeto
Mostrar todo
Incluye:
Registrable
Definido en:
lib/mongo/socket/ocsp_verifier.rb

Overview

Esta clase forma parte de una API privada. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.

Verificador de puntos finales OCSP.

Una vez establecida una conexión TLS, este verificador inspecciona el certificado presentado por el servidor y, si el certificado contiene una URI OCSP, realiza la solicitud de estado OCSP a la URI especificada (siguiendo hasta 5 redirecciones) para verificar el estado del certificado.

Resumen constante

Constantes incluidas desde Loggable

Registrable::PREFIX

Colapso delresumen de atributos de instancia

Colapso del resumen del método de instancia

Métodos incluidos en Loggable

#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger

Detalles del constructor

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

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve una nueva instancia de OcspVerifier.

Parámetros:

  • nombre_de_host (Cadena) -

    El nombre del host que se está verificando para la salida de diagnóstico.

  • certificado (OpenSSL::X::Certificado509 )

    El certificado presentado por el servidor en host_name.

  • certificado ca (OpenSSL::X::Certificado509 )

    El certificado CA presentado por el servidor o resuelto localmente desde el certificado del servidor.

  • cert_store 509(OpenSSL::X::Store)

    El almacén de certificados que se usará para verificar la respuesta de OCSP. Debe ser el mismo almacén que se usa en SSLContext con el SSLSocket para el que se verifica el certificado. NO debe ser el certificado de CA proporcionado por el servidor (es decir, cualquier certificado extraído de peer_cert); de lo contrario, el servidor determinaría en qué autoridades de CA confía el cliente.

Desde:

  • 2.0.0



51
52
53
54
55
56
57
# Archivo 'lib/mongo/socket/ocsp_verifier.rb', línea 51

def inicializar(nombre_de_host, certificado, certificado ca, cert_store, **opta)
  @nombre_de_host = nombre_de_host
  @cert = certificado
  @ca_cert = certificado ca
  @cert_store = cert_store
  @opciones = opta
end

Detalles de los atributos de instancia

#ca_certObjeto (solo lectura)

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Desde:

  • 2.0.0



61
62
63
# Archivo 'lib/mongo/socket/ocsp_verifier.rb', línea 61

def certificado ca
  @ca_cert
end

#certObjeto (solo lectura)

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Desde:

  • 2.0.0



60
61
62
# Archivo 'lib/mongo/socket/ocsp_verifier.rb', línea 60

def certificado
  @cert
end

#cert_storeObjeto (solo lectura)

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Desde:

  • 2.0.0



62
63
64
# Archivo 'lib/mongo/socket/ocsp_verifier.rb', línea 62

def cert_store
  @cert_store
end

#host_nameObjeto (solo lectura)

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Desde:

  • 2.0.0



59
60
61
# Archivo 'lib/mongo/socket/ocsp_verifier.rb', línea 59

def nombre_de_host
  @nombre_de_host
end

#opcionesObjeto (solo lectura)

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Desde:

  • 2.0.0



63
64
65
# Archivo 'lib/mongo/socket/ocsp_verifier.rb', línea 63

def opciones
  @opciones
end

Detalles del método de instancia

#cert_idObjeto

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Desde:

  • 2.0.0



91
92
93
94
95
96
97
# Archivo 'lib/mongo/socket/ocsp_verifier.rb', línea 91

def cert_id
  @cert_id ||= OpenSSL::OCSP::CertificateId.Nuevo(
    certificado,
    certificado ca,
    OpenSSL::Resumen::SHA1.Nuevo,
  )
end

#ocsp_urisArray<String>

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve las URI de OCSP en el certificado de servidor especificado.

Devuelve:

  • (Matriz<String>)

    URI de OCSP en el 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
# Archivo 'lib/mongo/socket/ocsp_verifier.rb', línea 70

def ocsp_uris
  @ocsp_uris ||= begin
    # https://tools.ietf.org/html/rfc3546#section-2.3
    # prohíbe múltiples extensiones con el mismo oid.
    ext = certificado.extensiones.detectar hacer |ext|
      ext.oid == 'Acceso a información de autoridad'
    end

    Si ext
      # Nuestros certificados de prueba tienen múltiples URI OCSP.
      ext.valor.división("\n").Seleccione hacer |línea|
        línea.empezar_con?('OCSP - URI:')
      end.map hacer |línea|
        línea.división(':', 2).última
      end
    else
      []
    end
  end
end

#tiempo de esperaObjeto

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Desde:

  • 2.0.0



65
66
67
# Archivo 'lib/mongo/socket/ocsp_verifier.rb', línea 65

def tiempo de espera
  opciones[:timeout] || 5
end

#verificarverdadero | falso

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve si el certificado fue verificado.

Devuelve:

  • (verdadero | falso)

    Si el certificado fue verificado.

Aumentos:

  • (Error::Certificadode servidor revocado)

    Si el certificado fue revocado definitivamente.

Desde:

  • 2.0.0



122
123
124
125
126
127
128
129
# Archivo 'lib/mongo/socket/ocsp_verifier.rb', línea 122

def verificar
  manejar_excepciones hacer
    return false Si ocsp_uris.¿vacío?

    resp, errors = do_verify
    respuesta_ocsp_de_retorno(resp, errors)
  end
end

#verificar_con_cacheObjeto

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Desde:

  • 2.0.0



99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# Archivo 'lib/mongo/socket/ocsp_verifier.rb', línea 99

def verificar_con_caché
  manejar_excepciones hacer
    return false Si ocsp_uris.¿vacío?

    resp = OcspCache.Obtener(cert_id)
    Si resp
      return respuesta_ocsp_de_retorno(resp)
    end

    resp, errors = do_verify

    Si resp
      OcspCache.conjunto(cert_id, resp)
    end

    respuesta_ocsp_de_retorno(resp, errors)
  end
end