반응형
InternetSetOption을 사용하여 자체 서명된 인증서를 무시하는 방법
사용법을 알 수 없을 것 같아요.InternetSetOption()
인터넷 옵션 설정 및 취득의 예에서는,new INTERNET_PER_CONN_OPTION[3];공간을 할당하다INTERNET_PER_CONN_OPTION구조입니다만, 제가 알기론 C에는new키워드가 있어서 이렇게 하려고 했어요.이로 인해 오류가 발생하지는 않지만 자체 서명된 웹 사이트에 대한 요청 문제는 해결되지 않습니다.
int request(char * host, int port,char * endpoint, char * data, size_t dlen )
{
LPCSTR accept[] = {"*/*", NULL};
char hdrs[] = "Content-Type: application/json";
HINTERNET hConnect, hSession, hRequest;
hSession = InternetOpen("",
INTERNET_OPEN_TYPE_PRECONFIG,
NULL,
NULL,
0);
INTERNET_PER_CONN_OPTION_LIST list;
INTERNET_PER_CONN_OPTION ops[1];
DWORD dwBufSize = sizeof(list);
list.dwSize = sizeof(list);
list.pszConnection = NULL;
list.dwOptionCount = 1;
list.pOptions = ops;
list.pOptions[0].dwOption = INTERNET_PER_CONN_FLAGS;
list.pOptions[0].Value.dwValue = SECURITY_FLAG_IGNORE_UNKNOWN_CA ;
hConnect = InternetConnect(hSession,
host,
port,
NULL,
NULL,
INTERNET_SERVICE_HTTP,0,1);
hRequest = HttpOpenRequest(hConnect,
"GET",
endpoint,
_T("HTTP/1.1"),
NULL,
accept,
INTERNET_FLAG_IGNORE_CERT_CN_INVALID|INTERNET_FLAG_SECURE,1);
if (!InternetSetOption(hRequest, INTERNET_OPTION_SECURITY_FLAGS, &list, dwBufSize))
printf("Failed to set options Error: %ld\n", GetLastError());
if (hRequest == NULL)
printf("Error: %ld\n", GetLastError());
if (HttpSendRequest(hRequest, hdrs, strlen(hdrs), data, dlen))
{
DWORD received;
char tmp[MAX_LEN];
while (InternetReadFile(hRequest, tmp, MAX_LEN, &received) && received)
printf("%s\n", tmp);
}
return 0;
}
어떻게 사용합니까?InternetSetOption()설정하다SECURITY_FLAG_IGNORE_UNKNOWN_CA?
언급URL : https://stackoverflow.com/questions/73593385/how-to-use-internetsetoption-to-ignore-self-signed-certificates
반응형
'programing' 카테고리의 다른 글
| "RuntimeError: 반복 중 사전 크기 변경" 오류를 방지하는 방법 (0) | 2023.01.16 |
|---|---|
| xpath를 사용하는 css 클래스 선택 (0) | 2023.01.16 |
| Windows에서 캐리지 리턴을 추가하는 Python의 CSV (0) | 2023.01.16 |
| Java에서 반복 가능한 크기 가져오기 (0) | 2023.01.16 |
| 두 타임스탬프 사이의 MYSQL 쿼리 (0) | 2023.01.16 |