클래스: Mongo::Socket::ocspVerifier Private

상속:
객체
  • 객체
모두 표시
다음을 포함합니다.
로깅 가능
다음에 정의됨:
lib/ Mongo/socket/ocsp_verifier.rb

개요

이 클래스는 비공개 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::X509::Certificate)

    host_name의 서버에서 제공하는 인증서입니다.

  • ca_cert (OpenSSL::X509::Certificate)

    서버에서 제공하거나 서버 인증서에서 로컬로 확인된 CA 인증서입니다.

  • cert_store (OpenSSL::X509::Store)

    OCSP 응답을 확인하는 데 사용할 인증서 저장소입니다. 이는 인증서를 확인하는 SSLSocket과 함께 사용되는 SSLContext에 사용된 것과 동일한 저장소여야 합니다. 서버에서 제공한 CA 인증서가 아니어야 합니다(예: - 그렇지 않으면 서버는 클라이언트가 신뢰하는 CA 기관을 지정합니다.

이후:

  • 2.0.0



51
52
53
54
55
56
57
# 파일 '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
# 파일 'lib/ Mongo/socket/ocsp_verifier.rb', 줄 61

def ca_cert
  @ca_cert
end

#cert객체 (읽기 전용)

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이후:

  • 2.0.0



60
61
62
# 파일 'lib/ Mongo/socket/ocsp_verifier.rb', 줄 60

def cert
  @cert
end

#cert_store객체 (읽기 전용)

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이후:

  • 2.0.0



62
63
64
# 파일 'lib/ Mongo/socket/ocsp_verifier.rb', 줄 62

def cert_store
  @cert_store
end

#host_name객체 (읽기 전용)

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이후:

  • 2.0.0



59
60
61
# 파일 'lib/ Mongo/socket/ocsp_verifier.rb', 줄 59

def host_name
  @host_name
end

#options객체 (읽기 전용)

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이후:

  • 2.0.0



63
64
65
# 파일 'lib/ Mongo/socket/ocsp_verifier.rb', 줄 63

def 옵션
  @options
end

인스턴스 메서드 세부 정보

#cert_id객체

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이후:

  • 2.0.0



91
92
93
94
95
96
97
# 파일 'lib/ Mongo/socket/ocsp_verifier.rb', 줄 91

def cert_id
  @cert_id ||= OpenSSL::OCSP::CertificateId.신규(
    cert,
    ca_cert,
    OpenSSL::다이제스트::SHA1.신규,
  )
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
# 파일 'lib/ Mongo/socket/ocsp_verifier.rb', 줄 70

def ocsp_uris
  @ocsp_uris ||= 시작
    # https://tools.ietf.org/html/rfc3546#section-2.3
    # 동일한 oid를 가진 여러 확장을 금지합니다.
    ext = cert.확장 프로그램.감지 do |ext|
      ext.oid == 'AuthorityInfoAccess'
    end

    만약 ext
      # 테스트 인증서에는 여러 개의 OCSP URI가 있습니다.
      ext.value.split("\n").SELECT do |라인|
        라인.start_with?('OCSP - URI:')
      end.map do |라인|
        라인.split(':', 2).last
      end
    other
      []
    end
  end
end

#timeout객체

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이후:

  • 2.0.0



65
66
67
# 파일 '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
# 파일 'lib/ Mongo/socket/ocsp_verifier.rb', 줄 122

def 확인
  handle_Exceptions do
    반환 거짓 만약 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
# 파일 'lib/ Mongo/socket/ocsp_verifier.rb', 줄 99

def verify_with_cache
  handle_Exceptions do
    반환 거짓 만약 ocsp_uris.비어 있나요?

    resp = ocspCache.get(cert_id)
    만약 resp
      반환 return_ocsp_response(resp)
    end

    resp, errors = do_verify

    만약 resp
      ocspCache.세트(cert_id, resp)
    end

    return_ocsp_response(resp, errors)
  end
end