OpenSSL, SSL ve TLS protokollerinin açık kaynak kodlu bir uygulamasıdır. C programlama dili ile yazılmış master kütüphane temelli kriptografik fonksiyonları uygular. OpenSSL’i farklı programlama dilleriyle derlemek ve kullanabilmek için geliştirilmiş ara yazılımlar da bulunmaktadır.
OpenSSL, Open Source (açık kaynak bir şifreleme kütüphanesi ve SSL/TLS protokollerini uygulayan bir araçtır. SSL/TLS protokolleri, internet üzerinde güvenli bir şekilde veri iletişimi yapmak için kullanılan standartlardır.
SSL/TLS bağlantılarının kurulması ve yönetimi için gerekli olan altyapıyı sağlar.
Bu işlevler sırasında, şifreleme anahtarlarının oluşturulması, dijital sertifikaların yönetimi, şifreleme algoritmalarının seçimi, random sayı üretimi, verilerin şifrelenmesi ve çözümlenmesi gibi işlemler yer alır.
OpenSSL, Open source bir proje olarak geliştirildiği için, kullanıcılar tarafından kolayca özelleştirilebilir ve farklı platformlara yayınlanabilir. Bu nedenle, birçok farklı işletim sistemi ve platformda kullanılabilir.
SSL/TLS protokollerinin haricinde , diğer şifreleme protokollerini de uygulayabilir. Bu protokoller arasında, S/MIME, HTTPS, SSH ve IPSec gibi protokoller bulunur.
OpenSSL, birçok farklı Platformda kullanılır. Örneğin, web sunucular, e-posta sunucuları, VPN yazılımları, veritabanı sistemleri ve diğer uygulamalar, OpenSSL’i kullanarak güvenli veri ve data iletişimi sağlanmaktadır.
Open SSL kurulumu
Aşağıdaki adrese gidiyoruz ve son veriyon paketimizi işletim sistemimize uygun olan sürümde indiriyoruz.
C:\Program Files\OpenSSL-Win64
İndirdiğimiz paketin kurulumunu dizin değiştirmeden Next diyerek tamamlıyoruz.
Open SSL Parametreleri
Parametre | Açıklama |
-nocerts | Sunucu tarafından gönderilen sertifikaları doğrulamaz. |
-nokeys | Özel anahtarı kullanmaz. |
-clcerts | İstemci sertifikalarını (client certificates) kullanmaz. |
-nodes | Özel anahtarı şifrelemez. |
-days | Sertifikanın geçerlilik süresini gün cinsinden belirtir. |
-subj | Sertifikanın “konusu” (subject) bilgilerini belirtir. |
-req | Bir sertifika istek dosyası (certificate request file) oluşturur. |
-CAfile | Sertifika yetkilisinin (CA) sertifikasının dosya yolunu belirtir. |
-CAkey | Sertifika yetkilisinin (CA) özel anahtarının dosya yolunu belirtir. |
-crl | Sertifika iptal listesinin (certificate revocation list) dosya yolunu belirtir. |
-showcerts | Bir sunucuya bağlanırken sunucunun sunduğu tüm sertifikaları gösterir. |
-key | Özel anahtar dosyasının adını belirtir. |
-out | Sertifika dosyasının adını belirtir. |
-hash | Sertifika için kullanılan karma algoritmasını belirtir. |
-md | Sertifika için kullanılan karma algoritmasını belirtir (aynı -hash ile). |
-name | Sertifika için kullanılan uzantıların adını belirtir. |
-extfile | Sertifika için kullanılan uzantıların bulunduğu dosya adını belirtir. |
-config | OpenSSL ayar dosyasının adını belirtir. |
Dosya uzantı formatları
Uzantı | Ne İşe Yarar | Nerede Kullanılır | |
PEM | Privacy Enhanced Mail | E-posta ve diğer veri türleri için şifreleme ve dijital imza. | E-posta, S/MIME, PGP |
CER | Certificate | X.509 formatında bir sertifika dosyası. | Web sunucuları, VPN’ler, TLS/SSL |
DER | Distinguished Encoding Rules | ASN.1 kodlama formatında bir sertifika dosyası. | Akıllı kartlar, gömülü sistemler |
CRT | Certificate | X.509 formatında bir sertifika dosyası (CER ile aynı). | Web sunucuları, VPN’ler, TLS/SSL |
PFX | Personal Information Exchange | Şifrelenmiş bir PKCS#12 dosyası. Sertifika, özel anahtar ve diğer bilgiler içerir. | E-posta, mobil uygulamalar, IoT cihazları |
P12 | Personal Information Exchange | PFX ile aynı. | E-posta, mobil uygulamalar, IoT cihazları |
JKS | Java Key Store | Java uygulamaları tarafından kullanılan anahtarlık dosyası. Sertifikalar ve özel anahtarlar içerir. | Java web uygulamaları, Java mobil uygulamaları |
KEY | Private Key | Özel anahtar dosyası. | Şifreleme, dijital imza, SSH |
- PEM dosyaları genellikle base64 kodlu metin içerir.
- CER ve DER dosyaları genellikle ikili kod içerir.
- PFX ve P12 dosyaları şifrelenir ve bir parola ile korunur.
- JKS dosyaları Java Keytool ile yönetilebilir.
- KEY dosyaları RSA, DSA, ECDSA gibi farklı algoritmalarda olabilir.
PFX to .key & .crt file
Ben “C:\temp” adında bir folder oluşturuyorum ve dosyalarımı bunun içinde oluşturacağım. Dizinimin altında abc.pfx dosyamı kopyalıyorum.
openssl pkcs12 –in [yourfile.pfx] -out [drlive.key] -nodes
Yukarıdaki komutu kendi dizin yapımıza göre düzenliyoruz, ilk olarak uygulamanın olduğu dizine gidiyoruz.
C:\Program Files\OpenSSL-Win64\bin
openssl.exe pkcs12 –in C:\temp\abc.pfx -out C:\temp\abc_privateKey.key -nodes
Yukarıdaki işlemden sonra çıktımız aşağıdaki gibi olacak. Bu işlemle “.key” dosyamızı oluşturduk.
Şimdi .crt dosyamızı oluşturmak için aşağıdaki komutu giriyoruz.
openssl pkcs12 –in [yourfile.pfx] -clcerts -nokeys -out [drlive.crt]
#Aynı .pfx dosyasını .crt dosyasına ayrıştırıyoruz.
openssl.exe pkcs12 –in C:\temp\abc.pfx -clcerts -nokeys -out C:\temp\abc_cert.crt
İşlemlerimiz tamamlandığında dizinimiz içerisinde aşağıdaki şekilde sertifka dosyalarımızı görüyor olacağız.
Convert .pfx file to .pem format
#Bu komutla bir PFX’in özel anahtarını bir PEM dosyasına çıkartabiliriz:
openssl pkcs12 -in C:\temp\abc.pfx -nocerts -out C:\temp\abc.pem
#Exporting the certificate only (pem dosyasına şifre koymanıza gerek kalmaz)
openssl pkcs12 –in C:\temp\abc.pfx -clcerts -nokeys -out C:\temp\abc.pem
#Metot2
openssl pkcs12 –in filename.pfx -out cert.pem -nodes
open ssli kullanarak istediğiniz türde sertifika parçalama/birleştirme ve oluştrma işlemlerini kolaylıkla yapabilirsiniz.