certificate authority etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
certificate authority etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

CA Kök Sertifikası Ekleme

Bazı durumlarda CA (Certificate Authority - Sertifika Makamı)'nın sertifikaları dağıtabilmesi çok da olası olmadığı durumlar olabilir. Özellikle MS sistemlerde AD CS (Active Directory Certificate Service) ve GPO Güvenlik Politikaları kullanarak "enrollment" (kaydolma) işlemi yapılmaktadır. Linux dünyasında ise benzer çözümler RedHat kurumsal çözümü olarak "DogTag" sertifika sunucusu kullanılabilir. Özellikle FreeIPA içerisinde de bu çözüm bulunmaktadır. certmonger uygulaması ile istemci tarafında sertifikaların alınabilmesi için uygulama yapılabilmektedir. Dogtag uygulamasına alternatif olarak ise; openXPKI ve EJBCA örnek verilebilir.

Bugün ise bu konuların detayına girmeden önce elle bu işlemi nasıl yapabileceğimizin küçük bir örneğini yapacağız. Öncelikle örneğimizi Debian tabanlı sistemlerde uygulayacağımızı belirtmek isterim.

Elimizde "root.cert.pem" adında bir sertifika olduğunu varsayıyoruz. Bu sertifika bir sertifika makamı veya kendinden imzalı yöntemlerle oluşturulmuş olabilir. Aşağıdaki yöntem ile sistem içerisinde wget veya curl komutlarıyla kullanılabilecek kök sertifika eklenmiş olmaktadır:
sudo mkdir /usr/local/share/ca-certificates/extra
sudo cp root.cert.pem /usr/local/share/ca-certificates/extra/root.cert.crt
sudo update-ca-certificates
Fakat Mozilla Firefox, Google Chrome veya Chromium tarayıcılarının kendi sertifika depoları bulunmaktadır. Bu nedenden dolayı onlar için ayrı işlem yapılması gerekiyor. Bu işlem için bir araca da ihtiyacımız var "certutil":
sudo apt install libnss3-tools
Bunun için aşağıdaki betik sistemimizdeki cert8.db (legacy - DBM) ve cert9.db (SQL) dosyalarını bularak bu dosyalara ilgili sertifikayı eklemeyi sağlamakta. Eğer ilgili dosyaların nerede olduğunu biliyorsanız bu işi tek adımda da yapabilirsiniz.
#!/bin/bash
certfile="root.cert.pem"
certname="Kok CA"
for certDB in $(find ~/ -name "cert8.db")
do
    certdir=$(dirname ${certDB});
    certutil -A -n "${certname}" -t "TCu,Cu,Tu" -i ${certfile} -d dbm:${certdir}
done
for certDB in $(find ~/ -name "cert9.db")
do
    certdir=$(dirname ${certDB});
    certutil -A -n "${certname}" -t "TCu,Cu,Tu" -i ${certfile} -d sql:${certdir}
done