PKI nedir ve nasıl çalışır?

Bu flood’da PKI’ın (Public Key Infrastructure) ne olduğunu ve nasıl çalıştığını anlatacağım.

Önceki flood’da HTTPS’in veri katmanı gizliliği (Confidentiality) ve istemcinin sunucu kimliğini doğrulaması (Authenticity) özelliklerini sağladığına değinmiştik. Bu flood’da istemcinin sunucu kimliğini doğrulaması (istenen durumlarda sunucunun da istemci kimliğini doğrulaması) işlemlerinin yapılmasını sağlayan PKI’a (Public Key Infrastructure) detaylı bir şekilde değineceğiz.

PKI kısaca HTTPS’teki Authenticity için kullanılan dijital sertifikaların üretilmesi, dağıtılması ve kimlik doğrulaması aşamasında kullanılabilmesi için gerekli altyapıyı sağlar.

PKI’da, CA (Certificate Authority) adı verilen üçüncü parti güvenilir kuruluşlar güvensiz ağ (internet) üzerinde iletişimde bulunmak isteyen bütün partiler (istemci, sunucu) için dijital sertifikalar üretirler. Bu sertifikaların içerisine sertifikanın verildiği partilerin Public Key'i konur. Bu noktadan sonra bir parti iletişimde bulunduğu bütün partilere kendi sertifikasını göndererek karşı taraf ile Public Key'ini paylaşılmış olur.

Güvensiz ağ üzerinden aldığı sertifikanın gerçekten beyan edilen partiye ait olup olmadığını doğrulamak isteyen istemci aşağıdaki şekildeki gibi sertifika üzerindeki imzaları hiyerarşi içerisinde en yukarı kök sertifikaya kadar takip eder.

Yukarıda verilen işlemde en yukarıda bulunan ve Root Certificate (Kök Sertifika) adı verilen sertifika kendisi tarafından imzalanmıştır. Kök sertifikalar işletim sistemi üreticileri tarafından işletim sistemlerine önceden yüklenirler. Chrome ve Internet Explorer bir sitenin sertifikasını kontrol ederken buldukları kök sertifikanın işletim sisteminin ilgili bölümünde bulunup bulunmadığını kontrol ederler. Firefox'ta kök sertifikalar kendi kurulumu ile birlikte gelir.

Aşağıda macOS işletim sisteminde kök sertifikaların listesinin bulunabileceği adres verilmiştir. Burada ayrıca Tübitak sertifikasının süresinin geçmiş olduğuna dikkat edelim az sonra bunun etkisine değineceğiz.

Aşağıda Windows 10 işletim sisteminde kök sertifikalara aşağıdaki gibi MMC üzerinden erişebiliriz. Burada da HTTP proxy olarak kullanılan Fiddler'ın HTTPS trafiği çözebilmek için buraya eklendiğine dikkat edelim.

Son olarak Firefox’ta kök sertifikalar aşağıdaki adresten görülebilir. Burada Tübitak tarafından yeni yaratılan kök sertifikayı görebilirsiniz. Anlaşılacağı gibi macOS’in aksine Firefox bu sertifikayı dağıtımına eklemiştir.

macOS kurulu bilgisayardan Chrome ile https://tubitak․com․tr'e bağlanırken aşağıdaki görüntü elde edilmiştir. Burada Tübitak’ın yeni kök sertifikası macOS kök sertifikaları arasına henüz eklenmediği için site güvenli kabul edilmemektedir.

Buraya kadar PKI’ın sunduğu sertifika dağıtım ve sertifika hiyerarşisi doğrulama (Certificate Chain Validation) işlemlerini gördük, şimdi de sertifikaların üretim süreçlerini inceleyelim.

Genel kabul görmüş bir CA tarafından imzalanmış bir sertifika ürettirmek isteyen bir kurum yardımcı araçlar kullanarak (örneğin OpenSSL) bir Public/Private Key çifti oluşturur. Private Key'i kendinde saklar ve kimseyle paylaşmaz. Public Key'i ise sertifikanın geçerli olacağı domain ismi, kuruluş bilgileri vb bilgilerle yine OpenSSL gibi yardımcı bir aracın sunduğu sihirbaz ile bir araya getirerek bir CSR (Certificate Signing Request) oluşturur.

Oluşturulan CSR, CA (Certificate Authority)’e gönderilir. CA, CSR içindeki Public Key dahil bilgileri bir sertifikanın içerisine koyarak sertifikayı kendi Private Key'i ile imzalar ve imzayı sertifikaya iliştirir. Bu sayede CA'in Public Key'i elinde olan her parti üretilen sertifikanın gerçekten de CA tarafından imzalandığını doğrulayabilir. CA, sertifikayı ürettiği kurumu telefon, ticari sicil vb. yöntemlerle doğruladığı için kimlik denetimi sağlanmış olur.

Yukarıda anlatılan adımlar aşağıdaki şekilde görselleştirilmiştir.

Test sistemlerinde ve internetten erişilemeyen özel ağlarda (intranet) bilinen bir CA tarafından imzalanmış sertifikalar yerine OpenSSL gibi araçlarla kendi oluşturduğunuz CA tarafından imzalanmış sertifikaları kullanmak isteyebilirsiniz. Bu sitelere girişte sertifika doğrulaması sırasında tarayıcınız aşağıdaki gibi bir hata verecektir. Bu hatanın sebebi kök sertifika olarak kullanılan CA’in işletim sistemince güvenilen kök sertifikalardan biri olmamasıdır.

Yöntemleri farklı olmakla birlikte bütün işletim sistemleri bahsedilen kullanımlar için Self-signed sertifikaların güvenilen kök sertifika dizinine eklenmesine izin vermektedir. OpenSSL ile üretilen CA sertifikası yani kök sertifika işletim sisteminin güvenilen kök sertifikalar dizinine eklenirse tarayıcı bu CA tarafından sertifikası imzalanan siteleri hata göstermeden açacaktır.