4 min read

Self-Signed SSL Sertifikası Oluşturma Rehberi

İnternet üzerinden güvenli iletişim sağlamak için SSL (Secure Sockets Layer) sertifikaları kullanılır. Bu sertifikalar, web siteleri ile kullanıcılar arasındaki verilerin şifrelenmesini sağlar. Genellikle, SSL sertifikaları güvenilir sertifika otoriteleri (CA) tarafından sağlanır. Ancak, bazı durumlarda kendi kendine imzalanmış (self-signed) SSL sertifikaları oluşturmak gerekebilir. Bu makalede, cpynet.com alan adı için geçerli bir self-signed SSL sertifikasının nasıl oluşturulacağını adım adım öğreneceksiniz.

1. Self-Signed SSL Sertifikası Nedir?

Self-signed SSL sertifikası, bir sertifika otoritesi (CA) tarafından değil, kendi sunucunuz tarafından imzalanan bir SSL sertifikasıdır. Bu tür sertifikalar, geliştirme ve test ortamlarında veya iç ağlarda kullanmak için idealdir. Ancak, tarayıcılar bu sertifikalara güvenmediği için, kullanıcılar bağlantının güvenli olmadığını belirten uyarılarla karşılaşabilirler.

Avantajları:

  • Maliyet: Ücretsizdir.
  • Hızlı Oluşturma: Hızlı ve kolay bir şekilde oluşturulabilir.
  • Kontrol: Sertifikanın tüm yönleri üzerinde tam kontrol sağlar.

Dezavantajları:

  • Güvenilirlik: Tarayıcılar ve kullanıcılar tarafından güvenilmez olarak işaretlenir.
  • Kullanım Alanı: Genellikle üretim ortamlarında önerilmez.

2. Self-Signed SSL Sertifikası Oluşturmanın Gerekliliği

Self-signed SSL sertifikaları, özellikle aşağıdaki durumlarda kullanışlıdır:

  • Geliştirme ve Test: Geliştirme ortamlarında uygulamaların SSL ile çalışmasını test etmek için.
  • İç Ağlar: Şirket içi uygulamalarda, dışarıdan erişilmeyen sistemlerde.
  • Öğrenme ve Eğitim: SSL sertifikalarının nasıl çalıştığını öğrenmek için.

3. Self-Signed SSL Sertifikası Oluşturma Adımları

Self-signed SSL sertifikası oluşturmak için en yaygın kullanılan araç OpenSSL'dir. Aşağıda, OpenSSL kullanarak geçerli bir self-signed SSL sertifikası oluşturmanın adımlarını bulabilirsiniz.

3.1. OpenSSL Kurulumu

Öncelikle, sisteminizde OpenSSL'in kurulu olduğundan emin olun. Çoğu Linux dağıtımında OpenSSL varsayılan olarak yüklüdür. Kurulu değilse, aşağıdaki komutlarla yükleyebilirsiniz:

  • Ubuntu/Debian:
sudo apt-get update
sudo apt-get install -y openssl
  • CentOS/RHEL:
sudo yum install -y openssl
  • macOS (Homebrew kullanarak):
brew install openssl

3.2. Özel Anahtar (Private Key) Oluşturma

Özel anahtar, sertifikanın güvenliğini sağlamak için gereklidir. Aşağıdaki komutla 2048 bitlik bir RSA özel anahtarı oluşturabilirsiniz:

openssl genrsa -out cpynet.key 2048

3.3. Sertifika İmzalama İsteği (CSR) Oluşturma

CSR, sertifika otoritesine gönderilen ve sertifikanın temel bilgilerini içeren bir dosyadır. Ancak, self-signed sertifika oluştururken CSR'ı kendi kendinize imzalayacaksınız.

openssl req -new -key cpynet.key -out cpynet.csr

Bu komut, sizden çeşitli bilgiler girmenizi isteyecektir:

  • Country Name (Ülke Adı): Örneğin, TR
  • State or Province Name (Eyalet veya İl): Örneğin, İstanbul
  • Locality Name (Yerel Bölge): Örneğin, Kadıköy
  • Organization Name (Organizasyon Adı): Örneğin, Cpynet
  • Organizational Unit Name (Organizasyon Birimi): Örneğin, IT Bölümü
  • Common Name (Alan Adı): Sertifikanın geçerli olacağı alan adı, örneğin cpynet.com
  • Email Address (E-posta Adresi): Örneğin, admin@cpynet.com

3.4. Self-Signed Sertifika Oluşturma

CSR ve özel anahtar kullanarak self-signed bir sertifika oluşturabilirsiniz:

openssl x509 -req -days 365 -in cpynet.csr -signkey cpynet.key -out cpynet.crt

