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

Ubuntu 22.04 LTS üzerinde Akis e-imza kart okuyucunun pcsc_scan ile algılanıp kartın okunmaması sorunu

Ubuntu 22.04 LTS (Jammy Jellyfish) kurulu dizüstü bilgisayarımda e-Devlet, UYAP ve kamu portallarına giriş yapabilmek için TÜBİTAK UEKAE Akis Linux paketini (akis-linux_amd64.deb) ve gerekli kütüphaneleri kurdum. Uçbirimde pcsc_scan komutunu çalıştırdığımda kart okuyucu donanım (Omnikey / ACS ACR39U) başarıyla listeleniyor; fakat beyaz akıllı SIM kartı taktığımda kart algılanmıyor ve terminalde sürekli 'Card state: Card removed' durumunda takılı kalıyor. ATR (Answer To Reset) dökümü alınamadığı için e-Devlet Java istemcisi ve UYAP 'Kart Takılı Değil' uyarısı veriyor. Bu Linux PC/SC ve systemd uyuşmazlığını nasıl çözebilirim?
Durum: Çözüldü Kategori: Soru-Cevap

2 Cevap

✓

Ubuntu 22.04 LTS üzerinde kart okuyucunun (Reader) tanınıp içine takılan akıllı kartın (Smart Card) algılanmaması ve pcsc_scan aracının 'Card state: Card removed' çıktısında takılı kalması, Linux Açık Anahtar Altyapısı (PKI) yığınında iki temel sistem mimarisi arızasından kaynaklanmaktadır:

1. Systemd On-Demand Socket Aktivasyon Hatası:
Ubuntu 22.04 ile birlikte gelen pcscd paketi, sistem kaynaklarını tüketmemek amacıyla sürekli arka planda çalışmak yerine systemd socket aktivasyonu (pcscd.socket) ile yapılandırılmıştır. Ancak USB kart okuyucuya fiziksel kart takıldığında veya çıkarıldığında üretilen donanımsal kesmeler (hardware interrupts / polling), socket mekanizması tarafından her zaman doğru yakalanamaz. Socket uykuda kaldığı için pcscd arka plan servisi (daemon) uyanamaz ve Linux PC/SC katmanında kart yoklama fonksiyonu (SCardGetStatusChange) tetiklenmez.

2. Açık Kaynak OpenSC ile TÜBİTAK Akis Sürücü Çakışması:
Ubuntu depolarından otomatik yüklenen opensc ve opensc-pkcs11 paketleri, akıllı kart takıldığı anda karta jenerik ISO 7816-15 kartı muamelesi yaparak karta bağlanmaya çalışır. Ancak TÜBİTAK UEKAE tarafından geliştirilen AKİS (Akıllı Kart İşletim Sistemi) çipleri milli ve tescilli bir APDU komut kümesine sahiptir. OpenSC karta başarısız ATR sorguları yollar ve kartı EXCLUSIVE (özel kullanım) modunda kilitleyerek serbest bırakmaz. Bu nedenle TÜBİTAK'ın kendi tescilli PKCS#11 sürücüsü olan libakisp11.so karta hiçbir zaman erişemez.

Sorunu kalıcı olarak gidermek için aşağıdaki adımları uçbirimden (Terminal) sırasıyla yürütünüz:

  1. Çakışan OpenSC Paketlerini Sistemden Kaldırın:
    sudo apt purge opensc opensc-pkcs11
    Bu işlem generic sürücünün Akis çipini kilitlemesini engeller.
  2. Gerekli Temel PC/SC Kütüphanelerini Kurun ve Güncelleyin:
    sudo apt update && sudo apt install pcscd pcsc-tools libccid libpcsclite1
  3. Systemd Socket Aktivasyonunu Kapatıp Servisi Sürekli Çalıştırın (En Kritik Adım):
    Socket aktivasyonunu devre dışı bırakıp daemon'ın kesintisiz dinlemede kalmasını sağlayın:
    sudo systemctl stop pcscd.socket
    sudo systemctl disable pcscd.socket
    sudo systemctl restart pcscd.service
    sudo systemctl enable pcscd.service
  4. Kullanıcı ve Cihaz İzinlerini (Udev/Groups) Yapılandırın:
    Geçerli kullanıcınızın akıllı kart okuyucu aygıt düğümlerine doğrudan erişebilmesi için gerekli gruplara ekleyin:
    sudo usermod -aG dialout,plugdev $USER
    (Grup değişikliklerinin etkin olması için oturumu kapatıp yeniden açın veya sistemi yeniden başlatın).
  5. Donanımsal Teması ve Kart Doğrulamasını Yapın:
    SIM kartın çip temas yüzeyinin temiz olduğundan ve okuyucuya doğru yönde (çip aşağıya ve öne bakacak şekilde) oturduğundan emin olun. Uçbirimde tekrar pcsc_scan komutunu çalıştırın. Artık kart takıldığı anda terminalde yeşil renkte 'Card state: Card inserted' ibaresini ve TÜBİTAK Akis kartına ait ATR (Answer to Reset) hex dökümünü (örn. 3B BF 18 00 81 31 FE 45 4B 41 54 49 53...) göreceksiniz.

Mevzuat ve Standart Dayanağı: 5070 Sayılı Elektronik İmza Kanunu ile Bilgi Teknolojileri ve İletişim Kurumu (BTK) standartları uyarınca, elektronik sertifikaların GNU/Linux gibi açık kaynak işletim sistemlerinde de uluslararası PKCS#11 Cryptographic Token Interface Standartları çerçevesinde güvenle kullanılabilir olması zorunludur. Yukarıdaki yapılandırma, sisteminizdeki PC/SC yığınını Akis /usr/lib/libakisp11.so modülü ile tam uyumlu hale getirerek e-Devlet ve UYAP üzerinden sorunsuz imza atmanızı sağlar.

Yanıtlayan
Açık Kaynak Sistem Mimarı E.

ACS ACR38 veya ACR39 model okuyucularda Ubuntu 22.04 çekirdeğinde bazen libccid sürücüsünün bekleme süresi (handshake timeout) kısa kalabilmektedir. Yukarıdaki systemd adımlarına rağmen kart bazen uyanmıyorsa:

/etc/libccid_Info.plist dosyasını açıp <key>ifdDriverOptions</key> değerini <string>0x0001</string> veya <string>0x0005</string> olarak değiştirip sudo systemctl restart pcscd komutunu çalıştırabilirsiniz. Bu parametre okuyucunun ATR bekleme süresini artırarak yaşlı veya yavaş yanıt veren çiplerin algılanmasını güvenceye alır.

Yanıtlayan
Linux Yöneticisi B.