Self-signed (kendinden imzalı) sertifika, herhangi bir CA tarafından değil, kendi özel anahtarıyla imzalanmış sertifikadır. Hiçbir tarayıcı veya işletim sistemi bu sertifikaya varsayılan olarak güvenmez; bu nedenle NET::ERR_CERT_AUTHORITY_INVALID veya OpenSSL'de hata 18 (self signed certificate) alırsınız. Test ortamları için pratiktir, herkese açık siteler için uygun değildir.
Test ortamı için üretim
Alan adı yerine SAN içeren, tek komutla üretilen bir örnek (OpenSSL 1.1.1 ve üzeri):
openssl req -x509 -newkey rsa:2048 -nodes -keyout test.key -out test.crt -days 365 -subj "/CN=test.local" -addext "subjectAltName=DNS:test.local"
Modern tarayıcılar yalnızca CN'ye güvenmediği için subjectAltName eklemeyi unutmayın.
Sertifikaya güvendirme
Windows:
certutil -addstore -f "Root" test.crt
Debian/Ubuntu: dosyayı /usr/local/share/ca-certificates/ altına .crt uzantısıyla kopyalayıp update-ca-certificates çalıştırın.
RHEL/CentOS: dosyayı /etc/pki/ca-trust/source/anchors/ dizinine koyup update-ca-trust çalıştırın.
Firefox kendi sertifika deposunu kullanır; sertifikayı tarayıcı ayarlarından ayrıca içe aktarmanız gerekir.
Canlı ortamda neden sorun?
- Ziyaretçiler güvenlik uyarısı görür ve çoğu siteyi terk eder.
- Uyarıyı geçmeye alışmak, gerçek bir ortadaki adam saldırısını fark etmeyi zorlaştırır.
- API istemcileri ve mobil uygulamalar bağlantıyı tümüyle reddedebilir.
- İstemci tarafında doğrulamayı kapatmak (örneğin
curl -k) yalnızca geçici test içindir.
Kalıcı çözüm
Herkese açık hizmetler için güvenilir bir CA'dan sertifika edinin. Bunun için CSR oluşturucu ile talep hazırlayıp SSL sertifikaları sayfasından ürün seçebilirsiniz. Yalnızca kurum içi sistemler için kendi CA'nızı kurup kökünü cihazlara dağıtmak, tek tek kendinden imzalı sertifikalar üretmekten daha yönetilebilirdir.