类:Mongo::Socket::OcspVerifier Private

继承:
对象
  • 对象
显示全部
包括:
Loggable
定义于:
build/Ruby-driver-v 2.19 /lib/mongo/socket/ocsp_verifier.rb

Overview

此类是私有 API 的一部分。 应尽可能避免使用此类,因为它将来可能会被删除或更改。

OCSP 端点验证程序。

建立 TLS 连接后,此验证程序会检查服务器提供的证书,如果该证书包含 OCSP URI,则对指定 URI 执行 OCSP 状态请求(最多5个重定向)以验证证书状态。

常量摘要

Loggable中包含的常量

Loggable::PREFIX

实例属性摘要折叠

实例方法摘要折叠

Loggable中包含的方法

#log_debug#log_error#log_ Fatal#log_info#log_warn#logger

构造函数详情

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

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回 OcspVerifier 的新实例。

参数:

  • host_name ( string )

    正在验证的主机名,用于诊断输出。

  • cert ( OpenSSL::X 509 ::Certificate )

    服务器在 host_name 上提供的证书。

  • ca_cert ( OpenSSL::X 509 ::Certificate )

    服务器提供的 CA 证书或从服务器证书在本地解析的 CA 证书。

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

    用于验证 OCSP 响应的证书存储区。 这应该与我们正在验证其证书的 SSLSocket 一起使用的 SSLContext 中使用的存储相同。 这不能是服务器提供的 CA 证书(即 从对等证书中获取的任何内容),否则服务器将决定客户端信任哪个 CA 机构。

由于:

  • 2.0.0



51
52
53
54
55
56
57
# File 'build/Ruby-driver-v 2.19 /lib/mongo/socket/ocsp_verifier.rb', 第51行

def 初始化(host_name, cert, ca_cert, cert_store, **opts)
  @host_name = host_name
  @cert = cert
  @ca_cert = ca_cert
  @cert_store = cert_store
  @options = opts
end

实例属性详细信息

# ca_cert对象(只读)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

由于:

  • 2.0.0



61
62
63
# File 'build/Ruby-driver-v 2.19 /lib/mongo/socket/ocsp_verifier.rb', 第61行

def ca_cert
  @ca_cert
end

# cert对象(只读)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

由于:

  • 2.0.0



60
61
62
# File 'build/Ruby-driver-v 2.19 /lib/mongo/socket/ocsp_verifier.rb', 第60行

def cert
  @cert
end

# cert_store对象(只读)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

由于:

  • 2.0.0



62
63
64
# File 'build/Ruby-driver-v 2.19 /lib/mongo/socket/ocsp_verifier.rb', 第62行

def cert_store
  @cert_store
end

# host_name对象(只读)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

由于:

  • 2.0.0



59
60
61
# File 'build/Ruby-driver-v 2.19 /lib/mongo/socket/ocsp_verifier.rb', 第59行

def host_name
  @host_name
end

# options对象(只读)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

由于:

  • 2.0.0



63
64
65
# File 'build/Ruby-driver-v 2.19 /lib/mongo/socket/ocsp_verifier.rb', 第63行

def 选项
  @options
end

实例方法详细信息

# cert_id对象

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

由于:

  • 2.0.0



91
92
93
94
95
96
97
# File 'build/Ruby-driver-v 2.19 /lib/mongo/socket/ocsp_verifier.rb', 第91行

def cert_id
  @cert_id ||= OpenSSL::OCSP::CertificateId.new(
    cert,
    ca_cert,
    OpenSSL::摘要::SHA 1.new,
  )
end

# ocsp_urisArray<String>

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回指定服务器证书中的 OCSP URI。

返回:

  • ( Array<String> )

    指定服务器证书中的 OCSP URI。

由于:

  • 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-v 2.19 /lib/mongo/socket/ocsp_verifier.rb', 第70行

def ocsp_uris
  @ocsp_uris ||= 开始
    # https://tools.ietf.org/html/rfc 3546 #section- 2.3
    # 禁止多个扩展具有相同的 oid。
    ext = cert.扩展.检测 do |ext|
      ext.oid == ' authorityInfoAccess '
    end

    if ext
      # 我们的测试证书有多个 OCSP URI。
      ext..拆分(" \n ").SELECT do |line|
        line.start_with?(' OCSP - URI: ')
      end.map do |line|
        line.拆分(' : ', 2).last
      end
    else
      []
    end
  end
end

# timeout对象

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

由于:

  • 2.0.0



65
66
67
# File 'build/Ruby-driver-v 2.19 /lib/mongo/socket/ocsp_verifier.rb', 第65行

def 超时
  选项[:timeout] || 5
end

# verifytrue | false

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回证书是否已验证。

返回:

  • ( true | false )

    证书是否已验证。

引发:

由于:

  • 2.0.0



122
123
124
125
126
127
128
129
# File 'build/Ruby-driver-v 2.19 /lib/mongo/socket/ocsp_verifier.rb', 第122行

def 验证
  handle_Exceptions do
    return false if ocsp_uris.空?

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

# verify_with_cache对象

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

由于:

  • 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-v 2.19 /lib/mongo/socket/ocsp_verifier.rb', 第99行

def verify_with_cache
  handle_Exceptions do
    return false if ocsp_uris.空?

    resp = OcspCache.获取(cert_id)
    if resp
      return return_ocsp_response(resp)
    end

    resp, errors = do_verify

    if resp
      OcspCache.(cert_id, resp)
    end

    return_ocsp_response(resp, errors)
  end
end