Добрый день.
Ситуация следущая:
Есть клиентское приложение. Необходимо качать ресурсы сервера по HTTPS. В случае неправильного сертификата на сервере и InternetOpenUrl и HttpOpenRequest упираются в ошибку 12045 «The certificate authority is invalid or incorrect». Установка флагов INTERNET_FLAG_IGNORE_CERT_CN_INVALID | INTERNET_FLAG_IGNORE_CERT_DATE_INVALID не помогает.
Как проигнорировать эту ошибку?(Переход на http не подходит)
Возможно ли это сделать с WinINet и если нет, то имеет ли смысл переходить на WinHTTP?
Если приложение работает как плагин в Internet Explorer и пользователь согласился с плохим сертификатом при входе на страницу, то ошибка не возникает. Насколько трудно повторить такое поведение для «самостоятельного» приложения? Для плагина в другой браузер(конкретно в мозилу)?
Заранее благодарен за любой ответ.
Здравствуйте, Аноним, Вы писали:
А>Добрый день.
А>Ситуация следущая:
А>Есть клиентское приложение. Необходимо качать ресурсы сервера по HTTPS. В случае неправильного сертификата на сервере и InternetOpenUrl и HttpOpenRequest упираются в ошибку 12045 «The certificate authority is invalid or incorrect». Установка флагов INTERNET_FLAG_IGNORE_CERT_CN_INVALID | INTERNET_FLAG_IGNORE_CERT_DATE_INVALID не помогает.
А>Заранее благодарен за любой ответ.
Проделанного вами мало нужно еще:
DWORD dwFlags;
DWORD dwBuffLen = sizeof(dwFlags);
InternetQueryOption(hRequest, INTERNET_OPTION_SECURITY_FLAGS, (LPVOID)&dwFlags, &dwBuffLen);
dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA;
InternetSetOption(hRequest, INTERNET_OPTION_SECURITY_FLAGS, &dwFlags, sizeof(dwFlags));
Здравствуйте, pjBrain, Вы писали:
B>
B>DWORD dwFlags;
B>DWORD dwBuffLen = sizeof(dwFlags);
B>InternetQueryOption(hRequest, INTERNET_OPTION_SECURITY_FLAGS, (LPVOID)&dwFlags, &dwBuffLen);
B>dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA;
B>InternetSetOption(hRequest, INTERNET_OPTION_SECURITY_FLAGS, &dwFlags, sizeof(dwFlags));
B>
Работает!
Совсем упустил из виду такую возможность.
Очень большое спасибо!
Здравствуйте, pjBrain, Вы писали:
B>Здравствуйте, Аноним, Вы писали:
А>>Добрый день.
А>>Ситуация следущая:
А>>Есть клиентское приложение. Необходимо качать ресурсы сервера по HTTPS. В случае неправильного сертификата на сервере и InternetOpenUrl и HttpOpenRequest упираются в ошибку 12045 «The certificate authority is invalid or incorrect». Установка флагов INTERNET_FLAG_IGNORE_CERT_CN_INVALID | INTERNET_FLAG_IGNORE_CERT_DATE_INVALID не помогает.
А>>Заранее благодарен за любой ответ.
B>Проделанного вами мало нужно еще:
B>
B>DWORD dwFlags;
B>DWORD dwBuffLen = sizeof(dwFlags);
B>InternetQueryOption(hRequest, INTERNET_OPTION_SECURITY_FLAGS, (LPVOID)&dwFlags, &dwBuffLen);
B>dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA;
B>InternetSetOption(hRequest, INTERNET_OPTION_SECURITY_FLAGS, &dwFlags, sizeof(dwFlags));
B>
InternetQueryOption возвращает 0 и выбрасывает ошибку 12018 (ERROR_INTERNET_INCORRECT_HANDLE_TYPE) . Передаю хэндл от InternetOpen. Я что-то не так делаю?
Решил проблему путем импорта сертификата узла.
CERT_STORE_ADD_NEW equ 1
X509_ASN_ENCODING equ 1
PKCS_7_ASN_ENCODING equ 00010000h
ImportCertificate proc lpszCertFile:LPSTR
local hCertStore:HANDLE
local hFile:HFILE
local dwSize:DWORD
local lpData:LPVOID
invoke CreateFile, lpszCertFile, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0
.if eax != -1
mov hFile, eax
invoke GetFileSize, eax, 0
mov dwSize, eax
invoke LocalAlloc, LPTR, eax
.if eax != 0
mov lpData, eax
invoke ReadFile, hFile, lpData, dwSize, addr dwSize, 0
.if eax == TRUE
invoke CertOpenSystemStore, 0, CTXT("Root")
invoke CertAddEncodedCertificateToStore, eax, X509_ASN_ENCODING + PKCS_7_ASN_ENCODING, lpData, dwSize, CERT_STORE_ADD_NEW, NULL
.endif
invoke LocalFree, lpData
.endif
invoke CloseHandle, hFile
.endif
ret
ImportCertificate endp
- Download sourcecode — 6.45 Kb
Introduction
I’ve recently needed to make a Secure Sockets Layer (SSL) connection to Visa server and send our signed client certificate in order to make our MPI application authorized. I searched many articles but could find just a few ones about the subject. I collected parts of the solution from different articles and MSDN, and implemented a simple class that performs this operation programmatically.
There’s InternetErrorDlg
API for some purposes including sending client certificate modeling a selection dialog to the user. But in many cases, the programmer may require authentication without user interface (i.e. user interface requires an OK clicker J.. This might be useless for us if we want our program to do things automatically). This is done here by InternetSetOption()
with INTERNET_OPTION_CLIENT_CERT_CONTEXT
flag. Don’t forget that this option only works with Internet Explorer 5.01 or later (as MSDN writes).
INTERNET_OPTION_CLIENT_CERT_CONTEXT
flag is not included in VC6.0 default headers. If you’ve platform SDK installed, that’s no problem, include the wininet header in sdk/include directory, else you may define it manually;
#define INTERNET_OPTION_CLIENT_CERT_CONTEXT 84
That should be ok if you don’t have old wininet.dll versions.
For readers who are not familiar with wininet, SSL or certificates:
I am not gonna tell what wininet functions do & how they are used nor about the certificates. These are generic subjects and much information can be gathered from so many resources such as MSDN. I will try to answer the questions if you send an email to me.
Well, the flow is simple. First we connect to the HTTPS server and send a HTTPS request. If the server asks for a signed client certificate, we open and dig through the system store(s) for the certificate context we need. Then resend our request but after attaching the certificate context. If the server is satisfied, we are authenticated.
ConnectToHttpsServer()
summarizes the flow of the connection. This is the initial place.SendHttpsRequest()
sends a request. After that, if the server requires client certificate, we search it in the system store. If we find it,InternetSetOption()
attaches the context to the connection. Then we try theSendHttpsRequest()
again.
A sample usage of the class can be like this:
CSslConnection inetSec; string sAgentName("My Firm"); string sServerName("207.219.70.31"); string sUserName(""); string sPass(""); string sObjectName("/xxx.asp"); string sOrganizationUnitName("3-D Secure Compliance TestFacility"); string strVerb = "POST"; inetSec.SetAgentName(sAgentName); inetSec.SetCertStoreType(certStoreMY); inetSec.SetObjectName(sObjectName); inetSec.SetOrganizationName(sOrganizationUnitName); inetSec.SetPort(9660); inetSec.SetServerName(sServerName); inetSec.SetRequestID(0); if (!inetSec.ConnectToHttpsServer(strVerb)) { cout << inetSec.GetLastErrorString() << " Code: " << inetSec.GetLastErrorCode(); << endl; return 0; } if (!inetSec.SendHttpsRequest()) { cout << inetSec.GetLastErrorString() << " Code: " << inetSec.GetLastErrorCode(); << endl return 0; } string response = inetSec.GetRequestResult(); cout << response.c_str() << endl;
The “organization name” notated functions and variables are completely sample. I chose using “O value of the issuer field” in the certificate, that’s my search criteria. You may wish to perform store search by different fields. Because, there are many fields in a certificate and a context search can be performed by any of these.
You may possibly add your own functions instead of using FindCertWithOUNITName()
function. If you do that, just change the code calling this function (only in 1 place) and provide some variables and accessors which are suitable for your certificate search criteria.
This member has not yet provided a Biography. Assume it’s interesting and varied, and probably something to do with programming.
- Download sourcecode — 6.45 Kb
Introduction
I’ve recently needed to make a Secure Sockets Layer (SSL) connection to Visa server and send our signed client certificate in order to make our MPI application authorized. I searched many articles but could find just a few ones about the subject. I collected parts of the solution from different articles and MSDN, and implemented a simple class that performs this operation programmatically.
There’s InternetErrorDlg
API for some purposes including sending client certificate modeling a selection dialog to the user. But in many cases, the programmer may require authentication without user interface (i.e. user interface requires an OK clicker J.. This might be useless for us if we want our program to do things automatically). This is done here by InternetSetOption()
with INTERNET_OPTION_CLIENT_CERT_CONTEXT
flag. Don’t forget that this option only works with Internet Explorer 5.01 or later (as MSDN writes).
INTERNET_OPTION_CLIENT_CERT_CONTEXT
flag is not included in VC6.0 default headers. If you’ve platform SDK installed, that’s no problem, include the wininet header in sdk/include directory, else you may define it manually;
#define INTERNET_OPTION_CLIENT_CERT_CONTEXT 84
That should be ok if you don’t have old wininet.dll versions.
For readers who are not familiar with wininet, SSL or certificates:
I am not gonna tell what wininet functions do & how they are used nor about the certificates. These are generic subjects and much information can be gathered from so many resources such as MSDN. I will try to answer the questions if you send an email to me.
Well, the flow is simple. First we connect to the HTTPS server and send a HTTPS request. If the server asks for a signed client certificate, we open and dig through the system store(s) for the certificate context we need. Then resend our request but after attaching the certificate context. If the server is satisfied, we are authenticated.
ConnectToHttpsServer()
summarizes the flow of the connection. This is the initial place.SendHttpsRequest()
sends a request. After that, if the server requires client certificate, we search it in the system store. If we find it,InternetSetOption()
attaches the context to the connection. Then we try theSendHttpsRequest()
again.
A sample usage of the class can be like this:
CSslConnection inetSec; string sAgentName("My Firm"); string sServerName("207.219.70.31"); string sUserName(""); string sPass(""); string sObjectName("/xxx.asp"); string sOrganizationUnitName("3-D Secure Compliance TestFacility"); string strVerb = "POST"; inetSec.SetAgentName(sAgentName); inetSec.SetCertStoreType(certStoreMY); inetSec.SetObjectName(sObjectName); inetSec.SetOrganizationName(sOrganizationUnitName); inetSec.SetPort(9660); inetSec.SetServerName(sServerName); inetSec.SetRequestID(0); if (!inetSec.ConnectToHttpsServer(strVerb)) { cout << inetSec.GetLastErrorString() << " Code: " << inetSec.GetLastErrorCode(); << endl; return 0; } if (!inetSec.SendHttpsRequest()) { cout << inetSec.GetLastErrorString() << " Code: " << inetSec.GetLastErrorCode(); << endl return 0; } string response = inetSec.GetRequestResult(); cout << response.c_str() << endl;
The “organization name” notated functions and variables are completely sample. I chose using “O value of the issuer field” in the certificate, that’s my search criteria. You may wish to perform store search by different fields. Because, there are many fields in a certificate and a context search can be performed by any of these.
You may possibly add your own functions instead of using FindCertWithOUNITName()
function. If you do that, just change the code calling this function (only in 1 place) and provide some variables and accessors which are suitable for your certificate search criteria.
This member has not yet provided a Biography. Assume it’s interesting and varied, and probably something to do with programming.
Как устранить сообщения об ошибках «Отсутствует / Не найден 12045.orb_r.dll»
Как правило, подобные ошибки DLL, связанные с JBuilder Professional & Enterprise Server All Editions, возникают в результате повреждения или отсутствия файлов 12045.orb_r.dll. Для устранения неполадок, связанных с файлом DLL, большинство профессионалов ПК заменят файл на соответствующую версию. В качестве дополнительного шага по устранению неполадок мы настоятельно рекомендуем очистить все пути к неверным файлам и ссылки на расширения файлов DLL, которые могут способствовать возникновению такого рода ошибок, связанных с 12045.orb_r.dll.
Формат Dynamic Link Library, известный как собственный формат Системные файлы, чаще всего имеет расширение DLL. Загрузите новую версию 12045.orb_r.dll для %%os%% в списке файлов ниже. Также доступны варианты для других версий Windows (при необходимости). Если в настоящий момент отсутствует необходимая вам версия 12045.orb_r.dll, запросите ей, нажав на кнопку Request (Запрос) рядом с необходимой версией файла. Кроме того, Borland Software Corp. также может предоставить вам некоторые редкие файлы, которые отсутствуют в нашем каталоге.
После успешного размещения файла в соответствующем месте на жёстком диске подобных проблем, связанных с 12045.orb_r.dll, больше возникать не должно. Настоятельно рекомендуем выполнить быструю проверку. Вы можете проверить результат, запустив приложение JBuilder Professional & Enterprise Server All Editions и проверить, появляется ли проблема.
12045.orb_r.dll Описание файла | |
---|---|
File: | DLL |
Категория: | Server,web application |
Новейшие программы: | JBuilder Professional & Enterprise Server All Editions |
Вер: | 2002 |
Автор: | Borland Software Corp. |
Имя файла: | 12045.orb_r.dll |
Размер: | 77 |
SHA-1: | 7abf70d2333e5ca526a59cb6dc7b12295dea8605 |
MD5: | 7759aaf23e35aaf43a53456be64aa549 |
CRC32: | 60c2a682 |
Продукт Solvusoft
Загрузка
WinThruster 2023 — Сканировать ваш компьютер на наличие ошибок реестра в 12045.orb_r.dll
Windows
11/10/8/7/Vista/XP
Установить необязательные продукты — WinThruster (Solvusoft) | Лицензия | Политика защиты личных сведений | Условия | Удаление
DLL
12045.orb_r.dll
Идентификатор статьи: 614995
12045.orb_r.dll
File | MD5 | Размер | Загрузить | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
+ 12045.orb_r.dll | 7759aaf23e35aaf43a53456be64aa549 | 77.00 B | ||||||||||||||||
|
||||||||||||||||||
+ 12045.orb_r.dll | 7759aaf23e35aaf43a53456be64aa549 | 77.00 B | ||||||||||||||||
|
||||||||||||||||||
+ 12045.orb_r.dll | 7759aaf23e35aaf43a53456be64aa549 | 77.00 B | ||||||||||||||||
|
||||||||||||||||||
+ 12045.orb_r.dll | 7759aaf23e35aaf43a53456be64aa549 | 77.00 B | ||||||||||||||||
|
||||||||||||||||||
+ 12045.orb_r.dll | 7759aaf23e35aaf43a53456be64aa549 | 77.00 B | ||||||||||||||||
|
Ошибки 12045.orb_r.dll
Наиболее распространенные ошибки 12045.orb_r.dll, которые могут возникнуть на компьютере под управлением Windows, перечислены ниже:
- «Отсутствует файл 12045.orb_r.dll.»
- «Отсутствует 12045.orb_r.dll. «
- «12045.orb_r.dll нарушение прав доступа.»
- «Файл 12045.orb_r.dll не удалось зарегистрировать.»
- «Файл C:WindowsSystem3212045.orb_r.dll не найден.»
- «Не удалось запустить JBuilder Professional & Enterprise Server All Editions. Отсутствует необходимый компонент: 12045.orb_r.dll. Пожалуйста, установите JBuilder Professional & Enterprise Server All Editions заново.»
- «Не удалось выполнить приложение, так как 12045.orb_r.dll не найден. Повторная установка JBuilder Professional & Enterprise Server All Editions может решить проблему. «
Проблемы 12045.orb_r.dll, связанные с JBuilder Professional & Enterprise Server All Editionss, возникают во время установки, при запуске или завершении работы программного обеспечения, связанного с 12045.orb_r.dll, или во время процесса установки Windows. Выделение при возникновении ошибок 12045.orb_r.dll имеет первостепенное значение для поиска причины проблем JBuilder Professional & Enterprise Server All Editions и сообщения о них Borland Software Corp. за помощью.
Источник ошибок 12045.orb_r.dll
Отсутствующий файл 12045.orb_r.dll (или поврежденный файл 12045.orb_r.dll) обычно является источником проблемы. Внешние файлы, такие как 12045.orb_r.dll, создают проблемы высокой вероятности с JBuilder Professional & Enterprise Server All Editions.
Повреждение 12045.orb_r.dll происходит во время неожиданного завершения работы, вирусов или других проблем, связанных с JBuilder Professional & Enterprise Server All Editionss. Когда файл 12045.orb_r.dll поврежден, он не может быть загружен должным образом и представит сообщение об ошибке.
Кроме того проблемы 12045.orb_r.dll вызваны плохими ссылками, связанными с JBuilder Professional & Enterprise Server All Editionss в реестре Windows. Сломанные ссылки на DLL-файлы могут помешать правильной регистрации файла DLL, давая вам ошибку 12045.orb_r.dll Неверная установка/удаление JBuilder Professional & Enterprise Server All Editions, 12045.orb_r.dll, который перемещен, или отсутствующий 12045.orb_r.dll может создать эти неработающие ссылки на путь к файлам.
В первую очередь, проблемы с 12045.orb_r.dll, созданные:
- Недопустимая (поврежденная) запись реестра 12045.orb_r.dll.
- Вирус или вредоносное ПО поврежден 12045.orb_r.dll.
- НеисправностьОборудование, связанное с Borland Software Corp., вызывает повреждение 12045.orb_r.dll (может помочь ContactBorland Software Corp.).
- Требуется версия другого программного обеспечения перезаписала версию 12045.orb_r.dll.
- Другая программа (не связанная с JBuilder Professional & Enterprise Server All Editions) удалила 12045.orb_r.dll по ошибке (или злонамеренно).
- Другая программа (не связанная с JBuilder Professional & Enterprise Server All Editions) удалила 12045.orb_r.dll по ошибке (или злонамеренно).
#1
Backspace
-
- Posters
- 17 Сообщений:
Newbie
Отправлено 07 Сентябрь 2009 — 03:09
Здраствуйте, с недавних пор перестал обновлятся DrWeb v5, в логе появляются записи вида
«2009-09-07, 04:59:55 Прием drweb32.lst завершился из-за ошибки (The certificate authority is invalid or incorrect — 12045)»
Настройки не трогались несколько месяцев, переустановка «вэба» не помогает, работал на журнальных ключах, кончились, поставил временно ключ для бета-тестеров, с ним обновления так же не работают, куда копать?
- Наверх
#2
Malex
Malex
-
- Posters
- 1 070 Сообщений:
спасатель
Отправлено 07 Сентябрь 2009 — 03:13
Здраствуйте, с недавних пор перестал обновлятся DrWeb v5, в логе появляются записи вида
«2009-09-07, 04:59:55 Прием drweb32.lst завершился из-за ошибки (The certificate authority is invalid or incorrect — 12045)»
Настройки не трогались несколько месяцев, переустановка «вэба» не помогает, работал на журнальных ключах, кончились, поставил временно ключ для бета-тестеров, с ним обновления так же не работают, куда копать?
Вы, пожалуйста, лог обновления приложите полностью.
Официальный сертифицированный пользователь ПАК:
PC3000 UDMA & Data Extractor (производитель НПП АСЕ), Raid Explorer (производитель СОФТ-ЦЕНТР), Flash Extractor & Image Explorer (производитель СОФТ-ЦЕНТР), Victoria Full version (автор Сергей Казанский), R-Studio Data Recovery (производитель R-Tools Technology Inc.), GetDataBack for FAT (производитель Runtime Software), GetDataBack for NTFS (производитель Runtime Software), собственные разработки.
- Наверх
#3
Backspace
Backspace
-
- Posters
- 17 Сообщений:
Newbie
Отправлено 07 Сентябрь 2009 — 03:53
2009-09-07, 04:59:54 Status code: 0
2009-09-07, 04:59:54 Server response:
2009-09-07, 04:59:54
2009-09-07, 04:59:54 Поиск drweb32.lst.lzma…
2009-09-07, 04:59:54 Прием drweb32.lst.lzma завершился из-за ошибки (The certificate authority is invalid or incorrect — 12045)
2009-09-07, 04:59:55 Прием drweb32.lst.lzma завершился из-за ошибки (The certificate authority is invalid or incorrect — 12045)
2009-09-07, 04:59:55 Прием drweb32.lst.lzma завершился из-за ошибки (The certificate authority is invalid or incorrect — 12045)
2009-09-07, 04:59:55 Client request:
2009-09-07, 04:59:55 GET /nonauth/login.php?dest=Q==&ID=OTIz&DBL=0 HTTP/1.1
Accept: */*
X-DrWeb-Validate: 86e9bee80e85f09e63d0e9b1
X-DrWeb-KeyNumber: 0010964
User-Agent: DrWebUpdate-5.00.3.06011 (windows: 5.01.2600)
Connection: Keep-Alive
Cache-Control: no-cache
2009-09-07, 04:59:55 Status code: 0
2009-09-07, 04:59:55 Server response:
2009-09-07, 04:59:55
2009-09-07, 04:59:55 Поиск drweb32.lst…
2009-09-07, 04:59:55 Прием drweb32.lst завершился из-за ошибки (The certificate authority is invalid or incorrect — 12045)
2009-09-07, 04:59:55 Прием drweb32.lst завершился из-за ошибки (The certificate authority is invalid or incorrect — 12045)
2009-09-07, 04:59:55 Прием drweb32.lst завершился из-за ошибки (The certificate authority is invalid or incorrect — 12045)
2009-09-07, 04:59:55 Client request:
2009-09-07, 04:59:55 GET /nonauth/login.php?dest=Q=&ID=OTIz&DBL=0 HTTP/1.1
Accept: */*
X-DrWeb-Validate: 86e9bee80e85f04a8a6563d0e9b1
X-DrWeb-KeyNumber: 0019564
User-Agent: DrWebUpdate-5.00.3.06011 (windows: 5.01.2600)
Connection: Keep-Alive
Cache-Control: no-cache
2009-09-07, 04:59:55 Status code: 0
2009-09-07, 04:59:55 Server response:
2009-09-07, 04:59:55
2009-09-07, 04:59:55 Ошибка получения списка обновляемых файлов
2009-09-07, 04:59:55 Связь прервана
2009-09-07, 04:59:55 Отключены
2009-09-07, 05:00:39 =============================================================================
- Наверх
#4
pig
pig
-
- Helpers
- 10 828 Сообщений:
Бредогенератор
Отправлено 07 Сентябрь 2009 — 05:48
Что-то с настройками прокси, похоже. GET /nonauth/login.php и так далее — это явно не то, что апдейтер запрашивает у wininet.dll.
А больше ничего сказать пока нельзя, потому что лог опять неполный. Просили же — сессию полностью.
Почтовый сервер Eserv тоже работает с Dr.Web
- Наверх
#5
Konstantin Yudin
Konstantin Yudin
-
- Dr.Web Staff
-
- 19 449 Сообщений:
Смотрящий
Отправлено 07 Сентябрь 2009 — 09:46
разбирайтесь со своим прокси-сервером.
With best regards, Konstantin Yudin
Doctor Web, Ltd.
- Наверх
#6
Backspace
Backspace
-
- Posters
- 17 Сообщений:
Newbie
Отправлено 08 Сентябрь 2009 — 06:08
Спасибо за помощь, разобрался, некорректно перенастроил Kerio WinRoute в конце августа, вот и ошибка с авторизацией.
- Наверх
Обсуждение работы программы |
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
||||||
|
|
|
Добрый день.
Ситуация следущая:
Есть клиентское приложение. Необходимо качать ресурсы сервера по HTTPS. В случае неправильного сертификата на сервере и InternetOpenUrl и HttpOpenRequest упираются в ошибку 12045 «The certificate authority is invalid or incorrect». Установка флагов INTERNET_FLAG_IGNORE_CERT_CN_INVALID | INTERNET_FLAG_IGNORE_CERT_DATE_INVALID не помогает.
Как проигнорировать эту ошибку?(Переход на http не подходит)
Возможно ли это сделать с WinINet и если нет, то имеет ли смысл переходить на WinHTTP?
Если приложение работает как плагин в Internet Explorer и пользователь согласился с плохим сертификатом при входе на страницу, то ошибка не возникает. Насколько трудно повторить такое поведение для «самостоятельного» приложения? Для плагина в другой браузер(конкретно в мозилу)?
Заранее благодарен за любой ответ.
Здравствуйте, Аноним, Вы писали:
А>Добрый день.
А>Ситуация следущая:
А>Есть клиентское приложение. Необходимо качать ресурсы сервера по HTTPS. В случае неправильного сертификата на сервере и InternetOpenUrl и HttpOpenRequest упираются в ошибку 12045 «The certificate authority is invalid or incorrect». Установка флагов INTERNET_FLAG_IGNORE_CERT_CN_INVALID | INTERNET_FLAG_IGNORE_CERT_DATE_INVALID не помогает.
А>Заранее благодарен за любой ответ.
Проделанного вами мало нужно еще:
DWORD dwFlags;
DWORD dwBuffLen = sizeof(dwFlags);
InternetQueryOption(hRequest, INTERNET_OPTION_SECURITY_FLAGS, (LPVOID)&dwFlags, &dwBuffLen);
dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA;
InternetSetOption(hRequest, INTERNET_OPTION_SECURITY_FLAGS, &dwFlags, sizeof(dwFlags));
Здравствуйте, pjBrain, Вы писали:
B>
B>DWORD dwFlags;
B>DWORD dwBuffLen = sizeof(dwFlags);
B>InternetQueryOption(hRequest, INTERNET_OPTION_SECURITY_FLAGS, (LPVOID)&dwFlags, &dwBuffLen);
B>dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA;
B>InternetSetOption(hRequest, INTERNET_OPTION_SECURITY_FLAGS, &dwFlags, sizeof(dwFlags));
B>
Работает!
Совсем упустил из виду такую возможность.
Очень большое спасибо!
Здравствуйте, pjBrain, Вы писали:
B>Здравствуйте, Аноним, Вы писали:
А>>Добрый день.
А>>Ситуация следущая:
А>>Есть клиентское приложение. Необходимо качать ресурсы сервера по HTTPS. В случае неправильного сертификата на сервере и InternetOpenUrl и HttpOpenRequest упираются в ошибку 12045 «The certificate authority is invalid or incorrect». Установка флагов INTERNET_FLAG_IGNORE_CERT_CN_INVALID | INTERNET_FLAG_IGNORE_CERT_DATE_INVALID не помогает.
А>>Заранее благодарен за любой ответ.
B>Проделанного вами мало нужно еще:
B>
B>DWORD dwFlags;
B>DWORD dwBuffLen = sizeof(dwFlags);
B>InternetQueryOption(hRequest, INTERNET_OPTION_SECURITY_FLAGS, (LPVOID)&dwFlags, &dwBuffLen);
B>dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA;
B>InternetSetOption(hRequest, INTERNET_OPTION_SECURITY_FLAGS, &dwFlags, sizeof(dwFlags));
B>
InternetQueryOption возвращает 0 и выбрасывает ошибку 12018 (ERROR_INTERNET_INCORRECT_HANDLE_TYPE) . Передаю хэндл от InternetOpen. Я что-то не так делаю?
Решил проблему путем импорта сертификата узла.
CERT_STORE_ADD_NEW equ 1
X509_ASN_ENCODING equ 1
PKCS_7_ASN_ENCODING equ 00010000h
ImportCertificate proc lpszCertFile:LPSTR
local hCertStore:HANDLE
local hFile:HFILE
local dwSize:DWORD
local lpData:LPVOID
invoke CreateFile, lpszCertFile, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0
.if eax != -1
mov hFile, eax
invoke GetFileSize, eax, 0
mov dwSize, eax
invoke LocalAlloc, LPTR, eax
.if eax != 0
mov lpData, eax
invoke ReadFile, hFile, lpData, dwSize, addr dwSize, 0
.if eax == TRUE
invoke CertOpenSystemStore, 0, CTXT("Root")
invoke CertAddEncodedCertificateToStore, eax, X509_ASN_ENCODING + PKCS_7_ASN_ENCODING, lpData, dwSize, CERT_STORE_ADD_NEW, NULL
.endif
invoke LocalFree, lpData
.endif
invoke CloseHandle, hFile
.endif
ret
ImportCertificate endp
«Ошибка сертификата» появляется в виде уведомления браузера с целью повышения защиты пользовательских данных. Устанавливая соединение с сайтами, браузер проверяет действительность сертификата. И если проверка невозможна, соединение прекращается, отображается сообщение о недостаточной защите.
Итак, если при соединении с защищённым вэбсайтом браузер сообщает об ошибке сертификата безопасности веб-узла, как убрать предупреждение для многократно проверенного сервера?
Причины предупреждения
1. Сертификат веб—узла не является доверенным, если предоставлена неполная цепочка промежуточных сертификатов, может возникать данное уведомление об ошибке. Вероятно, имеется попытка извлечь информацию пользователя.
2. Сертификат безопасности был произведен для веб—узла с другим адресом.
3. Неточное время на компьютере клиента — более позднее, чем предусмотрено сроком действия сертификата «ССЛ» сервера. Стандартная рекомендация — прекратить работу с веб—узлом, закрыв страницу. Или же, как вариант, возможно обнуление таймера: вручную или переустановкой батарейки платы.
4. Если ошибка повторяется при соединении со многими сайтами, возможно наличие системных или сетевых неполадок. Виновником внедрения недостоверных сертификатов может оказаться антивирус, или же вредоносное ПО, подменяющее настоящие сертификаты.
5. Ресурс действительно небезопасен. Если вы желаете проигнорировать «тревогу«, нужно внести сайт в исключения. Но до того, как убрать ошибку сертификата безопасности веб-узла таким способом, не мешает дополнительно проверить причину возникновения проблемы.
Если ошибка проявляется изредка, необходимо скачать сертификат безопасности из официального источника, установить его и перезагрузить компьютер.
Windows VISTA
Как убрать ошибку сертификата безопасности веб-узла для Windows VISTA:
1. Внесите сертификат в доверенные (не рекомендуется). Затем следует подтвердить дальнейшее открытие окна, и в появившемся «Ошибка сертификата…» вызвать окно недостоверного сертификата, обозначенное «щитом«.
2. Выбрать «Просмотр сертификата«, затем «Общие«, где возможно отследить время действия сертификата вэб—узла.
3. В мастере установки выберите «Установить сертификат» и «Вперёд».
4. Отметьте галочкой «Автоматически выбранное хранилище сертификата…», подтверждая нажатием «Вперёд».
5. Выполните подтверждение операции, нажав «ДА» и «Финиш» в окне запроса. Избранный сертификат установлен.
6. Произведенные изменения подтвердите нажатием «ОК».
7. Выберите строку «Поместить все сертификаты в следующее хранилище«, выполните подтверждение нажатием «Обзор«.
8. В окне под названием «Выбор хранилища сертификатов«, отметьте «Доверенные корневые центры сертификации«, подтверждая нажатием «ОК».
9. Завершите процедуру: «Далее«, «Готово«, подтвердите установку, нажимая «ОК», и презапустите браузер.
Windows ХР
Как убрать ошибку сертификата безопасности веб-узла для Windows ХР:
1. В «хранилище сертификатов» выберите хранилище согласно типу сертификата «автоматически«.
2. При нажатии «Далее» импортируется и установится сертификат.
3. Щёлкните «Готово«.
4. Если предварительно появляется «Предупреждение безопасности, нажмите «ДА» в качестве подтверждения установки.
5. Поступит уведомление об установке. Щёлкните «ОК». Процедура завершена.
Антивирусные продукты
Как исправить ошибку сертификата безопасности веб-узла посредством настроек антивирусного обеспечения?
В антивирусе присутствует опция сканирования шифрованных соединений, и с переустановкой антивируса сертификаты в хранилище доверенных браузера будут установлены повторно.
В настройках программы Аваст:
- перейдите по цепочке «Настройки» — «Активная защита«, затем «Настроить» (возле щитка);
- уберите галочку с настроек, выберите включение http-сканирования, подтвердите («ОК»).
Как убрать ошибку сертификата безопасности веб-узла посредством прграммы «Касперский»:
- щёлкните в настройках программы: «Настройки» — «Дополнительные» — «Сеть«;
- в «сканировании защищённых соединений» выберите: «Не сканировать зашифрованные соединения«;
- в качестве альтернативного действия можно отметить «Дополнительные настройки» и выбрать «Установить сертификат«;
- затем подтвердите изменения и перезапустите компьютер.
Если повторяется «ошибка сертификата«, вероятно, он скомпрометирован, и не стоит добавлять в исключения сертификат популярного веб—сайта.
Вредоносные программы
Используйте ПО последней версии, включая плагины, так как установка вредоносного ПО возможна из—за уязвимости устаревших программ.
Устанавливая программы в мастерах ПО принимайте их с официального сайта, снимайте флажки с установки непроверенных программ.
Не пользуйтесь лживыми всплывающими окнами, появляющихся с целью внедрения опасных программ. Изучите детали блокирования всплывающих окон для их исключения.
Контролируйте работу антивируса в реальном времени.