- Konu sahibi
- #1
OpenSSL, TLS iletişimi ve kriptografik işlemler için açık kaynaklı kütüphaneler; aynı zamanda sertifika, anahtar ve şifreleme işlemlerini komut satırından yönetmeye yarayan araç takımının adıdır. Web sunucusunun HTTPS bağlantısı kurması, sertifika üretimi veya mevcut sertifikanın incelenmesi gibi işlemlerde kullanılır. OpenSSL bir sertifika değildir; HTTPS protokolünün kendisi de değildir. TLS işlemlerini gerçekleştiren kütüphane ve yardımcı komutlardan oluşur.
OpenSSL ile özel anahtar ve sertifika imzalama isteği oluşturabilir, sertifika dosyasının ayrıntılarını okuyabilir ve bir sunucunun TLS bağlantısını test edebilirsiniz. Bir HTTPS bağlantısında TLS; veriyi şifreleme, aktarım sırasında değişiklikleri fark etme ve sunucunun kimliğini sertifika ile doğrulama görevlerini üstlenir.
SSL adı yaygın biçimde kullanılmaya devam etse de SSL protokolünün eski sürümleri güvenli kabul edilmez. Güncel web yapılandırmalarında amaç, OpenSSL aracılığıyla eski SSL yerine uygun TLS ayarlarını kullanmaktır.
Bir sunucunun
Bu örnek OpenSSL 3.x komut satırı seçeneklerini kullanır. Bağlantı sonucunda anlaşılan TLS sürümü ve sertifika doğrulama bilgisi görülür. Araç açık kalırsa etkileşimli oturumu Q ve Enter ile sonlandırabilirsiniz. Yerel güven deposu hazırlanmış olmalıdır; özel bir CA kullanılıyorsa ilgili güvenilir CA dosyası ayrıca tanımlanır.
-servername, TLS SNI alanına hedef adı gönderir; kendi başına sertifikadaki adı doğrulamaz. -verify_hostname hedef adın sertifikayla eşleşmesini kontrol eder. -verify_return_error ise doğrulama hatasında bağlantının devam etmesini engeller. Bu son seçenek olmadan test aracı bazı doğrulama hatalarını yazıp bağlantıyı sürdürebilir.
Alan adını yalnız Subject/CN metnine bakarak doğru saymayın; Subject Alternative Name alanı ve gerçek host doğrulaması önemlidir. Yerelde bulunan bir sertifikayı bağlantı kurmadan incelemek için:
Dosya bilgilerini okumak, zincirin güvenilirliğini veya canlı sunucunun aynı dosyayı sunduğunu tek başına kanıtlamaz. DNS, ağ erişimi, SNI, sertifika adı ve yerel CA deposunu birlikte değerlendirin; hata çıktısını gizleyerek yalnız olumlu satırı seçmeyin.
Aşağıdaki ayrım, hosting işlemlerinde hatalı dosya yüklemeyi önler:
Örneğin
OpenSSL ne işe yarar?
OpenSSL ile özel anahtar ve sertifika imzalama isteği oluşturabilir, sertifika dosyasının ayrıntılarını okuyabilir ve bir sunucunun TLS bağlantısını test edebilirsiniz. Bir HTTPS bağlantısında TLS; veriyi şifreleme, aktarım sırasında değişiklikleri fark etme ve sunucunun kimliğini sertifika ile doğrulama görevlerini üstlenir.
SSL adı yaygın biçimde kullanılmaya devam etse de SSL protokolünün eski sürümleri güvenli kabul edilmez. Güncel web yapılandırmalarında amaç, OpenSSL aracılığıyla eski SSL yerine uygun TLS ayarlarını kullanmaktır.
Somut örnek: HTTPS sertifikasını kontrol etmek
Bir sunucunun
example.com için hangi sertifikayı sunduğunu görmek istiyorsanız, OpenSSL'in kurulu olduğu bir terminalde şu komutu çalıştırabilirsiniz:
Bash:
openssl s_client -connect example.com:443 -servername example.com -verify_hostname example.com -verify_return_error -brief
Bu örnek OpenSSL 3.x komut satırı seçeneklerini kullanır. Bağlantı sonucunda anlaşılan TLS sürümü ve sertifika doğrulama bilgisi görülür. Araç açık kalırsa etkileşimli oturumu Q ve Enter ile sonlandırabilirsiniz. Yerel güven deposu hazırlanmış olmalıdır; özel bir CA kullanılıyorsa ilgili güvenilir CA dosyası ayrıca tanımlanır.
-servername, TLS SNI alanına hedef adı gönderir; kendi başına sertifikadaki adı doğrulamaz. -verify_hostname hedef adın sertifikayla eşleşmesini kontrol eder. -verify_return_error ise doğrulama hatasında bağlantının devam etmesini engeller. Bu son seçenek olmadan test aracı bazı doğrulama hatalarını yazıp bağlantıyı sürdürebilir.
Alan adını yalnız Subject/CN metnine bakarak doğru saymayın; Subject Alternative Name alanı ve gerçek host doğrulaması önemlidir. Yerelde bulunan bir sertifikayı bağlantı kurmadan incelemek için:
Bash:
openssl x509 -in certificate.crt -noout -subject -issuer -dates -ext subjectAltName
Dosya bilgilerini okumak, zincirin güvenilirliğini veya canlı sunucunun aynı dosyayı sunduğunu tek başına kanıtlamaz. DNS, ağ erişimi, SNI, sertifika adı ve yerel CA deposunu birlikte değerlendirin; hata çıktısını gizleyerek yalnız olumlu satırı seçmeyin.
OpenSSL ile hangi dosyalar karıştırılmamalı?
Aşağıdaki ayrım, hosting işlemlerinde hatalı dosya yüklemeyi önler:
| Öğe | Görevi | Örnek kullanım |
|---|---|---|
| Özel anahtar | Sunucunun gizli kriptografik anahtarıdır. | Sunucuda korunur, herkese açık paylaşılmaz. |
| Sertifika | Alan adının açık anahtarını ve kimlik bilgilerini taşır. | Web sunucusuna tanımlanır. |
| CA zinciri | Sertifikanın güvenilir bir otoriteye kadar doğrulanmasına yardımcı olur. | Bazı sunucularda ayrı zincir dosyası olarak yüklenir. |
| OpenSSL komutu | Bu dosyaları üretir, okur veya test eder. | openssl x509, openssl s_client |
openssl x509 -in certificate.crt -noout -text komutu bir sertifikanın alan adlarını, geçerlilik bilgilerini ve imza ayrıntılarını gösterir. Bu çıktı yalnızca inceleme içindir; sertifikayı sunucuda etkinleştirmek için ayrıca web sunucusunun TLS yapılandırmasına doğru sertifika, özel anahtar ve gerekiyorsa zincir dosyası tanımlanmalıdır.Kullanım kararı ve sık hatalar
- Sadece sertifikayı inceleyecekseniz
openssl x509kullanın; canlı bağlantıyı test edeceksenizopenssl s_clientkullanın. - Alan adı tabanlı HTTPS hizmetlerinde
-servernameseçeneğini ekleyin. Bu seçenek, aynı IP üzerinde birden fazla alan adı barındırılan sunucularda doğru sertifikanın seçilmesini sağlar. - Özel anahtar ile sertifikayı aynı dosya sanmayın. Sertifika paylaşılabilir; özel anahtar korunmalıdır.
- Sertifika geçerli görünse bile sunucunun doğru zinciri gönderdiğini ve istemcilerin kullandığı TLS sürümleriyle uyumlu olduğunu ayrıca kontrol edin.
- Komut çıktısını yorumlarken yalnızca “bağlantı kuruldu” satırına bakmayın; alan adı, geçerlilik tarihleri, veren otorite ve doğrulama sonucunu birlikte değerlendirin.