✍️
E-İmza Rehberi Bireysel ve Kurumsal Elektronik İmza Portalı

E-Devlet'te 'Elektronik İmza ile Giriş' kısmında Java applet kalktığı için masaüstü uygulamasını indirdim ama 'Uygulama çalışırken beklenmeyen bir hata (NullPointerException)' fırlatıyor

Tarayıcılarda NPAPI ve Java applet desteği sonlandırıldığı için e-Devlet kapısına e-imza ile giriş yapmak amacıyla sunulan resmi 'e-Devlet Kapısı e-İmza Uygulaması'nı bilgisayarıma indirip kurdum. Tarayıcıda 'Elektronik İmza ile Giriş' butonuna bastığımda yerel masaüstü istemcisi otomatik olarak tetikleniyor fakat kartı okuma veya sertifika listeleme ekranına geçmeden ekranda 'Uygulama çalışırken beklenmeyen bir hata oluştu: java.lang.NullPointerException' uyarısı fırlatarak aniden kapanıyor. AKİS ve SafeNet USB token sürücülerim güncel, üretici kart yönetim araçlarında sertifikam sorunsuz görünüyor; bu NullPointerException çökmesinin teknik sebebi nedir ve e-Devlet uygulamasını hatasız olarak nasıl çalıştırabilirim?
Durum: Çözüldü Kategori: Soru-Cevap

2 Cevap

✓

e-Devlet Kapısı masaüstü e-imza uygulamasında karşılaşılan java.lang.NullPointerException hatası, tarayıcılarda NPAPI eklentilerinin (Java Applet) kaldırılmasından sonra devreye alınan yerel masaüstü istemcisinin, işletim sistemindeki PC/SC (Personal Computer/Smart Card) akıllı kart alt sistemi veya PKCS#11 yerel kütüphaneleriyle (native library) el sıkışırken (handshake) nesne referansını başlatamamasından kaynaklanan kritik bir çalışma zamanı istisnasıdır.

1. Kriptografik Mimari ve Hataya Yol Açan Temel Faktörler:

  • PKCS#11 / SunPKCS11 Sağlayıcı Başlatma Hatası: e-Devlet yerel istemcisi, Java tabanlı gömülü bir çalışma zamanı (JRE) kullanır. Kart okuyucuyu sorgularken TerminalFactory.getDefault().terminals().list() metodunu çağırır. Eğer sistemde yüklü sanal akıllı kart aygıtları (örneğin Windows Hello for Business, TPM Sanal Kartı veya sanallaştırma yazılımlarının sanal CCID okuyucuları) varsa, bu çağrı boş liste veya beklenmeyen bir null referans döndürebilir ve doğrudan NullPointerException fırlatır.
  • 32-Bit / 64-Bit Kütüphane Mimarisi Uyuşmazlığı: e-Devlet uygulaması 64-bit Java JVM ile derlenmişse, Windows'un C:\Windows\System32\akisp11.dll veya eTPKCS11.dll kütüphanesini yüklemeye çalışır. Şayet bilgisayarınızda yalnızca 32-bit kart sürücüsü (SysWOW64) kuruluysa veya DLL bağımlılıklarından biri (örneğin Visual C++ Redistributable msvcr100.dll) eksikse, JNI (Java Native Interface) katmanı sürücüyü yükleyemez; başlatılmamış nesne üzerinden çağrı yapıldığında uygulama çöker.
  • Bozulmuş Önbellek ve Profil Konfigürasyonu: Uygulama, kullanıcının ev dizininde daha önceki oturumlara ait kart ATR (Answer to Reset) ve slot kimliklerini önbelleğe alır. Beklenmeyen bir elektrik kesintisi veya yarım kalan oturum, bu yapılandırma XML/JSON dosyalarını bozar.

