error:0B084002:x509 certificate routines:X509_load_cert_crl_file:system lib türü bir mesaj, OpenSSL'in güvenilen CA sertifikalarını okumaya çalışırken işletim sisteminden gelen bir dosya hatasıyla karşılaştığını gösterir. Yani sorun çoğu zaman sertifikanın içeriğinde değil, dosyaya/dizine erişimdedir. Kesin ayrıntı OpenSSL sürümüne göre değişebilir, bu yüzden yanındaki errno mesajını mutlaka okuyun.
Olası nedenler
-CAfileveya-CApathile verilen yol yok ya da yanlış yazılmış.- CA dizinindeki
.0uzantılı hash bağlantıları kırık (dangling symlink). - Dizin veya dosya okuma izni yok (başka kullanıcıyla çalışan servis).
- Sertifika paketi dosyası bozuk veya yarım indirilmiş.
- Chroot/konteyner içinde sistem CA deposu bulunmuyor.
Teşhis ve çözüm
- Kullanılan yolu doğrulayın:
ls -l /etc/ssl/certs | head openssl version -d - Kırık bağlantıları bulun:
find /etc/ssl/certs -xtype l - Hash dizinini yeniden oluşturun:
sudo update-ca-certificates --fresh # Debian/Ubuntu sudo update-ca-trust extract # RHEL/CentOS - Komutu tek bir paket dosyasıyla deneyin:
openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt sertifika.crt - Servis kullanıcısının izinlerini kontrol edin:
sudo -u kullanici ls /etc/ssl/certs. - Konteynerde
ca-certificatespaketini kurun ve yolu uygulamaya gösterin.
Önleme
CA deposunu elle değiştirmek yerine sistem araçlarıyla yönetin. Sertifikanın kendisi sorun çıkarıyorsa zinciri SSL denetleme aracıyla sınayın; adım adım yardım için SSL sorun gidericiyi kullanabilirsiniz.
Ek ipuçları
curl gibi araçlarda CA yolunu açıkça vermek sorunu hızla ayırt etmenizi sağlar: curl --cacert /etc/ssl/certs/ca-certificates.crt https://alanadi.com. Bu komut çalışıp varsayılan çağrı çalışmıyorsa sorun varsayılan CA yolu ayarındadır. Uygulama kendi CA dosyasını kullanıyorsa o yolu ve iznini ayrıca kontrol edin.