![]() |
|
Could Not Load SSL Library - Baskı Önizleme +- Delphi Can (https://www.delphican.com) +-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3) +--- Forum: Eğitim (https://www.delphican.com/forumdisplay.php?fid=19) +---- Forum: Makale (https://www.delphican.com/forumdisplay.php?fid=20) +---- Konu Başlığı: Could Not Load SSL Library (/showthread.php?tid=2310) Sayfalar:
1
2
|
Could Not Load SSL Library - SimaWB - 07-06-2018 Indy bileşenlerini sık sık kullananların eninde sonunda karşılaştığı hata mesajı: Could Not Load SSL Library Indy bileşenleri ile http ile başlayan web sitelerine istek gönderirken sıkıntı yok:
var
IdHTTP: TIdHTTP;
cevap: String;
begin
IdHTTP := TIdHTTP.Create(nil);
try
cevap := IdHTTP.Get('http:// ile başlayan URL :-)' );
// ...
finally
IdHTTP.Free;
end;
Ama web adresi https ile başlayınca (işin içine security girince) işler biraz karışıyor Bu durumda TIdSSLIOHandlerSocketOpenSSL sınıfından yardım alıyoruz:
var
IdHTTP: TIdHTTP;
cevap: String;
IoHandler: TIdSSLIOHandlerSocketOpenSSL;
begin
IdHTTP := TIdHTTP.Create(nil);
IoHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
try
// ... belki IoHandler ayarları değiştirilmesi gerekebilir.
IdHTTP.IOhandler := IoHandler;
cevap := IdHTTP.Get('https://............' );
// ...
finally
IdHTTP.Free;
IoHandler.Free;
end;
Tabii ki kodları bu şekilde değiştirmek yetmiyor! Ayrıca gerekli DLL'leri de projemizle birlikte kullanıcılara vermemiz gerekiyor. Indy bileşenleri (yukarıdaki koddan da anlaşılacağı üzere) SSL gereken bağlantılar için OpenSSL'i kullanıyor. Aslında işler burada karışıyor: Bize gereken DLL'ler; kullandığımız Indy bileşenlerinin versiyonuna göre, hedef işletim sistemine göre(x86, x64) değişebiliyor. Hangi versiyonlar birbiri ile uyumlu buna dikkat etmek gerekiyor. Hatta FMX projesi yapıyorsanız hedef platforma özgü OpenSSL binary'lerinin kullanıcı tarafında olduğundan emin olmak durumundayız. Sanırım bu durumdan hepimiz muzdaribiz ![]() Bunun çözümü çok basit: TNetHTTPClient kullanmak! (Emin değilim ama XE8 versiyonu ile birlikte geldi sanırım) TNetHTTPClient sınıfı OpenSSL kullanmaz. Yukarıda vurgulanan 'security' işini işletim sistemine bırakır. Yani işletim sistemi SSL için ne kullanıyorsa onu kullanır. Biz yazılımcılar da yukarıda bahsedilen sorunlarla uğraşmayız:
var
NetHTTPClient: TNetHTTPClient;
rsp: IHTTPResponse;
cevap: String;
begin
NetHTTPClient := TNetHTTPClient.Create(nil);
try
rsp := NetHTTPClient.Get('https://.....');
cevap := rsp.ContentAsString();
finally
NetHTTPClient.Free;
end;
Cvp: Could Not Load SSL Library - Fesih ARSLAN - 07-06-2018 Merhaba, Değerli bilgiler ve detaylı açıklamalar için teşekkür ederim. FMX mimarisinde; https URL istekleri için NetHTTPClient veya TRESTClient, TRESTRequest ve TRESTResponse bileşenlerini kullanırsanız, SSL Library kullanım ihtiyacı duymaz (Bağlantı türü SSL ise arka planda platform api'lerinden faydalanarak bu ihtiyacı karşılar) . Could Not Load SSL Library - SimaWB - 07-06-2018 Evet haklısınız: http://docwiki.embarcadero.com/RADStudio/Tokyo/en/REST_Client_Library "The framework operates on the newer TNetHTTPClient, which is based on system HTTP client sockets. This allows it to leverage the OS's ability to automatically resolve and deal with SSL/TLS/HTTPS." Yenilikçi olmakta fayda var gibi
Could Not Load SSL Library - quiet1day - 08-06-2018 denemek lazım teşekkürler Cvp: Could Not Load SSL Library - meko - 08-06-2018 (07-06-2018, Saat: 15:01)SimaWB Adlı Kullanıcıdan Alıntı: Bunun çözümü çok basit: TNetHTTPClient kullanmak! (Emin değilim ama XE8 versiyonu ile birlikte geldi sanırım)
rsp := NetHTTPClient.Get('https://www.digicert.com/ssl/');
olarak denediğim zaman"Server Certificate Invalid or not present." hata mesajı alıyorum. RAD Studio 10.1 Berlin Version 24.0.25048.9432 Win 7 Pro Could Not Load SSL Library - SimaWB - 08-06-2018 Şu anda deneme şansım yok maalesef ama araştırdığım kadarıyla şöyle bir çözüm sunmuşlar: TNetHTTPClient'in OnValidateServerCertificate olayında Accepted: = True;yazmanız yeterliymiş. Cvp: Could Not Load SSL Library - meko - 08-06-2018 (08-06-2018, Saat: 11:57)SimaWB Adlı Kullanıcıdan Alıntı: Şu anda deneme şansım yok maalesef ama araştırdığım kadarıyla şöyle bir çözüm sunmuşlar: önceki mesajı yazmadan önce araştırıp aynı yöntemi denemiştim. olmamıştı siz yazınca tekrar denedim ama yine olmadı aldığım hata mesajı "Error getting Server Certificate." Could Not Load SSL Library - SimaWB - 08-06-2018 Aynı sorunu yaşayan birisi burada anlattığına göre problemi bir Windows Patch ile çözmüş. Could Not Load SSL Library - meko - 08-06-2018 windows patch çözüm olmadı ama patch uygulamadığım sanal pc'de, bir başka ssl'li site de NetHTTPClient.Get sorun çıkartmadan çalıştı sanırım sitenin ssl versiyonu önemli bir parametre Could Not Load SSL Library - sabanakman - 05-07-2018 İyi günler. Bazı güncel güvenlik protokolleri nedeniyle windowsun kesinlikle güncellenmiş olması gerekmektedir. Hatta bazı durumda ekstra ayar yapmak da gerekebilir. Mesela güncel bir win7 için TLS1.2 güvenliği için ilave olarak Registry de HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp klasörü altında (DWORD) 16 lık değer olarak DefaultSecureProtocols=a00 ataması yapılması gerekebilmektedir. Indy bileşenlerine gelince, onunla da alakalı bazı ayarlar gerekebiliyor bazı durumlarda. (07-06-2018, Saat: 15:01)SimaWB Adlı Kullanıcıdan Alıntı: Indy bileşenleri (yukarıdaki koddan da anlaşılacağı üzere) SSL gereken bağlantılar için OpenSSL'i kullanıyor.+"TIdSSLIOHandlerSocketOpenSSL" bileşeni ekleyin, -SSLOptions.Method = sslvTLSv1_2 (TLS1.2 için) -SSLOptions.SSLVersions = [sslvTLSv1, sslvTLSv1_1, sslvTLSv1_2] (bağlanılacak sunucunun kullanması muhtemel versiyonlar) +"TIdHTTP" bileşeninin, -IOHandler özelliğine yukarıdaki ayarlara sahip ("TIdSSLIOHandlerSocketOpenSSL" tipli) bileşeni ayarlayın, -Request.UserAgent:='Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0'; olarak değiştirin, (bazı siteler güncel olmayan tarayıcılarda açılmamak üzere ayarlanmış olabiliyor) gibi ekstra ayarlar yapmak gerekebilir. Basit bir Request.UserAgent ayarı yapmakla çözüme kavuştuğum bazı durumlar olduğu için bu noktayı ihmal etmemek gerekebiliyor. İyi çalışmalar. |