0
我试图通过Indy TIdHTTP获得客户端SSL证书的https页面。Indy TIdHTTP获得https客户端SSL证书的页面
代码是
var IdHTTP1 : TIdHTTP;
IdSSLIOHandlerSocket : TIdSSLIOHandlerSocketOpenSSL;
begin
try
IdHTTP1 := TIdHTTP.Create(self);
IdHTTP1.Request.BasicAuthentication := False;
IdHTTP1.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0';
IdSSLIOHandlerSocket := TIdSSLIOHandlerSocketOpenSSL.Create(IdHTTP1);
IdSSLIOHandlerSocket.SSLOptions.CertFile := 'cert.pem';
IdSSLIOHandlerSocket.SSLOptions.Method := sslvTLSv1_2;
IdSSLIOHandlerSocket.SSLOptions.Mode:= sslmUnassigned;
IdHTTP1.IOHandler := IdSSLIOHandlerSocket;
writeln(IdHTTP1.Get('https://www.scriptjunkie.us/auth/verifycert'));
finally
IdSSLIOHandlerSocket.Free;
IdHTTP1.Free;
end;
Get
不验证。客户PEM证书不被接受。
如何获得与客户端证书的网址?
我已使用https://www.scriptjunkie.us/auth/verifycert
网站,并获得了免费的客户端SSL认证。 FPC是3.0.2,印是10.6.2.0
什么是* *实际问题? 'Get'引发异常吗?如果是这样,它说什么?为什么你首先使用客户端证书?服务器是否只响应经过身份验证的客户端?您是否可以使用标准网络浏览器访问服务器? –
@Remy Lebeau是的,问题是实际的。我用最后一个Indy版本(来自dev svn)面对它。例外情况不会升高,服务器只会返回未经授权的内容。如果我使用FireFox和导入证书 - 一切正常(请参阅我的问题链接) –
什么。如果'Get'没有引发错误,那么HTTP和SSL都不会失败。是什么让你认为这是一个SSL问题,而不仅仅是一个用户身份验证问题?服务器是否要求客户端通过HTTP身份验证或HTML Webform身份验证进行登录? –