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. Evita usar esta clase si es posible, ya que puede ser eliminada o modificada en el futuro.

Verificador de endpoint OCSP.

Después de establecer una conexión TLS, este verificador inspecciona el certificado presentado por el servidor y, si el certificado contiene un URI OCSP, realiza la solicitud de estado OCSP en el URI especificado (siguiendo hasta 5 redirecciones) para verificar el estado del certificado.

Definido bajo Namespace

clase: Respuesta

Resumen constante

Constantes incluidas desde Loggable

Loggable::PREFIX

Resumen de atributos de la instancia colapsar

Resumen del método de instancia colapsar

Métodos incluidos desde Registrable

#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 es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve una nueva instancia de OcspVerifier.

Parámetros:

  • host_name (string)

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

  • certificado (OpenSSL::X509::Certificate)

    El certificado presentado por el servidor en host_name.

  • ca_cert (OpenSSL::X509::Certificate)

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

  • cert_store (OpenSSL::X509::Store)

    El almacén de certificados a utilizar para verificar la respuesta OCSP. Esta debe ser la misma tienda que se usa en SSLContext, usada con el SSLSocket para el cual estamos verificando el certificado. Esto NO debe ser el certificado CA proporcionado por el servidor (es decir, cualquier cosa extraída de peer_cert), de lo contrario el servidor dictaría en qué autoridades de certificación confía el cliente.

Desde:

  • 2.0.0



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

def inicializar(host_name, certificado, ca_cert, cert_store, **opciones)
  @host_name = host_name
  @cert = certificado
  @ca_cert = ca_cert
  @cert_store = cert_store
  @options = opciones
end

Detalles de atributo de instancias

#ca_certObjeto (sólo lectura)

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Desde:

  • 2.0.0



72
73
74
# Archivo 'lib/mongo/socket/ocsp_verifier.rb', línea 72

def ca_cert
  @ca_cert
end

#certObjeto (solo lectura)

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Desde:

  • 2.0.0



72
73
74
# Archivo 'lib/mongo/socket/ocsp_verifier.rb', línea 72

def certificado
  @cert
end

#cert_storeobjeto (solo lectura)

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Desde:

  • 2.0.0



72
73
74
# Archivo 'lib/mongo/socket/ocsp_verifier.rb', línea 72

def cert_store
  @cert_store
end

#host_nameObjeto (solo lectura)

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Desde:

  • 2.0.0



72
73
74
# Archivo 'lib/mongo/socket/ocsp_verifier.rb', línea 72

def host_name
  @host_name
end

#opcionesObjeto (solo lectura)

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Desde:

  • 2.0.0



72
73
74
# Archivo 'lib/mongo/socket/ocsp_verifier.rb', línea 72

def opciones
  @options
end

Detalles del método de instancia

#cert_idobjeto

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Desde:

  • 2.0.0



100
101
102
103
104
105
106
# Archivo 'lib/mongo/socket/ocsp_verifier.rb', línea 100

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

#ocsp_urisArray<String>

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

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

Devuelve:

  • (arreglo<String>)

    URIs OCSP en el certificado de servidor especificado.

Desde:

  • 2.0.0



79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# Archivo 'lib/mongo/socket/ocsp_verifier.rb', línea 79

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.extensions.detectar hacer |ext|
      ext.oid == 'authorityInfoAccess'
    end

    si ext
      # Nuestros certificados de prueba tienen múltiples URIs OCSP.
      ext.Valor.división("\n").Seleccionar hacer |línea|
        línea.start_with?('OCSP - URI:')
      end.map hacer |línea|
        línea.división(':', 2).último
      end
    else
      []
    end
  end
end

#tiempo de esperaObjeto

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Desde:

  • 2.0.0



74
75
76
# Archivo 'lib/mongo/socket/ocsp_verifier.rb', línea 74

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

#verifytrue | false

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Retorna si se verificó el certificado.

Devuelve:

  • (true | false)

    Si se verificó el certificado.

Aumenta:

Desde:

  • 2.0.0



127
128
129
130
131
132
133
134
# Archivo 'lib/mongo/socket/ocsp_verifier.rb', línea 127

def Verifique
  handle_exceptions hacer
    return false si ocsp_uris.¿vacío?

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

#verificar_con_cacheObjeto

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Desde:

  • 2.0.0



108
109
110
111
112
113
114
115
116
117
118
119
120
121
# Archivo 'lib/mongo/socket/ocsp_verifier.rb', línea 108

def verify_with_cache
  handle_exceptions hacer
    return false si ocsp_uris.¿vacío?

    resp = OcspCache.Obtener(cert_id)
    return retornar_respuesta_ocsp(resp) si resp

    resp, errors = do_verify

    OcspCache.Configura(cert_id, resp) si resp

    retornar_respuesta_ocsp(resp, errors)
  end
end