OpenSSL ile Sertifika otoritesi, Ara Sertifika Otoritesi ve sunucu sertifikası oluşturma

Ali Orhun Akkirman - Apr 5 '20 - - Dev Community

Öncelikle yazımı birkaç ana başlığa böleceğim. "Kök Sertifika otoritesi üretme", "ara sertifika otoritesi üretme" ve "sunucu sertifikası üretme" olarak belirtebilirim. Bu kavramları birbirinden bağımsız anlaşıldığı taktirde diğer tüm süreçler de peş peşe ilerleyebilecektir. Ayrıca ileride sertifika ve istekler ile ilgili başka bir yazı daha yazmayı planlıyorum.

1. Kök Sertifikası üretme

Öncelikle OpenSSL komutu ile bir RSA anahtar oluşturuyoruz;

openssl genrsa -out KokCA.key 4096
Enter fullscreen mode Exit fullscreen mode

Daha sonra aşağıdaki komut ile biraz önce oluşturduğumuz anahtar ile x509 altyapısında .CRT formatında 3 yıllık bir sertifika üretilmektedir. Sizden bu komut sonrasında bazı bilgiler istemektedir. Bu bilgileri daha sonraki bir yazıda detaylandıracağım için şimdi girmiyorum.

openssl req -new -x509 -days 1460 -key KokCA.key -out KokCA.crt
Enter fullscreen mode Exit fullscreen mode

Bu adımla birlikte elimizde KokCA.crt sertifikası ve KokCA.key anahtarı bulunmaktadır.

2. Ara Sertifika üretme

Yine OpenSSL kullanarak CA sertifikasında olduğu gibi yeni bir ara anahtar oluşturuyoruz;

openssl genrsa -out AraCA.key 4096
Enter fullscreen mode Exit fullscreen mode

Kök CA sertifikasından farklı olarak bu sefer araCA sertifikası için bir CSR isteği oluşturuyoruz. Biraz önce kök sertifika otoritesi oluştururken istenene benzer bazı bilgiler istenecektir. Bu bilgileri daha sonraki bir yazıda detaylandıracağım için şimdi girmiyorum.

openssl req -new -key AraCA.key -out AraCA.csr
Enter fullscreen mode Exit fullscreen mode

Daha sonra Kök Sertifika Otoritesi ile bu ara Sertifika otoritesini 730 günlük olarak imzalamak için aşağıdaki komutu girmeniz gerekiyor.

openssl x509 -req -days 730 -in AraCA.csr -CA KokCA.crt -CAkey KokCA.key -CAcreateserial -out AraCA.crt
Enter fullscreen mode Exit fullscreen mode

Çıktı olarak ise "Signature ok" yazısı görülmektedir. Bu adımdan sonra elimizde aşağıdaki gibi 6 dosya olmaktadır.

KokCA.crt
KokCA.key
KokCA.srl
AraCA.crt
AraCA.key
AraCA.csr
Enter fullscreen mode Exit fullscreen mode

Bu Sertifika zincirinin doğru olup olmadığını aşağıdaki komut ile kontrol edebiliyoruz.

openssl verify -CAfile KokCA.crt AraCA.crt
Enter fullscreen mode Exit fullscreen mode

İlgili komutun çıktısı olarak "AraCA.crt: OK" sonucunu gördüğünüzü düşünüyorum.

Ayrıca aşağıdaki iki komutla Kök ve Ara sertifika otoritelerinin subject ve issuer'ını kontrol edebilirsiniz. Normal şartlarda KökCA'da subject ve issuer'ın aynı olması, AraCA'da ise issuer'in KökCA bilgisi, subject'in ise kendi bilgisi olmasını beklemekteyiz:

openssl x509 -in KokCA.crt -noout -subject -issuer
openssl x509 -in AraCA.crt -noout -subject -issuer
Enter fullscreen mode Exit fullscreen mode

3. Sunucu Sertifikası üretme

Herhangi bir sunucu için de AraCA'daki yöntemin bir benzerini uygulayacağız. Yine yeni bir RSA anahtarı oluşturabilirsiniz.

openssl genrsa -out Sunucu.key 2048
Enter fullscreen mode Exit fullscreen mode

Yine bu anahtardan bir CSR talebi oluşturulur:

openssl req -new -key Sunucu.key -out Sunucu.csr
Enter fullscreen mode Exit fullscreen mode

Daha sonra bu talep AraCA tarafından veya KökCA tarafından imzalanır. Bu örneğimizde AraCA olduğu için onun üzerinden 365 günlük ve sha256 şifreleme üzerinden imzalayacağım.

openssl x509 -req -days 365 -in Sunucu.csr -CA AraCA.crt -CAkey AraCA.key -set_serial 0101 -out Sunucu.crt -sha256
Enter fullscreen mode Exit fullscreen mode

Burada yaptığımız işlemi bir üst kısımda gördüğümüz karşılaştırma ve onaylamalar ile de kontrol edebiliriz.

Valetudo bonum optimum

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .