Bloğa geri dön

OpenSSL Temelleri: Özel Anahtarlar, Sertifika İmzalama Talepleri ve SSL Sertifikaları ile Çalışmak

OpenSSL Temelleri: Özel Anahtarlar, Sertifika İmzalama Talepleri ve SSL Sertifikaları ile Çalışmak

OpenSSL, TLS Protokolü ve Kamu Anahtarı Altyapısı sistemlerinde kullanılan çeşitli komutları içeren açık kaynaklı bir kriptografi kütüphanesidir. OpenSSL 1998 yılında piyasaya sürülmüştür ve Windows, Linux, macOS ve BSD sistemleri için mevcuttur. OpenSSL komutu, Sertifika İmzalama Talebi (CSR), özel anahtar oluşturma ve SSL sertifikasyonu dahil olmak üzere çeşitli görevleri gerçekleştirmenize yardımcı olacaktır.

OpenSSL önemlidir çünkü SSL'in düzgün bir şekilde uygulanmasını sağlar. SSL'i doğru şekilde edinmek, web sitenizin güvenliği için çok önemlidir. Dahası, önde gelen bir arama motoru olan Google, SSL sertifikası uygulanmış web sitelerine öncelik vermektedir. Chrome ve Firefox gibi bazı tarayıcılar, uygun bir SSL sertifikanız yoksa web sitenizi Güvenli Değil olarak işaretleyebilir. Bu nedenle, web sitenizin trafiğini şifrelenmiş HTTPS protokolü üzerinden sunmak son derece önemlidir.

Her Şeyden Önce

Bu eğitim, günlük senaryolarda kullanabileceğiniz OpenSSL komutlarının bazılarını (ancak muhtemelen hepsini değil) içeren kopya kağıdı (cheat sheet) tarzında bir kılavuzdur.

İlk bölüm, Sertifika İmzalama Talepleri (CSR) hakkında bilmeniz gereken her şeyi açıklamaktadır. Ancak, konuya zaten aşinaysanız, ulaşmaya çalıştığınız hedefle ilgili diğer bölümlere geçebilirsiniz. Her bölüm, alt başlıkta belirtilen işlemi gerçekleştirmek için bir komut satırı parçacığı içerir.

Hadi başlayalım!

Bölüm 1: Sertifika İmzalama Taleplerini (CSR) Anlamak

Sertifika imzalama talebi, bir sertifika yetkilisinden (CA) SSL sertifikası alırken bir ön koşuldur. CSR, bir anahtar çiftinin genel anahtarını ve bazı ek bilgileri içerir. İmzalama işlemi sırasında bunları sertifikaya eklemeniz gerekir.

CSR oluşturma sırasında, Ayırt Edici Ad (DN) olarak bilinen tanımlayıcı bilgileri sağlamanız istenir. DN, sertifikayı kullanacak ana bilgisayarın tam Alan Adı (FQDN) olan Ortak Ad (CN) gibi sertifika için gerekli alanları içerir. DN'nin diğer alanları; ülke, eyalet, bölge adı ve işletmenize özel sertifikalar oluşturuyorsanız kuruluş veya işletme adı gibi ek bilgiler içindir. Bilgileri bir dosyadan veya komut satırı üzerinden sağlayarak bu istemleri atlamayı seçebilirsiniz.

Aşağıdaki ekran görüntüsünde yer alan CSR bilgi istemi örneğine göz atın:

Aşağıda gösterildiği gibi -subj bayrağını ekleyerek ve alanların bilgilerini sağlayarak istemlerden kaçınmak için bilgileri tek satırlık bir komutla sağlayabilirsiniz:

Yukarıdaki komut, CSR bilgi istemlerinin kod bloğu örneğinde görüntülenen bilgilerin aynısını alır.

Bölüm 2: Sertifika İmzalama Talepleri Oluşturma

Bu bölümde, CSR ve özel anahtarlar oluşturmak için kullanabileceğiniz OpenSSL komutlarını ele alacağız. CSR'ler, bir Sertifika Yetkilisinden (CA) SSL sertifikası talep etmek için gereklidir.

Özel Anahtar ve Sertifika İmzalama Talebi Oluşturma

Bir Sertifika Yetkilisinin, Apache veya Nginx sunucunuzu güvence altına almak için bir SSL sertifikası düzenlemesini istiyorsanız bu yöntemi kullanabilirsiniz. sunucunuzun trafiği HTTPS, yani TLS destekli HTTP üzerinden sunmasını sağlayabilirsiniz. Bu komutla oluşturulan CSR, CA tarafından imzalanmış bir SSL sertifikası talep etmek üzere bir CA'ya gönderilebilir. Ubuntu üzerinde Apache veya Nginx sunucularınızı nasıl kuracağınıza dair ayrıntılı kılavuzlarımızı takip edebilirsiniz.

Sıfırdan 2048 bitlik bir özel anahtar (domain.key) ve CSR (domain.csr) oluşturmak için terminalinize aşağıdaki komutu girin:

Soruları özel CSR bilgilerinizle yanıtlayın. İsteğe bağlı olarak, sorulardan kaçınmak için komuta -subj bayrağını ekleyebilirsiniz:

The -newkey rsa:2048 bayrağı, anahtarın 2048 bitlik RSA algoritması kullanılarak oluşturulması gerektiğini belirtir. -nodes bayrağı, özel anahtar için parola şifrelemesi olmadığını gösterir. Dahil edilmeyen ancak yeni bir CSR'nin oluşturulduğunu gösteren bir -new seçeneği de ima edilmektedir.

Mevcut Bir Özel Anahtardan Sertifika İmzalama Talebi Oluşturma

Eğer zaten bir özel anahtarınız varsa, bir CSR oluşturmak için bu yöntemi kullanabilirsiniz. Daha sonra bunu bir CA'dan SSL sertifikası talep etmek için kullanacaksınız. Yeni bir CSR (domain.csr) oluşturmak için mevcut bir özel anahtar (domain.key):

Soruları özel CSR bilgilerinizle yanıtlayın. İsteğe bağlı olarak, sorulardan kaçınmak için komuta -subj bayrağını ekleyebilirsiniz:

The flag -key bayrağı, yeni bir CSR oluşturmak için kullanılacak mevcut özel anahtarı (domain.key) belirtir. -new bayrağı ise yeni bir CSR oluşturulduğunu gösterir.

Mevcut Bir Sertifika ve Özel Anahtardan Sertifika İmzalama Talebi Oluşturma

Eğer bir CSR oluşturmak için kullanmak istediğiniz mevcut bir sertifikanız varsa, bu yöntemi kullanabilirsiniz. Bu yöntem, sizin veya CA'nızın orijinal CSR'yi kaybetmesi durumunda ve daha önce girilen CSR bilgilerini yeniden girmek zorunda kalmadan oluşturmanız gerektiğinde yararlı olabilir. Komut, bilgileri mevcut sertifikadan çıkarır. Terminalinizde yeni bir CSR (domain.csr) oluşturmak için mevcut bir sertifikası (domain.crt) ve mevcut bir özel anahtar (domain.key):

-x509toreq seçeneği, CSR'yi oluşturmak için X509 sertifikasını kullandığınızı belirtir.

Bölüm 3: SSL Sertifikaları Oluşturma

Bazı durumlarda, CA tarafından imzalanmış bir sertifika alma zahmetine girmeden bir SSL sertifikası kullanmak isteyebilirsiniz. Bu bölümde kendi sertifikalarınızı nasıl imzalayabileceğiniz açıklanmaktadır. Bu geçerli ve ücretsizdir. Bu sertifikalar kendinden imzalı sertifikalar olarak adlandırılır ve oldukça yaygındır.

Kendinden imzalı bir sertifika, kendi özel anahtarıyla imzalanır. Hem kendinden imzalı hem de CA tarafından imzalanmış sertifikalar, verileri ve web sitesi trafiğini şifrelemek için aynı derecede iyi çalışır. Ancak, kendinden imzalı sertifikalarda kullanıcılar genellikle tarayıcılarında sertifikanın güvenilir olmadığına dair bir uyarı alırlar. Bu nedenle, kendinden imzalı sertifikaları kullanıcılarla hassas bilgi alışverişinde bulunmayan web siteleri için veya üretim dışı sunucularda kullanabilirsiniz. Aşağıda, kendinden imzalı sertifikalar oluşturmak için kullanabileceğiniz OpenSSL komutlarını bulabilirsiniz.

  • Kendinden İmzalı Sertifika Oluşturma

Apache veya Nginx sunucunuzu güvenli hale getirmek amacıyla bir SSL sertifikası oluşturmak için bu yöntemi kullanabilirsiniz. Bu, sertifikayı imzalatmak için bir CA'ya gitmeden trafiğin HTTPS veya TLS üzerinden HTTP ile gelmesini sağlayacaktır:

İstemleri özel CSR bilgilerinizle yanıtlayın. İsteğe bağlı olarak, istemlerden kaçınmak için komuta -subj bayrağını ekleyebilirsiniz:

The -x509 bayrağı, kendinden imzalı bir sertifika oluşturulduğunu belirtir. -days 365 seçeneği, sertifikanın geçerli olacağı gün sayısını belirtir. Bu durumda 365 gündür. Farklı bir gün sayısı da seçebilirsiniz. Komut, sertifikayla ilişkilendirmeniz gereken bilgileri tutmak için geçici bir CSR oluşturur.

  • Mevcut Bir Özel Anahtardan Kendinden İmzalı Sertifika Oluşturma

Bu yöntem, halihazırda mevcut olan özel anahtarınızdan kendinden imzalı bir sertifika oluşturmanıza yardımcı olacaktır. Kendinden imzalı bir sertifika (domain.crt) oluşturmak üzere, şu mevcut özel anahtarı kullanmak için aşağıdaki komutu girin: (domain.key):

İstemlere özel CSR bilgilerinizi girin. İsteğe bağlı olarak, istemlerden kaçınmak için komuta -subj bayrağını ekleyebilirsiniz:

The -x509 bayrağı, kendinden imzalı bir sertifika oluşturulduğunu belirtir. -days 365 seçeneği, sertifikanın geçerli olacağı gün sayısını belirtir. Bu durumda 365 gündür. Farklı bir gün sayısı da seçebilirsiniz. -new seçeneği, CSR bilgi istemini başlatır.

Bölüm 4: Sertifikaları Görüntüleme

Sertifikalar ve CSR dosyaları kodlanır ve .pem uzantısıyla saklanır. Bu uzantı, Gizliliği Artırılmış Posta (Privacy-Enhanced Mail) anlamına gelir. Kriptografik anahtarları, sertifikaları ve diğer kritik verileri depolamak ve göndermek için kullanılan bir dosya biçimidir. PEM dosyaları insanlar tarafından kolayca okunamaz. Bu bölümde, kodlanmış PEM dosyalarındaki girdileri görüntülemek için kullanabileceğiniz komutları bulacaksınız.

  • CSR Dosyalarını Görüntüleme

Bir CSR'nin (domain.csr) içeriğini terminalinizde görüntülemek ve doğrulamak için aşağıdaki komutu girin:

Örneğin, yukarıdaki komut şuna benzer bir çıktı verebilir:

Viewing CSR files

  • Sertifika Girdilerini Görüntüleme

Bir sertifikanın içeriğini görüntülemek için aşağıdaki komutu girin: (domain.crt):

Yukarıdaki komut şuna benzer bir çıktı verebilir:

OpenSSL

  • Bir Sertifikanın Bir Sertifika Yetkilisi Tarafından İmzalandığını Doğrulama

Bir sertifikanın (domain.crt) belirli bir CA sertifikası (ca.crt) tarafından imzalanıp imzalanmadığını doğrulamak için aşağıdaki komutu girin:

 

Bölüm 5: Özel Anahtarlar

Özel anahtarlar oluşturmak ve doğrulamak için gerekli OpenSSL komutlarını arıyorsanız, bu bölüm tam size göre.

  • Özel Anahtar Oluşturma

Şifre korumalı 2048 bitlik bir özel anahtar (domain.key) oluşturmak için terminalinize aşağıdaki komutu girin:

Komut, işlemi tamamlamak için sizden bir şifre isteyecektir. Aşağıdaki ekran görüntüsüne bakın:

Creating a Private Key

  • Özel Anahtarı Doğrulama

Bir özel anahtarın (domain.key) geçerliliğini doğrulamak için terminalinize aşağıdaki komutu girin:

Ardından, bir şifre girmeniz gerekecektir. Özel anahtar şifrelenmişse ve doğru parolayı girerseniz, şifrelenmemiş anahtar terminalde görüntülenecektir. Aşağıdaki ekran görüntüsüne bakın:

Verifying a Private Key

  • Bir Özel Anahtarın bir Sertifika ve CSR ile Eşleştiğini Doğrulama

Bir özel anahtarın (domain.key) bir sertifika (domain.crt) ve bir CSR (domain.csr) ile eşleşip eşleşmediğini kontrol etmek istiyorsanız, terminalinize aşağıdaki komutları girin:

Yukarıdaki komutların çıktısının aynı olduğunu fark ederseniz, özel anahtar, sertifika ve CSR'nin birbiriyle ilişkili olması muhtemeldir.

  • Bir Özel Anahtarı Şifreleme

Şifrelenmemiş bir özel anahtarınız varsa (unencrypted.key) ve anahtarın şifrelenmiş sürümünü elde etmek istiyorsanız (encrypted.key), terminalinize aşağıdaki komutu girin:

Komut, özel anahtarı şifrelemek için sizden bir parola isteyecektir.

  • Bir Özel Anahtarın Şifresini Çözme

Şifrelenmiş bir özel anahtarınız varsa (encrypted.key) ve bunun şifresi çözülmüş sürümünü elde etmek istiyorsanız (decrypted.key), terminalinize aşağıdaki komutu girin:

Komut, şifrelenmiş anahtar için sizden bir parola isteyecektir. Doğru parolayı girerseniz şifre çözülecektir. Çıktı şuraya kaydedilecektir: decrypted.key.

 

Bölüm 6: Sertifika Formatlarını Dönüştürme

Şimdiye kadar ASCII PEM ile kodlanmış X.509 sertifikalarıyla çalıştığımızı fark etmiş olabilirsiniz. Bu durum sorun yaratmasa da, kullanabileceğiniz çeşitli başka sertifika kodlama ve kapsayıcı türleri de mevcuttur. Bazı uygulamalarda, belirli formatları diğerlerine tercih edebilirsiniz. Dahası, bazı farklı formatlar özel anahtar, CSR ve CA tarafından imzalanmış sertifika gibi birden fazla öğeyi tek bir dosyada barındırabilir. Çeşitli sertifika formatları arasında dönüştürme yapmak için OpenSSL'i de kullanabilirsiniz. Sertifika formatı dönüştürme işlemine yönelik bazı OpenSSL komutları için okumaya devam edin.

  • PEM'i DER'e Dönüştürme

DER (Distinguished Encoding Rules), X.509 sertifikaları ve özel anahtarlar için ikili (binary) bir kodlamadır. PEM kodlu bir sertifikayı (domain.crt) DER kodlu bir sertifikaya (domain.der), dönüştürmek için aşağıdaki komutu girin:

DER kodlama formatının çoğu kullanım alanını Java programlama dilinde bulabilirsiniz. Ubuntu sunucunuzda Java'yı hızlıca kurmak için bu öğreticiyi takip edin.

  • DER'i PEM'e Dönüştürme

