powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Callback для проверки подлинности сертификата сервера при использовании SSL (API, C/C++)
8 сообщений из 8, страница 1 из 1
Callback для проверки подлинности сертификата сервера при использовании SSL (API, C/C++)
    #38967297
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую,

Ну, т.е. SMTP клиент по TCP коннектится к серверу используя SSL,
а там его всречают невалидным сертификатом (то же с pop3,imap, https).
По умолчанию клиента разворачивают и он возвращает ошибку.
Но можно задать Callback (как вариант на все приложение), и если Callback возвращает true то клиент продолжает работать с сервером.

Как это делать в .Net я нарыл:
SSL:Удаленный сертификат недействителен согласно результатам проверки подлинности.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
ServicePointManager.ServerCertificateValidationCallback = _
     New RemoteCertificateValidationCallback(AddressOf ValidateServerCertificate)

  Private Function ValidateServerCertificate(ByVal sender As Object, ByVal certificate As X509Certificate, _
   ByVal chain As X509Chain, ByVal sslPolicyErrors As SslPolicyErrors) As Boolean
    ' Accept all certificates
    Return True
  End Function


(P.S. Извините за код не на C++, это для иллюстрации того, о чем спрашиваю, а спрашиваю как раз о том как в классике, читай на C++ это делается)

Но я иногда использую COM-объект CDO.Message, и на него этот трюк не проходит, потому что COM это другой процесс.

А вопрос такой:
какие WIN API вызывают этот CallBack в приложении?
как мне эту ловушку выставить?

Я по API конечно любитель большой, но с "проверкой сертификата" только второй день воюю, поэтому как это делается на классике не знаком.
Нет ли каких примеров на C++?
...
Рейтинг: 0 / 0
Callback для проверки подлинности сертификата сервера при использовании SSL (API, C/C++)
    #38967299
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77какие WIN API вызывают этот CallBack в приложении?
Не помню я, чтобы в WinAPI были функции работы с SSL вообще. Так что все вопросы - к
документации по используемой тобой библиотеке.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Callback для проверки подлинности сертификата сервера при использовании SSL (API, C/C++)
    #38967301
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Но вот эта же огромная глава же есть:
Security and Identity

Вопрос то не про SSL а про механизм проверки сертификата на подлинность.
Можно подумать, .Net классы (в которых это есть) не на WIN API основаны.
Ну, можно конечно попытаться сорцы глянуть чего там вызывается.
...
Рейтинг: 0 / 0
Callback для проверки подлинности сертификата сервера при использовании SSL (API, C/C++)
    #38967307
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий77Но вот эта же огромная глава же есть:
И какой именно кусок этой огромной главы ты пытаешься использовать?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Callback для проверки подлинности сертификата сервера при использовании SSL (API, C/C++)
    #38967346
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovИ какой именно кусок этой огромной главы ты пытаешься использовать?

Дмитрий,
если б я знал, то я бы пытался использовать а не задавал бы тут этот вопрос.

Исходники подобного для .Net как бы есть:
http://referencesource.microsoft.com/#q=RemoteCertificateValidationCallback
но ни на какие API намеков я там не вижу, как обычно бывает.

Меня конкретно интересует обернуть в эту штуковину системный COM объект CDO.Message (sdosys.dll), но внутренних методов, событий и т.п. позволяющих это сделать через сам COM он не предоставляет, или я не узрел.

Т.е. в определенный момент винды вызывают проверку сертификата удаленного сервера. В процедуру этой проверки надо влезть, ну например вывести диалог, согласиться ли с недостоверным сертификатом, или сразу ответить ДА (практически все почтовые программы типа Outlook/Outlook Express такой диалог выводят в соответствующих случаях). По умолчанию, если не влезать, ответ будет НЕТ, т.е. приложение не сможет отправить почту через подобный сервер.

Вот картинка чтоб понятней было о чем речь идет:
...
Рейтинг: 0 / 0
Callback для проверки подлинности сертификата сервера при использовании SSL (API, C/C++)
    #38967357
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
М.б. вот это
Certificate Policy Server Interfaces

но не уверен, и хотелось бы именно API как функции.
...
Рейтинг: 0 / 0
Callback для проверки подлинности сертификата сервера при использовании SSL (API, C/C++)
    #38967370
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот кажется что-то похожее:
CertChainFindByIssuerCallback callback function
...
Рейтинг: 0 / 0
Callback для проверки подлинности сертификата сервера при использовании SSL (API, C/C++)
    #38968165
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНе помню я, чтобы в WinAPI были функции работы с SSL вообще.
Да?
Добрый человек наводку дал.
17687222

WINHTTP_STATUS_CALLBACK function pointer

MSDNWINHTTP_CALLBACK_STATUS_FLAG_INVALID_CERT
SSL certificate is invalid.

WINHTTP_CALLBACK_STATUS_FLAG_CERT_REVOKED
SSL certificate was revoked.

WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CA
The function is unfamiliar with the Certificate Authority that generated the server's certificate.

WINHTTP_CALLBACK_STATUS_FLAG_CERT_CN_INVALID
SSL certificate common name (host name field) is incorrect, for example, if you entered www.microsoft.com and the common name on the certificate says www.msn.com.

WINHTTP_CALLBACK_STATUS_FLAG_CERT_DATE_INVALID
SSL certificate date that was received from the server is bad. The certificate is expired.

WINHTTP_CALLBACK_STATUS_FLAG_SECURITY_CHANNEL_ERROR
The application experienced an internal error loading the SSL libraries.


Пока не разбирался, но вот думаю, я ж напрямую в API не лезу, у меня COM объект CDO.Message,
он лезет.
Т.е. вот можно ли на него эту ловушку в принципе выставить? (Net-овская ловушка на него не действует).
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Callback для проверки подлинности сертификата сервера при использовании SSL (API, C/C++)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]