PKI uygulamalarında her kullanıcının biri özel diğeri genel olmak üzere iki anahtarı bulunur. Kullanıcının genel anahtarı herkese açık olup, özel anahtarı yalnız kullanıcının kendisi (kullanıcı uygulaması) tarafından bilinir. Özel ve genel (public) anahtar arasında çözülmesi pratikte olanaksız olan matematiksel bir ilişki vardır. Bu durumda kullanıcının genel anahtarı ile şifrelenen bir mesaj, o kullanıcının özel anahtarı ile çözülebilir. Bu nedenle bir kullanıcıya şifreli bir mesaj göndermek istendiğinde mesaj bu kullanıcının genel anahtarı ile şifrelenebilir ve böylece mesaj gerçek alıcısı dışında kimse tarafından deşifre edilemez.

PKI sistemi key’lerle (anahtar değerler) sağlanmaktadır. Ancak bu key’leri kim üretecek? Sistemden kim sorumlu olacak? Ya da kullanıcının genel anahtarının gerçekten o kullanıcıya ait olduğundan nasıl emin olabiliriz? İşte sertifika otoriteleri (CA – Certificate Authority) bu aşamada ortaya çıkmaktadır. Bir PKI sisteminde, tüm kullanıcıların tanıdığı (güvendiği) ve genel anahtarı tüm kullanıcılar (uygulamalar) tarafından bilinen bir sertifika otoritesi bulunur. Kullanıcıların genel anahtarları, sertifika otoritesinin güvencesi altındadır ve genel anahtarlar sertifika otoritesi tarafından imzalanmıştır.

Bir Sertifikanın İçeriği

Bir sayısal sertifika, bir kullanıcı, şirket ya da özel bir varlık için public key ve sertifikayı yayınlayan yetkiliyi (certification authority) içerir.

Public key değerinin yanı sıra sayısal sertifikaların içindekiler:

Version:
X.509‘un versiyonu

Serial number: Sertifikayı tanıtan benzersiz bir değer. 3278-N22-KUİ

Signature algorithm identifier: CA’nın kullandığı algoritma

Issuer name: Sertifikayı yayınlayan varlığın adı

Validity period: Sertifikanın geçerli olduğu zaman

Subject name: Sertifikanın yayınlandığı konu.

Sertifikaların Sağladığı Olanaklar

Server ve Client authentication: Server ve client bilgisayarların kimliklerinin doğrulanmasını sağlar.

Kod imzalama (Code signing): Sertifika ile sağlanan anahtar çiftiyle içeriğin imzalanmasıdır.

Güvenli e-mail: E-mail mesajlarını imzalamak için sertifika ile ilişkilendirilmiş key çiftlerini kullanmaktır.

EFS: Windows tarafından desteklenen EFS sistemi NTFS üzerindeki dosyaların belli bir kullanıcı için şifrelenerek kullanılmasını, başka kullanıcılar tarafından açılamamasını sağlar.

VPN: IP-tabanlı network trafinin şifrelenmesi için yine anahtar çifti ile ilişkilendirilmiş sertifikaların kullanılmasını sağlar.

External ve Internal CA

Bir CA external ya da internal olabilir. Örneğin ticari bir CA tarafından dağıtılan sertifikalar milyonlarca kişiye dağıtılabilir.

Bunun yanı sıra CA’lar internal da olabilir. Örneğin şirket içindeki bir bölüm, kendi sertifikaları doğrulamak ve dağıtmak için bir server kurabilir.

Sertifikaları Dağıtma Süreci:

  • CA sertifika isteğini kabul eder.
  • CA istekte bulunanın bilgilerini kontrol eder.
  • CA sertifikaya sayısal imza uygulamak için kendi private key değerini kullanır.
  • CA sertifikaları bir PKI içindeki güvenlik hakkı olarak kullanılır.

Sertifikaların Geçersiz Hale Gelmesi (Certificate Revocation)

Bir CA ayrıca sertifikaları geri çevirmek (revoke) ve bir Certificate Revocation List (CRL) yayınlamaktan da sorumludur. Bir sertifikanın geri çevrilmesi sertifikanın geçersiz olmasını tanımlar. Aşağıda, bir sertifikanın zaman aşımından önce geri çevrilmesini sağlayan nedenler yer alır:

  • Sertifika konusunun özel anahtarının yetkisinin geçersiz olması
  • Sertifikanın hile ile elde edildiğinin anlaşılması
  • Güveni oluşturan sertifika konusunun değişmesi

Windows üzerinde OpenSSL Kurulumu

https://www.openssl.org/related/binaries.html adresinden OpenSSL for Windows dosyası indirilir ve setup dosyası çalıştırılarak kurulum başlatılır.

Lisans anlaşması kabul edilir.

Kurulumun gerçekleştirilmesi istenen dizin belirtilir.