Bu komut, 365 gün geçerli olacak bir sertifika oluşturur. -days parametresi ile sertifikanın geçerlilik süresini belirleyebilirsiniz.

4. Self-Signed SSL Sertifikasını Web Sunucusuna Yükleme

Oluşturduğunuz self-signed SSL sertifikasını web sunucunuza yüklemek için aşağıdaki adımları izleyebilirsiniz. Bu örnekte, Nginx web sunucusunu kullanacağız.

4.1. Nginx Kurulumu (Eğer Yüklü Değilse)

  • Ubuntu/Debian:
sudo apt-get update
sudo apt-get install -y nginx
  • CentOS/RHEL:
sudo yum install -y epel-release
sudo yum install -y nginx

4.2. Sertifika ve Anahtar Dosyalarını Kopyalama

Oluşturduğunuz cpynet.crt ve cpynet.key dosyalarını Nginx'in SSL dizinine kopyalayın:

sudo mkdir -p /etc/nginx/ssl
sudo cp cpynet.crt /etc/nginx/ssl/
sudo cp cpynet.key /etc/nginx/ssl/

4.3. Nginx Konfigürasyonunu Düzenleme

Nginx yapılandırma dosyasını açın ve SSL ayarlarını ekleyin veya mevcut yapılandırmayı düzenleyin.

sudo nano /etc/nginx/sites-available/default

Aşağıdaki örnek konfigürasyonu kullanabilirsiniz:

server {
    listen 80;
    server_name cpynet.com www.cpynet.com;

    # HTTP'den HTTPS'ye yönlendirme
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name cpynet.com www.cpynet.com;

    ssl_certificate /etc/nginx/ssl/cpynet.crt;
    ssl_certificate_key /etc/nginx/ssl/cpynet.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        proxy_pass http://localhost:3000; # Uygulamanızın çalıştığı port
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Not: proxy_pass satırında uygulamanızın çalıştığı portu belirtin.

4.4. Nginx Yapılandırmasını Test Etme ve Yeniden Başlatma

Yapılandırma dosyasındaki hataları kontrol edin:

sudo nginx -t

Hata yoksa, Nginx'i yeniden başlatın:

sudo systemctl restart nginx

5. Self-Signed Sertifikayı Doğrulama

Web tarayıcınızda cpynet.com alan adınızı ziyaret ettiğinizde, tarayıcı güvenlik uyarısı verebilir. Bu normaldir çünkü sertifika bir CA tarafından imzalanmamıştır. Sertifikayı kabul etmek için tarayıcıdaki uyarıyı geçebilirsiniz.

5.1. Sertifikayı Güvenilir Olarak Eklemek (Tarayıcıya Bağlı)

  • Chrome:
    • Uyarı sayfasında "Gelişmiş" seçeneğine tıklayın ve "cpynet.com'a devam et" seçeneğini seçin.
  • Firefox:
    • Uyarı sayfasında "Gelişmiş" butonuna tıklayın, ardından "Bu riski kabul et ve devam et" seçeneğini seçin.

Not: Sertifikayı her tarayıcıda güvenilir olarak eklemek için sertifikayı sisteminizin veya tarayıcınızın sertifika deposuna manuel olarak eklemeniz gerekir.

6. Güvenlik İpuçları ve Öneriler

Self-signed SSL sertifikaları, güvenilir sertifika otoriteleri tarafından sağlanan sertifikalar kadar güvenli değildir. Ancak, geliştirme ve test ortamlarında kullanıldığında faydalıdır. İşte bazı güvenlik ipuçları:

  • Sertifika Güvenliği: Özel anahtarınızı güvenli bir yerde saklayın ve erişimi sınırlayın.
  • Sertifika Süresi: Sertifikanın geçerlilik süresini ihtiyaçlarınıza göre belirleyin. Uzun süreli sertifikalar risk oluşturabilir.
  • Güncellemeler: Web sunucusu ve SSL konfigürasyonunuzu güncel tutun.
  • Firewall Kullanımı: Sunucunuza erişimi kontrol etmek için güvenlik duvarı kurallarını yapılandırın.

Sonuç

Self-signed SSL sertifikaları, özellikle geliştirme ve test ortamlarında güvenli iletişim sağlamak için etkili bir çözümdür. Bu rehberde, OpenSSL kullanarak geçerli bir self-signed SSL sertifikasının nasıl oluşturulacağını ve Nginx web sunucusunda nasıl yapılandırılacağını öğrendiniz. Üretim ortamlarında, güvenilir sertifika otoritelerinden SSL sertifikaları almanız önerilir, ancak self-signed sertifikalar, hızlı ve maliyetsiz çözümler sunar.