Estoy usando WinHTTP en un proyecto de Delphi para realizar llamadas al servidor.
Script:
userAgent := 'TestClient.exe';
hsession := WinHttpOpen(pwidechar(userAgent), WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, nil, nil, 0);
if(hsession = nil) then ShowMessage('Failed WinhttpOpen');
p := 'https';
port := 443;
requestflags := WINHTTP_FLAG_SECURE;
server := '10.0.0.221';
hconnection := WinHttpConnect(hsession, PWideChar(server), port, 0);
if(hconnection = nil) then
begin
le := GetLastError;
ShowMessage('Failed to connect: ' + IntToStr(le));
end;
Action := 'GET';
hInetRequest := WinHttpOpenRequest(hconnection, pwidechar(Action), nil, nil, nil, nil, WINHTTP_FLAG_SECURE);
if(hInetRequest = nil) then
begin
le := GetLastError;
ShowMessage('Failed to connect: ' + IntToStr(le));
end;
WinResult:=WinHttpSendRequest(hInetRequest, nil,0, 0, 0,0,0);
if(not WinResult) then
begin
le := GetLastError;
WinHttpCloseHandle(hInetRequest);
ShowMessage('No result obtained : ' + IntToStr(le));
end;
Pregunta; Para el cumplimiento de la seguridad (FIA_X509_EXT1.1) , ¿debería terminar la conexión justo después del protocolo de enlace SSL? En caso de que el certificado de pares se considere inválido. ¿O está bien para terminar más tarde?
Actual: Lo que está sucediendo es que el cliente (mediante WinHTTP) realiza una llamada y confirma con éxito el protocolo de enlace TLS, incluso cuando el certificado no es válido. Sin embargo, justo después del protocolo de enlace y antes de completar la solicitud, finaliza la conexión lanzando un '12175' error. ¿Cuál es el error para certificados inválidos? ¿Cuál es el correcto?
Problema: Para que el cumplimiento anterior (FIA_X509_EXT1.1) se apruebe según la herramienta de verificación, WinHTTP no debe permitir un intercambio exitoso y, por lo tanto, terminar la conexión antes.
Pantalla de Wireshark adjunta a continuación: (10.0.0.221 es el servidor)
Yahiceestapreguntaen