DER kodlu bir sertifikayı (domain.der) bir PEM sertifikasına (domain.crt), dönüştürmek için aşağıdaki komutu girin:

 

  • PEM'i PKCS7'ye Dönüştürme

Örneğin, domain.crt ve ca-chain.crt PEM sertifikalarını bir PKCS7 dosyasına (domain.p7b) eklemek isteyebilirsiniz. Bunu gerçekleştirmek için gereken komut şudur:

PKCS7 dosyasına eklenecek sertifikaları belirtmek için -certfile seçeneğini birden fazla kez kullanabilirsiniz. PKCS7 dosyaları çoğunlukla Java Key Store'lar ve Microsoft IIS ile ilgilidir. P7B dosyaları olarak da bilinen bu dosyalar, sertifikaları ve CA tarafından imzalanmış sertifikaları içerebilen ASCII dosyalarıdır.

  • Convert PKCS7 to PEM

Bir PKCS7 dosyasını (domain.p7b) PEM kodlu bir dosyaya (domain.crt), dönüştürmek için terminalinize aşağıdaki komutu girin:

 

  • PEM'i PKCS12'ye Dönüştürme

Bir özel anahtarı (domain.key) ve bir sertifikayı (domain.crt) bir PKCS12 dosyası (domain.pfx), aşağıdaki komutu girin:

Komut, isteğe bağlı olarak boş bırakabileceğiniz dışa aktarma şifrelerini girmenizi isteyecektir. Sertifikaları tek bir PEM dosyasında (domain.crt) birleştirerek PKCS12 dosyasına birçok sertifika bağlayabilirsiniz. PKCS12, PFX olarak da bilinir ve çoğunlukla şurada kullanılır: Microsoft IIS.

  • PKCS12'yi PEM'e Dönüştürme

Bir PKCS12 dosyasını (domain.pfx) PEM kodlu bir biçime (domain.combined.crt) dönüştürmek için aşağıdaki komutu girin:

Yukarıdaki komut tarafından oluşturulan PEM dosyası, PKCS12'nin barındırdığı tüm çoklu öğeleri içerir.

Bölüm 7: OpenSSL Sürümünü Kontrol Etme

Çalıştırdığınız herhangi bir yazılımın sürümü, çalıştırdığınız uygulamaların yeteneklerini etkileyebilir. Bu nedenle, sürümün belirlenmesi gerekir. Aynı durum OpenSSL için de geçerlidir. Bazı komut satırı seçenekleri bir sürümde eksik olabilir ve başka bir sürümde mevcut olabilir. Çalıştırdığınız OpenSSL sürümünü görüntülemek için aşağıdaki komutu girin:

Bu kılavuzu oluştururken yukarıdaki komutu çalıştırdığımızda aldığımız çıktı aşağıdadır:

Aşağıda gerçek ekran görüntüsünü bulabilirsiniz:

OpenSSL

Sonuç

Bu kılavuzda OpenSSL'in ne olduğunu açıkladık, sertifika imzalama taleplerini (CSR) ve sunucu ortamınızda kullanabileceğiniz bazı önemli OpenSSL komutlarını ele aldık.

Önemli bir komutu mu kaçırdık yoksa CloudSigma üzerindeki sunucu kurulumunuzda yer alan komutlardan herhangi biriyle ilgili sorun mu yaşıyorsunuz? Bunu görüşmek için 7/24 müşteri destek ekibimizle gerçek zamanlı sohbet üzerinden iletişime geçmekten çekinmeyin.

Keyifli Çalışmalar!

author

Manpreet Singh

Yazar · CloudSigma

Preslav Dobrev, CloudSigma'da Kreatif Tasarımcı olarak görev yapmakta olup geleneksel ve yenilikçi pazarlama kanallarını kullanarak tutarlı bir kurumsal kimlik oluşturmaya odaklanmaktadır. Sanatsal vizyonu stratejik pazarlamayla harmanlayarak etkili marka anlatıları oluşturma konusunda oldukça yeteneklidir.

Yorumlar

Henüz yorum yapılmamış. İlk siz olun.