Could not load SSL Library hatası

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
mehmetkose
Üye
Mesajlar: 5
Kayıt: 02 Şub 2014 08:10

Could not load SSL Library hatası

Mesaj gönderen mehmetkose »

Merhaba,

Delphi 7 de geliştirdiğim uygulamadan http adresli URL'den resim indiriyordum.
İndirme işlemini IdHTTP kullanarak yapıyordum
URL adresi https olunca indirememeye başladım. Bunun üzerine IdSSLIOHandlerSocket kullandım.
Ancak Could not load SSL library hatasını alıyorum. Ne yapmam lazım?
Uygulamanın olduğu klasörde kullanmam gereken dll dosyaları mı olmalı? makinam x64 win10
Destek olabilirseniz çok memnun olacağım

İyi Çalışmalar,
carsoft
Üye
Mesajlar: 138
Kayıt: 01 Ağu 2014 12:27

Re: Could not load SSL Library hatası

Mesaj gönderen carsoft »

Özellikle Indy bileşenlerini sık sık kullananlar bu hatayla çok karşılaşırlar. 'Could Not Load SSL Library'. Bu durum http ile başlayan web sitelerine istek gönderirken sıkıntı olmazken, https ile olunca (güvenlikten dolayı) işler baya karışıyor. Böyle durumlarda sorunumuzu TIdSSLIOHandlerSocketOpenSSL sınıfı çözüyor.

Kod: Tümünü seç

var
  IdHTTP: TIdHTTP;
  cevap: String;
  IoHandler: TIdSSLIOHandlerSocketOpenSSL;
begin
  IdHTTP := TIdHTTP.Create(nil);
  IoHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  try
    // ... muhtemelen IoHandler ayarları değiştirilmesi gerekebilir.
    IdHTTP.IOhandler := IoHandler; 
    cevap := IdHTTP.Get('https://............' );
    // ...
  finally
    IdHTTP.Free;
    IoHandler.Free;
  end;
Ayrıca: https URL istekleriniz için TRESTClient, veya NetHTTPClient, TRESTRequest ve TRESTResponse gibi bileşenlerini kullanırsanız, SSL Library kullanım ihtiyacı duymazsınız ve bağlantı SSL ise arka planda platforma ait api'lerinden faydalanarak bu ihtiyacı karşılar .
ertank
Kıdemli Üye
Mesajlar: 1653
Kayıt: 12 Eyl 2015 12:45

Re: Could not load SSL Library hatası

Mesaj gönderen ertank »

mehmetkose yazdı: 07 May 2020 10:05 Merhaba,

Delphi 7 de geliştirdiğim uygulamadan http adresli URL'den resim indiriyordum.
İndirme işlemini IdHTTP kullanarak yapıyordum
URL adresi https olunca indirememeye başladım. Bunun üzerine IdSSLIOHandlerSocket kullandım.
Ancak Could not load SSL library hatasını alıyorum. Ne yapmam lazım?
Uygulamanın olduğu klasörde kullanmam gereken dll dosyaları mı olmalı? makinam x64 win10
Destek olabilirseniz çok memnun olacağım

İyi Çalışmalar,
Merhaba,

Kullandığınız Indy sürümünü bildirmemişsiniz. Eğer Delphi 7 kurulumu ile gelen sürüm ise çok eski bir sürüm kullanıyorsunuz. Bu sürüm ile günümüz https sitelerine bağlanmanız muhtemelen mümkün olmayacaktır.

Çünkü; Indy bileşenleri https erişim için OpenSSL dll dosyalarını kullanır. Delphi 7 kurulumu ile gelen Indy bileşenleri çok eski OpenSSL dll dosyaları ile uyumludur. Ancak SSL ve TLS sürümleri zaman içinde değişir. Dolayısıyla eski OpenSSL dll dosyaları ile zamanımız web sitelerine erişim noktasında şifreleme ve desteklenen protokoller ile ilgili sorunlar yaşamanız çok yüksek ihtimal.

