Öncelikle, bu iş için PKCS#11 PAM(Pluggable Authentication Modules) modülü yüklenmiş olmalıdır. Bunun için aşağıdaki komutu kullanıyoruz:
$ sudo apt-get install libpam-pkcs11
Ayar dosyamızı yerleştirmek için bir dizin oluşturuyoruz:
$ sudo mkdir /etc/pam_pkcs11
Örnek ayar dosyasını, oluşturduğumuz dizin içerisine kopyalıyoruz:
$ zcat /usr/share/doc/libpam-pkcs11/examples/pam_pkcs11.conf.example.gz | sudo tee /etc/pam_pkcs11/pam_pkcs11.conf
Sertifika otoritesinin sertifikalarını ve sertifika iptal listelerini koymak için oluşturduğumuz dizin içine yeni dizinler oluşturuyoruz:
$ sudo mkdir /etc/pam_pkcs11/cacerts /etc/pam_pkcs11/crls
Burada ben KAMU SM’nin sertifikalarını kullanıyorum. Nitelikli sertifika sağlayıcınız hangisiyse onun sertifika ve iptal listelerini ilgili klasöre indirmelisiniz. Öncelikle /etc/pam_pkcs11/cacerts altına aşağıdaki komutu kullanarak kök sertifikayı indiriyoruz:
$ wget http://depo.kamusm.gov.tr/nes/KOKSHS.V5.crt
/etc/pam_pkcs11/crls altına ise sertifika iptal listesini indiriyoruz:
$ wget http://depo.kamusm.gov.tr/nes/kokshs.v5.crl
Sertifikayı aşağıdaki komutla kontrol ediyoruz:
$ sha256sum KOKSHS.V5.crt
Çıktıyı KAMU SM’nin sitesindeki özet değerle karşılaştırınca aynı sonucu vermeli.
Kök sertifikanın olduğu klasöre girip( /etc/pam_pkcs11/cacerts) aşağıdaki komutu çalıştırıyoruz:
sudo pkcs11_make_hash_link
AKIS için en önemli kısım ayar kısmı. Örnek olarak kopyaladığımız pam_pkcs11.conf içerisinde değişiklik yapmamız gerekiyor. Tüm ayarlar pam_pkcs11 node’unun altında yapılıyor.
nullok = true;
şeklindeki satırı
nullok = false;
şeklinde değiştiriyoruz. Zira boş parolalara izin vermek istemiyoruz. Gerçi bizim durumumuzda AKIS zaten boş parolalara izin vermiyor.
Kullanacağımız pkcs11 modülünü belirtmemiz gerekiyor. Tabiki biz pkcs11 modülü olarak opensc değil AKIS PKCS#11 kullanacağız. AKIS modülünün ayarlarını bir node altında yapacağız şu an sadece ismini ekledik.
use_pkcs11_module = akis;
Şimdi node’u aşağıdaki gibi belgenin içine ekleyelim:
pkcs11_module akis {
module = /usr/lib/libakisp11
description = “AKIS”;
slot_num = 0;
support_threads = false; # AKIS multi-thread çalışmıyor.
ca_dir = /etc/pam_pkcs11/cacerts;
crl_dir = /etc/pam_pkcs11/crls;
cert_policy = ca,signature;
}
PAM modülü değişik türde mappers kullanır. Mapper’ların hepsi enable halde ayar dosyasına yazılmıştır:
use_mappers = digest, cn, pwent, uid, mail, subject, null;
Bunların hepsini kullanmayacağımızdan dolayı aşağıdaki hale getiriyoruz:
use_mappers = cn;
Yani cn mapper kullanacağız. Bu, GNU/Linux içerisinde kullanıcının Gecos alanındaki Full Name bilgisi ile sertifika içerisindeki Common Name’i karşılaştırır. İki bilgi birbirine eşitse login olunur. Common name’in değerine Akia uygulamasından bakabilirsiniz. Sertifikanın üzerine tıkladıktan sonra detaylarda, CN’yi görebilirsiniz.
Ayar dosyasında mapper’ın olduğu yeri de düzenliyoruz.
mapper cn {
debug = false;
module = internal;
module = @libdir@/pam_pkcs11/cn_mapper.so;#yeri nerdeyse orayı gösterin
ignorecase = true;
mapfile = file:///etc/pam_pkcs11/cn_map; #aynı şekilde cn_map dosyası oluşturmak gerekiyor.
mapfile = “none”;
}
Ayar dosyasındaki düzenlemeler bitti.
cn_map dosyasının da yapısı aşağıdaki gibidir:
Certificate Subject -> login
Tüm sistemde kimlik doğrulama yaparken akıllı kart kullanmak için /etc/pam.d/common-auth dosyasını düzenlemek gerekiyor. Burada duruma göre dosyanın başına aşağıdaki satır eklenebilir.
auth sufficient pam_pkcs11.so
Eğer kimlik doğrulamada akıllı kartın kesinlikle kullanılmasını istiyorsanız aşağıdaki şekilde kullanabilirsiniz:
auth required pam_pkcs11.so
Sufficient etiketi parola veya akıllı kartla girişin yeterli olduğunu belirtir. Required olduğu zaman akıllı kartın mutlaka doğrulanması gerektiği anlaşılmalıdır.
Sonuç:
Not: Burada anlattığım bilgiler debian tabanlı tüm GNU/Linux dağıtımlarında standarttır.
Ömer Bey; hayırlı günler. Elimde SafeNet 5110 EToken var. Kartı okuyabiliyorum ama türksatın belgenet sistemine girince kart çıkmıyor bir türlü. pardus 19.1 kullanıyorum. firefox-esr 68.03.
Yani tüm sürücü sürümlerini kurdum driver ile ilgili bir sıkıntı olduğunu düşünmüyorum. Java ile ilgili bir problem var sanırım. Firefoxta gerekli ayarlamalarıda yapıyorum, yani libeTPkcs11.so dosyasını çağırıyorum, görüyor imzayıda tanıyor. ama belgenette bir türlü imza alanı gelmiyor. Bu konuda yardımcı olur musunuz?
Merhaba, size de hayırlı günler. Belgenet sistemi hangi platform üzerinde çalışıyor bilmiyorum. Eğer browser tabanlıysa ve java applet kullanıyorsa browser uygulaması firefox tarafından engellenir. https://java.com/en/download/help/enable_browser.xml sitesinde Firefox ile ilgili olarak
şeklinde bilgi verilmiş. Sizin kullandığınız versiyonda ne yazık ki Java plugin’i kullanılabilir hale getirilemiyor. O nedenle belgenette java applet kullanılıyorsa imza alanı gelmez. Çözüm olarak iyi bir çözüm olmasa da firefox versiyonunu düşürebilirsiniz veya pardus’a wine üzerinden internet explorer kurup deneyebilirsiniz.