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.

Resumen constante

Constantes incluidas desde Loggable

Registrable::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 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 (string)

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

  • certificado (OpenSSL::X::Certificado509 )

    El certificado presentado por el servidor en host_name.

  • ca_cert (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, ca_cert, cert_store, **opta)
  @nombre_de_host = nombre_de_host
  @cert = certificado
  @ca_cert = ca_cert
  @cert_store = cert_store
  @options = opta
end

Detalles de los atributos de instancia

#ca_certObjeto (sólo 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 ca_cert
  @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
  @options
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,
    ca_cert,
    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 los URI de OCSP en el certificado de servidor especificado.

Devuelve:

  • (arreglo<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.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 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

#verifytrue | false

Este método forma parte de una API privada. Debe evitarlo 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:

  • (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
  handle_exceptions 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é
  handle_exceptions 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