OpenSSL Kullanarak Verilerin Şifrelenmesi ve Şifresinin Çözülmesi
Giriş
Bilgi güvenliğinin temel hedeflerinden biri, verilerin yetkisiz kişiler tarafından okunmasını engellemektir. Günümüzde dosya, disk, veritabanı, yedekleme ve ağ iletişiminde bunun için kriptografi (Cryptography) kullanılmaktadır.
Linux, BSD, macOS ve Windows üzerinde en yaygın kullanılan kriptografik araçlardan biri OpenSSL'dir.
OpenSSL;
Dosya şifreleme
Metin şifreleme
Anahtar üretme
Sertifika oluşturma
Hash üretme
Dijital imzalama
TLS/SSL işlemleri
PKI altyapıları
gibi yüzlerce farklı işlemi gerçekleştirebilir.
Bu makalede OpenSSL ile veri şifreleme konusunu ayrıntılı olarak inceleyeceğiz.
OpenSSL Nedir?
OpenSSL;
Açık kaynaklıdır.
C dili ile geliştirilmiştir.
SSL/TLS protokollerini destekler.
Çok sayıda şifreleme algoritmasını içerir.
Linux dağıtımlarının neredeyse tamamında kurulu gelir.
Kontrol edelim:
openssl version
Örnek çıktı
OpenSSL 3.2.2
OpenSSL'nin Kullanım Alanları
Dosya şifreleme
Backup koruma
SSL Sertifikaları
VPN altyapıları
SSH anahtarları
PKI
Dijital imza
Hash üretme
Rastgele anahtar oluşturma
Simetrik Şifreleme Nedir?
Simetrik şifrelemede;
Aynı anahtar
hem şifreleme
hem de çözme işlemlerinde kullanılır.
Dosya│▼Şifreleme│▼Şifreli Veri│Aynı Anahtar│▼Şifre Çözme
Avantajları
Çok hızlıdır.
Büyük dosyalar için idealdir.
Dezavantajı
Anahtar karşı tarafa güvenli ulaştırılmalıdır.
OpenSSL ile Simetrik Şifreleme
En temel komut:
openssl enc
Desteklenen algoritmaları listeleme
openssl enc -list
Çıktı örneği
-aes-128-cbc-aes-192-cbc-aes-256-cbc-chacha20-des-ede3-camellia-256-cbc...
AES Nedir?
AES (Advanced Encryption Standard)
Dünyanın en yaygın simetrik şifreleme algoritmasıdır.
Anahtar uzunlukları
AES-128
AES-192
AES-256
Genellikle önerilen:
AES-256
İlk Dosya Şifreleme
Önce dosya oluşturalım.
echo "Bu dosya gizlidir." > gizli.txt
Şifreleyelim.
openssl enc -aes-256-cbc \-in gizli.txt \-out gizli.enc
Program parola isteyecektir.
enter AES-256-CBC encryption password:
Sonuç
gizli.txtgizli.enc
Artık şifreli dosya oluşmuştur.
Şifreli Dosyayı Görüntülemek
cat gizli.enc
Çıktı okunamaz.
²ßØåÏÁ......
Bu normaldir.
Dosyanın Şifresini Çözmek
openssl enc -d \-aes-256-cbc \-in gizli.enc \-out cozuldu.txt
Parola girilir.
enter AES-256-CBC decryption password:
Sonuç
cat cozuldu.txt
Bu dosya gizlidir.
-salt Parametresi
Önerilen kullanım
openssl enc \-aes-256-cbc \-salt
Salt;
Rastgele veri üretir.
Aynı parola ile aynı çıktının oluşmasını engeller.
Rainbow Table saldırılarını zorlaştırır.
Salt Olmadan
Şifre↓Aynı ÇıktıAynı ÇıktıAynı Çıktı
Salt ile
Şifre↓Salt1↓Farklı çıktıSalt2↓Farklı çıktı
PBKDF2 Kullanımı
OpenSSL 3.x sürümlerinde önerilir.
openssl enc \-aes-256-cbc \-pbkdf2 \-in gizli.txt \-out gizli.enc
PBKDF2;
Anahtar türetme algoritmasıdır.
Brute Force saldırılarını zorlaştırır.
Iteration Sayısı
openssl enc \-aes-256-cbc \-pbkdf2 \-iter 100000
100.000 kez anahtar türetme yapılır.
Anahtarı Gösterme
openssl enc \-aes-256-cbc \-p \-in gizli.txt \-out gizli.enc
Örnek
salt=ABCD1234key=89F32A...iv=AA1290...
Base64 Çıktısı
Şifreli veri okunabilir hale getirilebilir.
openssl enc \-aes-256-cbc \-a
veya
-base64
Örnek
U2FsdGVkX18M9...
Base64 ile Çözme
openssl enc \-d \-aes-256-cbc \-a
Farklı Algoritmalar
AES-128
openssl enc -aes-128-cbc
AES-192
openssl enc -aes-192-cbc
AES-256
openssl enc -aes-256-cbc
ChaCha20
openssl enc -chacha20
Camellia
openssl enc -camellia-256-cbc
IV (Initialization Vector)
IV;
Şifreleme sırasında rastgele başlangıç değeri oluşturur.
Amaç
Aynı verinin aynı anahtarla bile farklı sonuç üretmesini sağlamak.
IV Gösterme
openssl enc \-aes-256-cbc \-p
Örnek
iv=41F4A122...
Anahtarı Dosyadan Okuma
openssl enc \-aes-256-cbc \-kfile key.txt
Parolayı Komut Satırından Vermek
openssl enc \-aes-256-cbc \-pass pass:Parola123
Ancak bu yöntem önerilmez; parola süreç listelerinde veya kabuk geçmişinde görülebilir.
Ortam Değişkeni Kullanmak
export PASS="GizliParola"openssl enc \-aes-256-cbc \-pass env:PASS
Binary Dosya Şifreleme
openssl enc \-aes-256-cbc \-in fotograf.jpg \-out fotograf.enc
PDF Şifreleme
openssl enc \-aes-256-cbc \-in rapor.pdf \-out rapor.enc
ZIP Şifreleme
openssl enc \-aes-256-cbc \-in arsiv.zip \-out arsiv.enc
Büyük Dosyalar
openssl enc \-aes-256-cbc \-pbkdf2 \-iter 200000 \-in backup.img \-out backup.img.enc
Dosya Silmeden Önce Doğrulama
cmp backup.img backup.img.dec
veya
sha256sum backup.imgsha256sum backup.img.dec
Hash değerleri aynıysa dosya doğru çözülmüştür.
Standart Giriş/Çıkış ile Kullanım
Metin şifreleme:
echo "Merhaba Dünya" | \openssl enc -aes-256-cbc -pbkdf2 -base64
Çözme:
echo "ŞifreliMetin..." | \openssl enc -d -aes-256-cbc -pbkdf2 -base64
Asimetrik Şifreleme (RSA) ile Hibrit Yaklaşım
OpenSSL'de büyük dosyaları doğrudan RSA ile şifrelemek verimli değildir. Yaygın yaklaşım:
Rastgele bir AES anahtarı oluşturulur.
Dosya AES ile şifrelenir.
AES anahtarı RSA açık anahtarı ile şifrelenir.
Alıcı RSA özel anahtarı ile AES anahtarını çözer.
Dosya AES anahtarı ile açılır.
Bu yöntem hız ve güvenliği birleştirir.
Güvenlik İçin En İyi Uygulamalar
AES-256 veya ChaCha20 gibi güncel algoritmaları tercih edin.
-pbkdf2parametresini kullanın.Gerekirse
-iterile yüksek iterasyon değeri belirleyin.Parolayı komut satırına düz metin olarak yazmaktan kaçının.
Şifre çözme sonrası dosya bütünlüğünü SHA-256 gibi hash algoritmaları ile doğrulayın.
Yedekleme dosyalarını şifreli saklayın.
Güçlü ve benzersiz parolalar kullanın.
Gerçek Sistem Yöneticisi Senaryoları
Senaryo 1
Sunucu yedeklerini şifrelemek.
openssl enc \-aes-256-cbc \-pbkdf2 \-in backup.tar \-out backup.tar.enc
Senaryo 2
USB belleğe kopyalanacak müşteri dosyalarını korumak.
Senaryo 3
Bulut depolamaya yüklenmeden önce verileri yerel olarak şifrelemek.
Senaryo 4
Veritabanı dışa aktarma (dump) dosyalarını korumak.
mysqldump firma > firma.sqlopenssl enc \-aes-256-cbc \-pbkdf2 \-in firma.sql \-out firma.sql.enc
Senaryo 5
Arşivlenen log dosyalarını yalnızca yetkili kişilerin okuyabilmesini sağlamak.
Sık Yapılan Hatalar
| Hata | Sonuç |
|---|---|
| Yanlış parola kullanmak | Şifre çözme başarısız olur veya anlamsız çıktı oluşur. |
-pbkdf2 ile şifrelenmiş dosyayı bu seçenek olmadan çözmeye çalışmak | Anahtar türetme yöntemi uyuşmadığından işlem başarısız olur. |
| Salt kullanmamak | Aynı parola ile aynı veriler için benzer çıktılar oluşabilir, güvenlik azalır. |
| Parolayı komut satırında yazmak | Kabuk geçmişi veya süreç listesi üzerinden parola açığa çıkabilir. |
| Dosyayı doğrulamadan silmek | Şifre çözme hatası fark edilmeden özgün veri kaybedilebilir. |
Sonuç
OpenSSL, yalnızca SSL/TLS sertifikaları üretmek için değil; dosya, metin ve yedeklerin güvenli şekilde şifrelenmesi için de güçlü ve esnek bir araçtır. Güncel OpenSSL sürümlerinde AES-256, PBKDF2, salt ve yeterli iterasyon sayısının birlikte kullanılması, parola tabanlı şifrelemede güvenliği önemli ölçüde artırır. Büyük ölçekli ortamlarda ise hibrit (AES + RSA/ECC) yaklaşımlar hem performans hem de anahtar yönetimi açısından en doğru çözümdür.
Bu makaledeki uygulamalar Linux, macOS ve OpenSSL'in kurulu olduğu Windows ortamlarında büyük ölçüde aynı şekilde çalışır ve sistem yöneticileri ile siber güvenlik uzmanları için güçlü bir temel oluşturur.
OpenSSL, bilgisayar ağları üzerinden güvenli iletişim sağlamak için kullanılan, endüstri standardı açık kaynaklı bir kriptografi kütüphanesidir. Sadece SSL/TLS sertifikaları oluşturmakla kalmaz, aynı zamanda dosyaları ve metinleri şifrelemek (encrypt) ve şifrelerini çözmek (decrypt) için de güçlü bir komut satırı aracı sunar.
Veri şifreleme temel olarak iki ana kategoriye ayrılır: Simetrik ve Asimetrik şifreleme. Bu makalede her iki yöntemi kullanarak dosyalarınızı nasıl güvenli hale getireceğinizi adım adım inceleyeceğiz.
Hangi Şifreleme Yöntemini Seçmelisiniz?
Hangi yöntemi kullanacağınıza karar vermeden önce aralarındaki temel farkları anlamak önemlidir:
Özellik | Simetrik Şifreleme | Asimetrik Şifreleme |
Anahtar Sayısı | Tek Anahtar (Şifreleme ve Çözme için aynı parola) | Çift Anahtar (Açık ve Özel Anahtar) |
Hız | Çok hızlı (Büyük veriler için idealdir) | Daha yavaş (Küçük veriler için uygundur) |
Kullanım Alanı | Büyük dosyalar, veritabanları, disk şifreleme | Güvenli anahtar değişimi, e-posta şifreleme |
1. Simetrik Şifreleme (Parola Tabanlı)
Simetrik şifrelemede veriyi kilitlemek ve açmak için aynı parola kullanılır. Bu yöntem, kendi bilgisayarınızda saklayacağınız veya parolasını güvenli bir kanaldan (örneğin yüz yüze veya şifreli bir mesajlaşma uygulaması üzerinden) karşı tarafa iletebileceğiniz büyük dosyalar için en iyi seçenektir.
Modern ve güvenli bir standart olan AES-256-CBC algoritmasını kullanacağız.
Veriyi Şifrelemek
Diyelim ki gizli_belge.txt adında bir dosyanız var ve bunu şifrelemek istiyorsunuz. Terminalinizde (veya Komut İstemcisi'nde) şu komutu çalıştırın:
Bash
openssl enc -aes-256-cbc -salt -pbkdf2 -in gizli_belge.txt -out gizli_belge.enc
Komutun Parametreleri:
enc: Şifreleme (encoding/encryption) modunu başlatır.
-aes-256-cbc: Kullanılacak şifreleme algoritmasıdır (AES 256-bit).
-salt: Şifrelemeye rastgele veriler ekleyerek "Sözlük (Dictionary)" saldırılarına karşı güvenliği artırır.
-pbkdf2: Paroladan kriptografik anahtar türetmek için kullanılan modern fonksiyondur (OpenSSL 3.0 ve sonrasında şiddetle tavsiye edilir).
-in: Şifrelenecek hedef dosya.
-out: Şifrelenmiş olarak çıkacak yeni dosya.
Komutu girdiğinizde OpenSSL sizden bir parola belirlemenizi isteyecektir. Bu parolayı unutursanız, dosyanın içeriğine bir daha asla erişemezsiniz.
Şifreyi Çözmek
Şifrelenmiş gizli_belge.enc dosyasını tekrar okunabilir hale getirmek için -d (decrypt) parametresini ekleyerek şu komutu kullanın:
Bash
openssl enc -d -aes-256-cbc -salt -pbkdf2 -in gizli_belge.enc -out cozulmus_belge.txt
Sizden şifrelerken belirlediğiniz parola istenecektir. Doğru girmeniz halinde cozulmus_belge.txt dosyası orijinal içeriğiyle oluşturulur.
2. Asimetrik Şifreleme (Açık ve Özel Anahtar)
Asimetrik şifrelemede iki farklı anahtarınız olur. Açık Anahtar (Public Key) dosyanızı şifrelemek isteyen herkesle paylaşılabilir. Ancak bu şifrelenmiş dosyayı yalnızca siz, kimseyle paylaşmadığınız Özel Anahtarınız (Private Key) ile çözebilirsiniz.
Önemli Not: Asimetrik şifreleme matematiksel olarak ağır bir işlemdir ve RSA algoritması yalnızca anahtar boyutu kadar veri şifreleyebilir (örneğin birkaç kilobayt). Bu nedenle genellikle asıl büyük dosyayı simetrik bir parola ile şifreleyip, sadece o parolayı asimetrik olarak şifrelemek (Zarf Şifreleme - Envelope Encryption) için kullanılır.
1.Özel Anahtar (Private Key) Üretimi:RSA 4096-bit.
Öncelikle kendinize güçlü bir özel anahtar oluşturmalısınız. Bu anahtarı asla kimseyle paylaşmayın.
Bash
openssl genrsa -out ozel_anahtar.pem 4096
Bu komut, 4096-bit uzunluğunda son derece güvenli bir RSA anahtarı oluşturur ve ozel_anahtar.pem dosyasına kaydeder.
2.Açık Anahtar (Public Key) Çıkartılması:
Şimdi özel anahtarınızın içinden, insanlarla paylaşacağınız açık anahtarı türetmeniz gerekiyor.
Bash
openssl rsa -in ozel_anahtar.pem -pubout -out acik_anahtar.pem
Artık acik_anahtar.pem dosyasını size güvenli dosya göndermek isteyen herkese rahatça gönderebilirsiniz.
3.Veriyi Açık Anahtar ile Şifrelemek:Göndericinin yapacağı işlem.
Karşı taraf, sizin açık anahtarınızı kullanarak size göndereceği mesaj.txt dosyasını şifreler. Not: OpenSSL 3.0 ile birlikte eski rsautl komutu yerine pkeyutl kullanılması standartlaşmıştır.
Bash
openssl pkeyutl -encrypt -pubin -inkey acik_anahtar.pem -in mesaj.txt -out mesaj.enc
Oluşan mesaj.enc dosyası artık sadece sizin özel anahtarınızla açılabilir.
4.Veriyi Özel Anahtar ile Çözmek:Alıcının yapacağı işlem.
Şifrelenmiş mesaj.enc dosyasını teslim aldığınızda, kendi özel anahtarınızla şifreyi şu şekilde çözersiniz:
Bash
openssl pkeyutl -decrypt -inkey ozel_anahtar.pem -in mesaj.enc -out cozulmus_mesaj.txt
Dijital imza, bir dosyanın içeriğinin değiştirilmediğini (bütünlük) ve o dosyanın kesinlikle sizin tarafınızdan oluşturulduğunu (inkar edilemezlik) matematiksel olarak kanıtlar.
Önceki adımda öğrendiğimiz asimetrik şifrelemenin mantığını burada tam tersine çeviriyoruz: Şifreleme işleminde veriyi herkesin görebildiği açık anahtarla kilitlerken; imzalama işleminde veriyi sadece sizde bulunan özel anahtarla kilitleriz. Böylece açık anahtarınıza sahip olan herkes kilidi açabildiğinde, o belgenin sadece sizin tarafınızdan kilitlendiğinden (imzalandığından) emin olur.
Dijital imza, performans ve güvenlik sebebiyle dosyanın tamamını şifrelemek yerine dosyanın benzersiz bir matematiksel "özetini" (hash) alıp sadece o özeti imzalayarak çalışır.
1.Dosyayı İmzalamak:Göndericinin (Sizin) yapacağı işlem.
Elinizde önceki adımdan kalan ozel_anahtar.pem ve yeni oluşturduğunuz bir talimatname.pdf dosyası olduğunu varsayalım.
Bu belgenin SHA-256 özetini (hash) çıkarıp kendi özel anahtarınızla şifreleyerek bir imza (.sig) dosyası oluşturmak için şu komutu kullanın:
Bash
openssl dgst -sha256 -sign ozel_anahtar.pem -out belge_imzasi.sig talimatname.pdf
Artık orijinal talimatname.pdf dosyanız ve sadece o dosyaya ait olan belge_imzasi.sig dosyanız var. Karşı tarafa her iki dosyayı (ve doğrulaması için acik_anahtar.pem dosyasını) iletmelisiniz.
2.İmzayı Doğrulamak:Alıcının yapacağı işlem.
Alıcı; PDF belgesini, .sig imza dosyasını ve sizin açık anahtarınızı aynı klasöre koyarak şu komutu çalıştırır:
Bash
openssl dgst -sha256 -verify acik_anahtar.pem -signature belge_imzasi.sig talimatname.pdf
Bu komut arka planda kendi hash'ini hesaplar ve imzanın içindeki hash ile karşılaştırır. Ekranda şu iki sonuçtan birini görürsünüz:
Verified OK: Dosya orijinaldir, içeriğine hiç dokunulmamıştır ve kesinlikle sizin özel anahtarınızla imzalanmıştır.
Verification Failure: Dosyanın içine tek bir boşluk bile eklenmiş olsa matematiksel özet tamamen değişeceğinden doğrulama başarısız olur. Dosya kurcalanmıştır.
Önemli Kural: Dijital imza, belgenin içeriğini gizlemez. talimatname.pdf dosyası ağ üzerinden şifresiz gider. İmza sadece kaynağı doğrular ve kurcalanmayı tespit eder. Hem gizlilik hem de doğrulama istiyorsanız; dosyayı önce imzalamalı, sonra karşı tarafın açık anahtarıyla şifrelemelisiniz.
Yerel ağınızda yapılandırdığınız Webmin gibi yönetim panelleri, laboratuvar ortamında ayağa kaldırdığınız CTF sunucuları veya geliştirme aşamasındaki Django projeleriniz için HTTPS şifrelemesi kurmanız gerektiğinde dışarıdan ticari bir sertifika satın almanıza gerek yoktur. Kendi kendinize imzaladığınız (self-signed) bir SSL/TLS sertifikası ile trafiği hızlıca şifreleyebilirsiniz.
Bu sertifikalar veri iletimini tıpkı banka siteleri gibi AES-256 standartlarında şifreler. Tek farkı, sertifika Let's Encrypt veya Verisign gibi küresel olarak güvenilen bir otorite (CA) tarafından değil, sizin tarafınızdan onaylanmış olmasıdır.
Tek Komutla SSL/TLS Sertifikası Üretmek
Modern OpenSSL sürümlerinde, Özel Anahtar (Private Key) ve Sertifika (CRT) dosyalarını iki ayrı adımda üretmek yerine tek bir komutla saniyeler içinde oluşturabilirsiniz.
Terminalinizi açın ve sunucu dosyalarınızı barındıracağınız dizinde şu komutu çalıştırın:
Bash
openssl req -x509 -newkey rsa:4096 -keyout sunucu_anahtar.pem -out sunucu_sertifika.pem -sha256 -days 365 -nodes
Bu komutu çalıştırdığınızda OpenSSL sizden kurumunuzla ilgili bazı bilgiler (Ülke, Şehir, Kurum Adı vb.) isteyecektir. Burada en önemli alan Common Name (CN) alanıdır. Buraya sunucunuzun IP adresini (örn: 192.168.1.50) veya yerel alan adını (örn: lab.yerel) yazmalısınız.
Komutun Anatomisi
Neler yaptığımızı parametre düzeyinde inceleyelim:
req -x509: OpenSSL'e standart bir sertifika imzalama talebi (CSR) yerine doğrudan X.509 formatında (web sunucularının anladığı) bir sertifika oluşturmasını söyler.
-newkey rsa:4096: Sertifika ile eşleşecek 4096-bit gücünde yeni bir RSA özel anahtarı oluşturur.
-keyout sunucu_anahtar.pem: Üretilen özel anahtarın (Private Key) kaydedileceği dosya adıdır. Bu dosyayı asla paylaşmamalı ve sunucunuzda güvenli bir şekilde saklamalısınız.
-out sunucu_sertifika.pem: İstemcilere (tarayıcılara) sunulacak olan açık sertifika dosyasıdır.
-sha256: Sertifikanın imzalanması sırasında kullanılacak güvenli hash algoritmasıdır.
-days 365: Sertifikanın ne kadar süre geçerli olacağını belirtir (örnekte 1 yıl). Süre dolduğunda bu işlemi tekrarlamanız gerekir.
-nodes: "No DES" anlamına gelir. Özel anahtarın (Private Key) bir parola ile şifrelenmesini engeller. Eğer şifre koysaydık, Nginx veya Apache gibi web sunucuları her yeniden başlatıldığında sizden terminal üzerinden parola girmenizi beklerdi. Bu parametre, sunucunun gözetimsiz (unattended) olarak otomatik başlatılabilmesini sağlar.
Tarayıcı Uyarıları Hakkında
Sertifikanızı Nginx, Apache veya kullandığınız başka bir web sunucusuna entegre edip sayfanıza girdiğinizde tarayıcınız sizi engelleyecektir:
Tarayıcılar, işletim sistemlerinin içine gömülü olan güvenilir Kök Sertifika Otoriteleri (Root CA) listesine bakar. Sizin ürettiğiniz sunucu_sertifika.pem bu listede olmadığı için tarayıcı "Bu bağlantı şifreli ama sertifikayı imzalayan kişiyi tanımıyorum, sahte bir site olabilir" uyarısı verir.
Kendi yerel ağınızda çalıştığınız için "Gelişmiş -> Güvenli Değil (Devam Et)" seçeneğine tıklayarak ilerleyebilirsiniz. Trafiğiniz yine de %100 şifrelenmiş olacaktır.
Yerel ağınızda (örneğin laboratuvarınızdaki bir CTF sunucusu, merkezi yönetim paneli veya Webmin arayüzü) her seferinde tarayıcı uyarılarıyla uğraşmamak için kendi Kök Sertifika Otoritenizi (Root CA) kurmak en kesin çözümdür.
Mantık basittir: Kendi kurumunuzun "dijital noterini" (Root CA) kurarsınız. Ağınızdaki Pardus 25 istemcilerine ve Windows bilgisayarlara bu noterin güvenilir olduğunu bir kez öğretirsiniz. Bundan sonra o noterin imzaladığı tüm sunucu sertifikaları (CTF sunucunuz, güvenlik duvarınız, vb.) tarayıcılar tarafından otomatik olarak "Güvenli" kabul edilir.
Sistemi ayağa kaldırmak için işlemleri üç ana aşamada gerçekleştireceğiz. Sıralamaya dikkat etmeniz önemlidir.
1.Kök Sertifika Otoritesini (Root CA) Oluşturmak:10 Yıl Geçerli.
Öncelikle kendi yerel "Noterinizi" kurmanız gerekiyor. Bu işlemi güvenli bir cihazda yapın.
İlk olarak Root CA için 4096-bit gücünde bir özel anahtar oluşturalım:
Bash
openssl genrsa -des3 -out rootCA.key 4096
(Bu komut sizden Root CA'nizi korumak için çok güçlü bir parola isteyecektir, bunu unutmayın)
Şimdi bu anahtarı kullanarak Kök Sertifikanızın (Açık Sertifika) kendisini üretelim:
Bash
openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 3650 -out rootCA.pem
Ekrana gelen sorularda "Common Name" (CN) kısmına Benim Okul CA veya Lab Root CA gibi açıklayıcı bir isim yazın. Artık rootCA.pem dosyanız ağdaki cihazlara dağıtılmaya hazır.
2.Sunucu Sertifika İsteği (CSR) Hazırlamak:Sunucu Tarafında.
Diyelim ki ağınızda çalışan ve IP adresi 192.168.1.100 olan bir merkezi yönetim paneliniz var. Önce bu sunucu için bir anahtar ve istek (CSR) oluşturmalısınız.
Bash
openssl genrsa -out panel_sunucu.key 2048
Bash
openssl req -new -key panel_sunucu.key -out panel_sunucu.csr
Buradaki "Common Name" (CN) sorusuna sunucunun IP adresini (192.168.1.100) veya kullanıyorsanız yerel alan adını (örn: panel.lab) yazmalısınız.
3.Sunucu Sertifikasını Root CA ile İmzalamak:SAN (Subject Alternative Name) Zorunluluğu.
Modern tarayıcılar (Chrome, Firefox vb.) artık CN alanına güvenmiyor, sertifikanın içinde özel bir uzantı olan SAN (Subject Alternative Name) bilgisini arıyor. Bu olmadan Root CA'niz güvenilir olsa bile tarayıcı hata verir.
Bunun için aynı klasörde v3.ext adında bir metin dosyası oluşturun ve içine şunları yazın:
Plaintext
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
IP.1 = 192.168.1.100
DNS.1 = panel.lab
Şimdi, oluşturduğumuz Root CA ile sunucunun isteğini (CSR) bu uzantı dosyasını dikkate alarak imzalayalım:
Bash
openssl x509 -req -in panel_sunucu.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out panel_sunucu.crt -days 825 -sha256 -extfile v3.ext
Root CA parolanızı girin. Artık panel_sunucu.crt ve panel_sunucu.key dosyalarını sunucunuza (Nginx/Apache veya Python uygulamanıza) yükleyebilirsiniz.
4.Root CA'yı İstemcilere Dağıtmak ve Güvenilir Kılmak:
Son olarak oluşturduğunuz rootCA.pem dosyasını (Kök Sertifikayı) ağınızdaki bilgisayarların sistem güven deposuna eklemelisiniz.
Pardus 25 (Debian tabanlı) istemcileriniz için:
rootCA.pem dosyasının adını rootCA.crt olarak değiştirin.
Dosyayı /usr/local/share/ca-certificates/ dizinine kopyalayın.
Terminalde sudo update-ca-certificates komutunu çalıştırın.
Windows istemciler için:
rootCA.pem dosyasına çift tıklayın.
"Sertifika Yükle" (Install Certificate) butonuna tıklayın.
"Yerel Makine" (Local Machine) seçin.
"Tüm sertifikaları aşağıdaki depoya yerleştir" diyerek "Güvenilen Kök Sertifika Yetkilileri" (Trusted Root Certification Authorities) klasörünü seçip işlemi tamamlayın.
Önemli İpucu: Eğer oluşturduğunuz bu rootCA.pem dosyasını kaybederseniz veya şifresini unutursanız, daha önce imzaladığınız tüm sistemlerin sertifikalarını sıfırdan yenilemeniz ve yeni CA'yı tüm bilgisayarlara tekrar dağıtmanız gerekir. CA anahtarınızı çok iyi yedekleyin.
Yorumlar