OpenSSL dll dosyalarının Windows sistem dizini altına mı, yoksa OpenSSL klasöründe yer alan bin dizini altına mı kopyalanması için isteğe bağlı olarak seçim yapılır.

Kurulumun ardından OpenSSL’e bağış yapmak istenirse isteğe göre seçeneklerden bir tanesi seçilebilir.

Kurulum ardından OpenSSL Windows makinede çalıştırılabilmesi için gerekli olan yapılandırma dosyası openssl-dem-server-cert-thvs.cnf adresinden indirilir ve openssl-dem-server-cert-thvs.cnf adıyla C:\OpenSSL-Win64 (32 bit işletim sistemi kullanıyorsanız C:\OpenSSL-Win32) dizini altına kaydedilir.


Ardından komut satırı yönetici hakları ile çalıştırılır ve aşağıdaki komut girilir.

set OPENSSL_CONF=c:\OpenSSL-Win64\openssl.cnf

32 bit işletim sistemi kullananlar için;

set OPENSSL_CONF=c:\OpenSSL-Win32\openssl.cnf


Private Key (.key) ve CSR (Certificate Signing Request) Oluşturma

Sprivate key ve CSR oluşturmak için aşağıdaki komut kullanılır. Komut çalıştırıldıktan sonra C:\ dizini altında ceyhuncamli.com.rsa.csr ve ceyhuncamli.com.rsa.key dosyaları oluşacaktır.

C:\OpenSSL-Win64\bin\openssl req –new –newkey rsa:2048 –nodes –out ceyhuncamli.com.rsa.csr –keyout ceyhuncamli.com.rsa.key –subj “/C=TR/ST=Yenimahalle/L=Ankara/O=CeyhunCAMLI/CN=ceyhuncamli.com”

Peki OpenSSL kullanarak Root CA oluşturulabilir mi?

Elbette OpenSSL ile RootCA oluşturulabilir.

Örnek :Des3 algoritmasını kullanan 2048 bit key oluşturma

openssl.exe genrsa -des3 -out ca.key 2048

Oluşturulan Root CA için Public Key Oluşturulması

openssl.exe req -new -x509 -days 3650 -key ccamli.key -out ccamli.crt

Buradaki days ifadesinden sonra kullanılan 3650 , sertifikanın geçerlilik süresini belirtmektedir.

RootCA oluşturmaya yönelik işlemler tamamlandı. (Oluşturulan sertifikaya C:\OpenSSL-Win64\bin dizini altından ulaşılabilir.)

Intermediate CA

Şimdi ise sunucu için kullanılacak bir sertifika oluşturup imzalayacağız.(Intermediate Certificate). Öncelikle sunucu için Private Key oluşturulur.

openssl genrsa -des3 -out EreborSrv.key 2048

Bu işlemin ardından Root CA’den gelen sertifikanın imzalanması için bir sertifika oluşturulur.

openssl req -new -key EreborSrv.key -out EreborSrv.csr

Bu satırda ise sunucumuz için bir genel anahtar oluşturuyoruz.

EreborSrv adındaki sunucu için bir public key oluşturulur.

openssl x509 -req -days 3650 -in EreborSrv.csr -CA ccamli.crt -CAkey ccamli.key -set_serial 35 -out EreborSrv.crt

Dosya İmzalama ve IIS Üzerinde Kullanılabilecek Bir Sertifika Oluşturma

Bu işlemle sunucu için oluşturulan public ve private keyleri, sertifikaya entegre edilir.

openssl pkcs12 -export –out sertifika.pfx -inkey EreborSrv.key -in EreborSrv.crt

C:\OpenSSL-Win64\Bin dizini altında serfitika.pfx dosyasının oluştuğu gözlemlenir.

Oluşturulan Sertifika ile Dll yada Cab Dosyalarının İmzalanması

Sertifikanın lokal makine tarafından tanınması gerekmektedir. Bu işlem internet explorer ya da Certificates.msc mmc konsolu aracılığı ile gerçekleştirilebilir.

Internet Explorer için;

Internet Options

    Content

        Certificates bölümü altından sertifikalar import edilebilir.

Certificates mmc konsolu için;

Run

Mmc

        File – Add/Remove Snap in

            Certificates.mmc

Sertifikaların yükleneceği bölümler:

ccamli.crt : MMC konsolundan Certificates açılır ve Trusted Root Certification Authorities bölümüne yüklenir.
EreborSrv.crt : Intermediate Certification Authorities bölümüne yüklenir.
sertifika.pfx : Personal bölümüne yüklenir.

Sertifikanın IIS üzerine Eklenmesi

Oluşturulan sertifika IIS üzerine eklemek için Server Certificates kısmından .pfx uzantısına sahip sertifika import edilir ve IIS Management konsolunda yer alan Bindings bölümünden https seçilir ve işlem tamamlanır.