Bu uyum sorunlarını çözebilmek için mümkün olan en son Indy sürümünü kullanmalısınız. Bunu yapmak için:
- Öncelikle Delphi 7 içindeki eski Indy sürümünü kaldırmalısınız.
- Son sürüm Indy kaynak kodunu https://github.com/IndySockets/Indy adresinden indirmelisiniz. Bu kaynak kodu farklı bir dizine kayıt etmenizde fayda var. Mevcut eski Indy kaynak kodlarını bulup üzerine kaydetmemeniz gerekiyor.
- Gerekli çalışma zamanı paketlerini derlemelisiniz.
- Gerekli dizayn zamanı paketlerini derlemelisiniz. Bu paketleri ayrıca "install" etmelisiniz.
- Gerekli dizinleri Library search path içine eklemelisiniz.
NOT: İngilizce olarak hazırlanmış bir anlatımı burada bulabilirsiniz: http://movivan.blogspot.com/2013/09/how ... ry-on.html

Bunları yaptıktan sonra OpenSSL'in son sürümlerinden uygun olanı https://indy.fulgan.com/SSL/ adresinden indirmelisiniz.

Delphi 7 sadece 32Bit uygulama derlediği için sizin indirmeniz gereken dosya https://indy.fulgan.com/SSL/openssl-1.0 ... -win32.zip olacaktır.

Bu zip dosyası içinden çıkan libeay.dll ve ssleay.dll dosyalarının ikisini birlikte kendi projenizin EXE dosyası ile aynı dizine kopyalamanız gerekecektir.

Tüm yukarıdaki işlemlerden sonra sorunsuz olarak https sitelere Indy bileşenleri ile erişim sağlayabiliyor olmanız gerekli. Tabiki Indy bileşenlerinin sürüm farkından dolayı kendi kodunuzda düzeltmeler yapmanız gerekebilir.

Bununla birlikte; son sürüm Indy bileşenleri ile http veya https sitelere erişim sağlar iken ekstra olarak TIdSSLIOHandlerSocketOpenSSL bileşeni kullanmanız gerekmez. Son sürüm Indy bileşenleri https protokolü olduğunu algılayıp TIdSSLIOHandlerSocketOpenSSL bileşenini kendi içinde otomatik olarak oluşturup kullanacaktır. Dolayısıyla kendi uygulamanız içinde en basit halde erişim kodu yazabilirsiniz.

Son olarak, Indy OpenSSL dll dosya yükleme hatalarını daha detaylı ve hatanın oluştuğu esas kontayı belli edecek şekilde güncelliyor. Ancak bu özellik henüz mevcut en son sürüme eklenmemiş olabilir.
ertank
Kıdemli Üye
Mesajlar: 1653
Kayıt: 12 Eyl 2015 12:45

Re: Could not load SSL Library hatası

Mesaj gönderen ertank »

carsoft yazdı: 08 May 2020 05:44 Özellikle Indy bileşenlerini sık sık kullananlar bu hatayla çok karşılaşırlar. 'Could Not Load SSL Library'. Bu durum http ile başlayan web sitelerine istek gönderirken sıkıntı olmazken, https ile olunca (güvenlikten dolayı) işler baya karışıyor. Böyle durumlarda sorunumuzu TIdSSLIOHandlerSocketOpenSSL sınıfı çözüyor.
Soru içinde IdSSLIOHandlerSocket kullanılmasına rağmen problemin çözülmediği belirtilmiş.
carsoft yazdı: 08 May 2020 05:44 Ayrıca: https URL istekleriniz için TRESTClient, veya NetHTTPClient, TRESTRequest ve TRESTResponse gibi bileşenlerini kullanırsanız, SSL Library kullanım ihtiyacı duymazsınız ve bağlantı SSL ise arka planda platforma ait api'lerinden faydalanarak bu ihtiyacı karşılar .
TRESTClient, TRESTRequest, TRESTResponse kullanarak standart internet URL'si ile resim dosyası indirmek mümkün olmayacaktır.
NetHTTPClient Delphi 7 sürümünde mevcut değildir. Dolayısıyla kullanılması bu anlamda imkansız. Delphi 7 sürümü söz konusu olduğunda SSL bağlantı için OpenSSL dll dosyaları kullanılmak neredeyse kaçınılmazdır.
mehmetkose
Üye
Mesajlar: 5
Kayıt: 02 Şub 2014 08:10

Re: Could not load SSL Library hatası

Mesaj gönderen mehmetkose »

Merhaba Ertan Bey,
Dönüşünüz için teşekkür ederim, çok açıklayıcı belirtmişsiniz.
Bendeki indy sürümü 9.00.10
Öncelikle buna ait dll leri bulup bir denemek istiyorum, bunun dosyası openssl zip dosyası hangisi olabilir?
İyi Çalışmalar,
Cevapla