Проверка однорангового узла на SSL с помощью Python

Эти dynamic тип по существу object, но разрешит весь метод / свойство / оператор и т.д. звонит во времени выполнения через ДОЛЛАР или другого поставщика (такого как отражение).

Это делает его во многом как VB с Option Strict Off и делает его очень универсальным для вызова в COM, или в типы ДОЛЛАРА.

существует никакой тип, проверяющий во время компиляции с динамическим; с другой стороны анонимные типы являются надлежащими статически введенными, проверенными в типе зверями (Вы видите их в отражателе, хотя они не симпатичны).

Кроме того, анонимные типы могут быть обработаны исключительно компилятором; dynamic требует обширной поддержки во время выполнения - таким образом, анонимные типы являются функцией C#, но dynamic будет в основном реализован.NET 4.0 (с некоторой поддержкой C# 4.0).

9
задан Bhargava 5 October 2009 в 09:37
поделиться

3 ответа

Из комментариев к моему первому ответу я вижу, что существует общее недоразумение, что означает «проверить сертификат». Я постараюсь написать здесь краткое объяснение, чтобы устранить некоторые иллюзии.

Проверка сертификата заключается в проверке подписи в метаданных сертификата (т. Е. В теме, сроке действия, расширениях и т. Д.) Против некоторой криптографической подписи.

Если все, что у вас есть для проверки, - это самозаверяющий сертификат, который невозможно отличить от другого самозаверяющего сертификата с точно такими же метаданными, но с другим ключом, если вы не знаете ключ сертификата ключа заранее. И не забывайте, что вы устанавливаете всю эту процедуру проверки, чтобы убрать требование о наличии этих предварительных знаний. При регулярной проверке сертификата вы не можете полностью избавиться от требования иметь некоторые предварительно распространенные знания, которые представляют собой набор сторонних сертификатов, также известных как «сертификаты CA». Поскольку эти знания являются предварительными, эти сертификаты могут быть самоподписанными, но помните, что вы получили информацию о действительности этих сертификатов не в процессе проверки, а из некоторых внешних знаний.

Когда у вас есть набор доверенных сертификатов. «Сертификаты ЦС» распределяются между одноранговыми узлами, вы можете использовать их для подписи других сертификатов и проверки подписей на основе предварительно совместно используемых знаний доверенных ЦС.

Но если у вас нет дополнительных сведений о самозаверяющем сертификате, кроме самого сертификата, вы не можете делать никаких предположений относительно доверия к этому конкретному сертификату, потому что он может быть выпущен каким-то злым хакером, а также вашим надежным сервером.

Пожалуйста, узнайте немного о Человек в средней атаке , Инфраструктура открытых ключей и ] Криптография с открытым ключом в целом перед внедрением каких-либо процессов проверки сертификатов.

Пожалуйста, поймите, что слепая проверка самоподписанного сертификата не защитит вас даже от умного хакера в вашей собственной сети, даже с учетом Интернета безопасность в целом.

Edit : автор вопроса пояснил, что на самом деле он искал, как проверить подпись verisign (или другого CA) на сертификате с использованием привязок M2Crypto. Вот два примера:

10
ответ дан 4 December 2019 в 19:35
поделиться

Я предполагаю, что вы используете некоторую привязку OpenSSL. Я вижу два способа решить вашу проблему.

  1. Вы можете добавить свой сертификат в каталог openssl (запустите openssl version -d , чтобы увидеть его для вашей системы). Это повлияет на все программы, использующие openssl на вашем компьютере.
  2. Загрузить сертификат и добавить его во время выполнения (эскиз кода ниже предназначен для PyOpenSSL, но он должен быть аналогичным для других привязок):

.

x509 = OpenSSL.crypto.load_certificate(...)
ctx = OpenSSL.SSL.Context(...)
store = ctx.get_cert_store()
store.add_cert(x509)
ctx.set_verify(VERIFY_PEER | VERIFY_FAIL_IF_NO_PEER_CERT, ...)
2
ответ дан 4 December 2019 в 19:35
поделиться

Невозможно проверить самоподписанный сертификат по самой его природе: он самоподписанный.

Вы должны подписать сертификат сертификатом какой-либо другой доверенной третьей стороны, чтобы иметь возможность проверить что-либо, и после этого вы можете добавить сертификат этой третьей стороны в список ваших доверенных центров сертификации, и тогда вы сможете проверить подписанные сертификаты. этим сертификатом / CA.

Если вам нужны рекомендации о том, как это сделать в Python, вы должны указать имя библиотеки SSL, которую вы используете, поскольку для Python есть выбор из библиотек SSL.

0
ответ дан 4 December 2019 в 19:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: