我有一个网络应用程序,利用贝宝的IPN。10月15日,PayPal由于贵宾犬的安全缺陷:风险投资:做了一些修改。
此时,我对https://www.paypal.com/cgi-bin/webscr的调用开始返回SSL3_READ_BYTES:sslv3警报握手失败
看来对php:PHP修补程序有一些修正。
我正在寻找一个解决方案,以解决这个印第。我的代码如下:
IdSSLIOHandlerSocket1 := TIdSSLIOHandlerSocketOpenSSL.create(nil);
try
with IdSSLIOHandlerSocket1 do begin
SSLOptions.Method := sslvSSLv3;
SSLOptions.Mode := sslmUnassigned;
SSLOptions.VerifyMode := [];
SSLOptions.VerifyDepth := 2;
end;
IdHTTP1 := TIdHTTP.create(nil);
with IdHTTP1 do begin
IOHandler := IdSSLIOHandlerSocket1;
ReadTimeout := 0;
AllowCookies := True;
ProxyParams.BasicAuthentication := False;
ProxyParams.ProxyPort := 0;
Request.ContentLength := -1;
Request.ContentRangeEnd := 0;
Request.ContentRangeStart := 0;
Request.ContentType := 'text/html';
Request.Accept := 'text/html, */*';
Request.BasicAuthentication := False;
Request.UserAgent := 'Mozilla/3.0 (compatible; Indy Library)';
HTTPOptions := [hoForceEncodeParams];
end;
ss := TStringList.Create;
ss.Add('cmd=_notify-validate');
for i:= 0 to ARequestInfo.Params.count -1 do begin
ss.Add(ARequestInfo.Params[i]);
end;
mPayPalServer := 'https://www.paypal.com/cgi-bin/webscr';
mResult := HTTPDecode(IdHTTP1.Post(mPayPalServer, ss));我尝试过用以下内容替换SSLOptions.Method:
SSLOptions.Method := sslvTLSv1;但这仍然行不通。
发布于 2014-11-02 10:17:46
您的代码显式地将SSL处理程序配置为在以下行中使用SSL 3:
SSLOptions.Method := sslvSSLv3;来自https://stackoverflow.com/a/26513369/80901
PayPal禁用了SSLv3以响应“贵宾犬”的可维护性。在这里阅读:PayPal响应,这样您的独立客户端将无法连接。
若要连接,请检查支持哪些较新的协议(TLS1.0、1.1或1.2),并配置SSL处理程序以使用此协议。
例如,要使用TLS,请指定允许的TLS版本:
SSLOptions.SSLVersions := [sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2];https://stackoverflow.com/questions/26692422
复制相似问题