Gradle bağımlılıkları çözerken Could not GET 'https://...'. sun.security.validator.ValidatorException: PKIX path building failed veya SSLHandshakeException görüyorsanız Gradle'ın (Gradle daemon'unun) çalıştığı JVM, depo sunucusunun sertifikasına güvenmiyor demektir.
Nedenler
- Şirket içi Maven deposu veya proxy kendi CA'sıyla imzalı sertifika kullanıyor.
- Sunucu ara sertifikayı göndermiyor.
- Gradle, terminalinizde gördüğünüzden farklı bir JDK ile çalışıyor.
- Gradle wrapper indirme adresi TLS denetimine takılıyor.
Hangi JDK kullanılıyor?
./gradlew --version
Çıktıdaki JVM satırını not alın; güven deposu düzeltmesi o JDK için yapılmalıdır.
Çözüm 1: CA'yı JDK güven deposuna eklemek
keytool -importcert -trustcacerts -alias kurum-ca -file kurum-ca.crt \
-keystore "$JAVA_HOME/lib/security/cacerts" -storepass changeit
Çözüm 2: Yalnızca Gradle için truststore
~/.gradle/gradle.properties (veya proje kökündeki gradle.properties) dosyasına ekleyin:
systemProp.javax.net.ssl.trustStore=/etc/ssl/gradle-truststore.jks
systemProp.javax.net.ssl.trustStorePassword=sifreniz
systemProp.javax.net.ssl.trustStoreType=JKS
Değişiklik sonrası eski ayarlarla çalışan daemon'u durdurun:
./gradlew --stop
./gradlew build --refresh-dependencies
Şifreyi sürüm kontrolüne koymamak için ayarı kullanıcı dizinindeki dosyada tutmanız daha güvenlidir.
Sık yapılan hatalar
- Truststore'u düzelttiğiniz JDK ile Gradle'ın kullandığı JDK'nın farklı olması.
- Daemon'u durdurmayı unutmak.
- Sertifika doğrulamasını devre dışı bırakan eklentilere yönelmek; bu, bağımlılık bütünlüğünü zayıflatır.
Sunucu tarafında tam zincirin yayınlandığını SSL Checker ile doğrulayın. Kendi depolarınız için SSL sertifikası seçenekleri sayfamızda.