Авторизация на сайте при помощи сертификата
У меня есть пользовательский сертификат. sert.cer. Мне нужно авторизоваться на сайте и скачать файлы. я его при помощи операции openssl x509 -inform der -in sert.cer -out certificate.pem преобразовал в .pem (в примерах везде pem поключают). так же у меня есть корневой сертификат D:\br.so-ups.ru(GOST-2012).cer. Но при запросе Get
zHTTP.Get('https://br.so-ups.ru:444/webapi/public/ssl/LoginByCert.aspx');
Вылетает ошибка
Project LisTLoad.exe raised exception class EIdOSSLLoadingCertError with message 'Could not load certificate. error:0609E09C:digital envelope routines:PKEY_SET_TYPE:unsupported algorithm'.
zHandler := TIdSSLIOHandlerSocketOpenSSL.Create(aHTTP);
zHandler.SSLOptions.Method := sslvSSLv23;
zHandler.SSLOptions.SSLVersions := [sslvSSLv2, sslvSSLv3, sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2];
zHandler.SSLOptions.CertFile := 'D:\certificate.pem';
zHandler.SSLOptions.KeyFile := 'D:\certificate.pem';
zHandler.SSLOptions.RootCertFile := 'D:\br.so-ups.ru(GOST-2012).cer';
zHandler.SSLOptions.Mode := sslmClient;
with aHTTP do
begin
Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0';
Request.CustomHeaders.AddValue('Accept', 'text/html,application/xhtml+xml,application/xml');
Request.CustomHeaders.AddValue('User-Agent', 'Mozilla/5.0 (Windows NT 6.3; WOW64;Trident/7.0 rv:11.0) like Gecko');
Request.CustomHeaders.AddValue('Connection', 'Keep-Alive');
Request.CustomHeaders.AddValue('DNT', '1');
Request.CustomHeaders.AddValue('Referer', 'https://br.so-ups.ru/signin');
Request.CustomHeaders.AddValue('Host', 'https://br.so-ups.ru');
Request.BasicAuthentication := False;
CookieManager := IdCookie1;
AllowCookies := True;
HandleRedirects := True;
IOHandler := zHandler;
if CheckBox2.Checked = True then
begin
ProxyParams.ProxyPort := proxy_port;
ProxyParams.ProxyServer := proxy_server;
ProxyParams.ProxyUsername := proxy_login;
ProxyParams.ProxyPassword := proxy_password;
end;
ReadTimeout := 100000000;
end;
В браузере авторизация через пользовательский сертификат проходит нормалотно