2. Adım Adım Kesin Çözüm Yöntemi:

  1. Bozuk Uygulama Önbelleğini Temizleyin:
    Klavyenizden Win + R tuşlarına basıp %USERPROFILE% yazarak Enter'a basın. Açılan dizinde yer alan gizli .turkiye.govtr, .turkiyegovtr veya AppData\Local\e-Devlet Kapisi e-İmza Uygulamasi klasörlerini bulun ve tamamen silin. Bu işlem uygulamanın tüm kart yapılandırma önbelleğini sıfırlar.
  2. Çakışan Sanal Akıllı Kart Okuyucularını Devre Dışı Bırakın:
    Aygıt Yöneticisi'ni açın (devmgmt.msc). Akıllı Kart Okuyucular kategorisi altına gidin. Eğer listede fiziksel USB token'ınız haricinde 'Microsoft Usbccid Smartcard Reader (UMDF2)' veya 'TPM Virtual Smart Card' gibi sanal okuyucular varsa, bunlara sağ tıklayıp Aygıtı Devre Dışı Bırak deyin. Yalnızca fiziksel e-imza okuyucunuzu aktif bırakın.
  3. Doğru Mimariye Sahip PKCS#11 Sürücüsünü Yükleyin:
    TÜBİTAK Kamu SM veya AKİS kullanıyorsanız resmi web sitesinden en güncel 64-bit AKİS yazılımını indirip kurun. C:\Windows\System32\akisp11.dll dosyasının fiziksel olarak mevcut olduğunu doğrulayın. SafeNet kullanıyorsanız SafeNet Authentication Client (SAC) 10.8 veya üzerini yükleyin.
  4. Windows Akıllı Kart Alt Sistemini Yenileyin:
    Komut İstemini (CMD) 'Yönetici olarak' açın ve şu komutları sırasıyla çalıştırarak PC/SC hizmetini yeniden başlatın:
    net stop SCardSvr
    net start SCardSvr
    certutil -scinfo komutunu vererek kartın Windows tarafından kriptografik olarak okunduğunu teyit edin.
  5. Uygulamayı Temiz Başlatın:
    Tarayıcınızdan e-Devlet giriş sayfasına dönün. 'Elektronik İmza ile Giriş' butonuna tıklayarak istemcinin yeniden sıfırdan konfigüre olmasını sağlayın. Uygulama ATR bilgisini tazeleyecek ve sertifikanızı listeleyecektir.

Mevzuat ve Standartlar Açısından: 5070 Sayılı Elektronik İmza Kanunu ve Bilgi Teknolojileri ve İletişim Kurumu (BTK) Güvenli Elektronik İmza Standartları gereğince, istemci ortamında çalışan tüm yazılımların FIPS 140-2 Level 3 ve CC EAL 4+ sertifikalı Güvenli İmza Oluşturma Araçları (GİOA) ile PKCS#11 v2.20 standardı üzerinden haberleşmesi zorunludur. Yukarıdaki adımlar, Java sanal makinesi ile bu kriptografik donanım arasındaki köprünün sorunsuz kurulmasını sağlar.

Yanıtlayan
Kıdemli PKI Mühendisi H.

Kurumsal makinelerde bu sorunun en yaygın tetikleyicisi Windows Hello for Business ile gelen TPM sanal akıllı kartıdır. e-Devlet istemcisi ilk bulduğu akıllı kart yuvasına (Slot 0) bağlanmaya çalışır ve TPM boş yanıt verince NullPointerException fırlatır.

Hızlı test için PowerShell'i yönetici olarak açıp şu komutla sanal okuyucuyu geçici olarak kapatabilirsiniz:
Get-PnpDevice -Class 'SmartCardReader' | Where-Object { $_.FriendlyName -like '*TPM*' } | Disable-PnpDevice -Confirm:$false
Ardından USB token'ı çıkarıp takıp e-Devlet uygulamasını tekrar çalıştırdığınızda doğrudan fiziksel USB token taranacaktır.

Yanıtlayan
Sistem Yöneticisi D.