OpenSSL ile Sertifika otoritesi, Ara Sertifika Otoritesi ve sunucu sertifikası oluşturma
Tags: openssl, certificate, ca, rsa
Published: 2020-04-05 21:55:51

Ö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;

```bash
openssl genrsa -out KokCA.key 4096
```

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.

```bash
openssl req -new -x509 -days 1460 -key KokCA.key -out KokCA.crt
```

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;

```bash
openssl genrsa -out AraCA.key 4096
```

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.

```bash
openssl req -new -key AraCA.key -out AraCA.csr
```

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.

```bash
openssl x509 -req -days 730 -in AraCA.csr -CA KokCA.crt -CAkey KokCA.key -CAcreateserial -out AraCA.crt
```

Çı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
```

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

```bash
openssl verify -CAfile KokCA.crt AraCA.crt
```

İ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:

```bash
openssl x509 -in KokCA.crt -noout -subject -issuer
openssl x509 -in AraCA.crt -noout -subject -issuer
```

## 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.

```bash
openssl genrsa -out Sunucu.key 2048
```

Yine bu anahtardan bir CSR talebi oluşturulur:

```bash
openssl req -new -key Sunucu.key -out Sunucu.csr
```

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.

```bash
openssl x509 -req -days 365 -in Sunucu.csr -CA AraCA.crt -CAkey AraCA.key -set_serial 0101 -out Sunucu.crt -sha256
```

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