Selenium Rest Api Testlerinde ‘PKIX path building failed’ hatasını nasıl çözeriz?

Sadik Erdem Sen
Kariyer.net Tech
Published in
4 min readDec 8, 2021

Selenium ile rest api testi yazmak istediğimizde JVM, request atılan uri için ssl sertifika problemi yaratıyorsa bu hatayı fırlatıyor;

javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Hata stack traceinin bir bölümü

1- JAVA_HOME adresini bulmak

Sorunun çözümü için öncelikle JAVA_HOME’da ne yazıyor onu tespit etmemiz gerekiyor.

JAVA_HOME’da set edilen adresi görmek için de şu yolu takip ediyoruz;

  • Bilgisayarım’a sağ yıklıyoruz,
  • En altta Özellikler’e tıklıyoruz,
  • Açılan ekranda Gelişmiş Sistem Ayarları’na tıklıyoruz,
  • Açılan ekranda Ortam Değişkenleri’ne tıklıyoruz,
  • Açılan ekranda Sistem Değişkenleri sekmesi altında JAVA_HOME’u buluyoruz ve aradığımız adrese ulaşmış oluyoruz.
JAVA_HOME adresi

Ancak eğer IDE içerisinde başka bir adresleme yaptıysanız o adresi not etmek gerekiyor. Örneğin IntelliJ içerisinde;

  • File — Settings — Build — Runner yolunu takip ederek ulaşabilirsiniz.
IntelliJ Settings üzerinden JDK adresi bulma

2- Sertifikayı Elde Etmek

Sertifika sorunu yaşadığımız adrese tarayıcı(chrome) üzerinden gidip, adres çubuğu solunda kalan kilit ikonuna tıklayarak ve aşağıdaki adımları izleyerek sertifika dosyamızı elde ediyoruz.

Bu dosyanın içinde mevzubahis adresin şifreleme algoritması, domain bilgileri gibi bilgiler var. Detaylıca bakmak isterseniz adım 4 ve 5'in olduğu sekmede ya da sertifika dosyasını oluşturduktan sonra notepad üzerinde görebilirsiniz.

Burada dikkat edilmesi gereken diğer husus da dosyayı binary formatta elde etmek istiyorsanız .DER encoded binary X.509(.CER) olan formatı, binary formatı düz metine çeviren bir çıktı elde etmek istiyorsanız Base-64 olan formatı seçmeniz gerekiyor. .DER encoded dosyası daha sade olduğu için(plain textten arınmış) burada bunu tercih ettim.

Next diyerek dosyamızı herhangi bir yere kayıt ediyoruz.

Firefox kullanıyorsanız; Url’in solundaki insan ikonuna tıklayarak sırasıyla Bağlantı güvenli — Daha fazla bilgi — Güvenlik — Sertifikayı göster — İndir adımlarını izleyerek sertifika dosyasını indirebilirsiniz.

3- Sertifikayı Kayıt Etmek

JDK adreslerini elde ettikten, dosyamızın ismini ve yerini belirledikten sonra komut penceresini açıyoruz, sertifika dosyamızın olduğu dizine gidiyoruz(örn. C:\Users\erdem.sen\Downloads) ve şu komutu giriyoruz;

keytool -import -alias orneksertifika -keystore C:\Users\erdem.sen\.jdks\corretto-1.8.0_312\jre\lib\security\cacerts” -file orneksertifika.cer

  • Komut penceresini yönetici olarak açtığınıza emin olun.
  • Dosya konumunda komut penceresi açmak için ilgili dizinin içinde shift+sağ fare kombinasyonunu kullanarak Komut Penceresini Burada Aç seçeneğine tıklayabilirsiniz.
Komut ekranı görüntüsü

Size bir şifre sorulacak; aksi olmadığı sürece şifre default olarak ‘changeit’ olarak belirlenmiştir. Yazıp entera tıklıyoruz. Karşımıza eklenecek olan sertifika bilgileri geliyor, göz gezdirip kontrol edebilirsiniz.

Komut ekranının en sonunda da ‘Bu sertifikaya güveniyor musunuz?’ sorusuna ‘yes’ olarak cevap girmeniz gerekiyor. Fakat gerçekten güvendiğiniz bir sertifika ekliyor olduğunuza emin olmanızda fayda var.

Başarıyla eklendi mesajını gördükten sonra testlerinize devam edebilirsiniz.

Kaynaklar

--

--