WordPress HTTPS, SSL & TLS – web sitesi yöneticileri için bir rehber

Yayınlanan: 2021-02-01

Bir web sitesini ziyaret ettiğinizde, tarayıcınız ( istemci olarak da bilinir) bir web sunucusuna bir HTTP isteği gönderir. Web sunucusu bir HTTP yanıtı gönderdiğinde, tarayıcı sayfayı ekranınıza görüntüleyebilir. Ancak, HTTP trafiğinin bir sorunu vardır; düz metin protokolüdür. Bu, onu gözetlemeye ve karışmaya açık hale getirir.

Bir saldırgan sizinle aynı ağdaysa, HTTP trafiğinizi yakalayabilir ve okuyabilir. Ayrıca hem sunucuya olan isteklerinizi hem de sunucunun size verdiği yanıtları değiştirebilirler. Bu, Ortadaki Adam (MitM) saldırısı olarak bilinir. Bu, otel lobileri ve kamusal alanlar gibi halka açık WiFi'lerde kolayca olabilir.

Bu nedenle bir web sitesi HTTPS'de olmalıdır - bu nedenle trafik engellenemez. Bu makale HTTPS, SSL ve TLS'nin ne olduğunu açıklamaktadır. Ayrıca, WordPress web sitenizi HTTPS üzerinde çalışacak şekilde nasıl yapılandırabileceğinizi de açıklar.

İçindekiler

  • SSL ve TLS nedir?
  • HTTPS nedir?
    • HTTPS nasıl çalışır?
      • TLS el sıkışması
      • Genel ve özel anahtarlar (anahtar çifti)
  • WordPress web sitemde gerçekten HTTPS'ye ihtiyacım var mı?
    • HTTPS TLS sertifikası alma (diğer adıyla SSL sertifikası)
    • Paylaşılan ve yönetilen WordPress barındırmada HTTPS
  • WordPress HTTPS'yi Yapılandırma
    • Web sunucusunu yapılandırma
    • WordPress URL'sini HTTPS'ye Yapılandırma
    • WordPress panosunda TLS'yi zorlama (Bonus ipuçları)
  • HTTP Strict Transport Security (HSTS) Ekleme
    • Web sunucusunda HSTS'yi yapılandırma
    • TLS Şifreleri
    • WordPress'im HTTPS üzerinde çalışıyor, güvenli mi?

SSL ve TLS nedir?

İnternet büyümeye başladığında, kimsenin trafiği dinlemeden veya değiştirmeden, SSL veya Güvenli Yuva Katmanı girmeden bir istemci ile sunucu arasında güvenli bir şekilde bilgi aktarmak için bir mekanizmaya ihtiyacımız olduğu ortaya çıktı. SSL, bu sorunu çözmek için ilk kez 1995 yılında Netscape tarafından geliştirilmiş bir İnternet güvenlik protokolüdür.

Daha spesifik olarak, SSL aşağıdakileri gerçekleştirmek için yola çıktı:

  • Şifreleme — trafiği, yetkisiz bir üçüncü tarafça gizlice dinleme yoluyla ele geçirilemeyecek şekilde şifrelemek için,
  • Kimlik doğrulama - istemcinin konuştuğu sunucunun gerçekten de olduklarını söyledikleri sunucu olduğundan emin olmak için,
  • Bütünlük — istemci ile sunucu arasında gönderilen verilerin bu sırada başka biri tarafından değiştirilmemesini sağlamak.

Ancak, zaman içinde güvenlik araştırmacıları SSL'de bir dizi güvenlik sorunu tespit etti. Bu nedenle SSL'nin yerini TLS (Aktarım Katmanı Güvenliği protokolü) almıştır. SSL ve TLS arasındaki gizli farklar ciddi olsa da, TLS'nin amacı büyük ölçüde aynı kalır.

NOT: TLS'ye atıfta bulunmak için sıklıkla SSL kullanıldığını görebilirsiniz. SSL eski bir protokoldür ve artık kullanımı güvenli değildir. Bununla birlikte, popülerliği nedeniyle çoğu kişi hala kısaltma olarak SSL kullanıyor, ancak bunlar TLS anlamına geliyor .

HTTPS nedir?

HTTPS veya Güvenli Köprü Metni Aktarım Protokolü, HTTP protokolünün güvenli bir sürümüdür. HTTPS, önceden kullanılan Güvenli Yuva Katmanı'ndan (SSL) daha gelişmiş ve daha güvenli bir protokol olan Aktarım Katmanı Güvenliğine (TLS) dayanır. TLS, HTTPS isteklerine ve yanıtlarına şifreleme, kimlik doğrulama ve bütünlük sağlar.

HTTPS'yi, bir TLS tünelinden geçen HTTP (protokolün düz metin versiyonu) istekleri ve yanıtları olarak düşünebilirsiniz. Bunun teknik terimi kapsüllemedir . TLS'nin yalnızca HTTP'yi değil, diğer protokolleri kapsüllemek için kullanılabileceğini belirtmek yerinde olur.

Tarayıcı gezinme çubuğundaki URL'nin başına (HTTPS ile başlar) bakarak veya yeşil asma kilitle HTTPS kullanan web sitelerini tespit edebilirsiniz. HTTP'de bir web sitesine göz atıyorsanız, tarayıcılar onu Güvenli Değil olarak işaretler.

Güvenli değil olarak işaretlenen HTTP web siteleri

HTTPS nasıl çalışır?

HTTPS kullanarak bir web sayfası talep ettiğinizde, tarayıcınız ve web sunucusu TLS anlaşması adı verilen bir işlem başlatır. TLS anlaşması, istemci ve sunucunun iletişim kurmaları gerekip gerekmediğine ve nasıl iletişim kuracaklarına karar vermelerinin bir yoludur. TLS anlaşması sırasında istemci ve sunucu şunları yapar:

  • Kullanılacak TLS protokolünün versiyonuna karar verin (TLS 1.0, 1.2, 1.3…),
  • Hangi şifre paketlerinin (güvenli iletişim kurmak için kullanılan bir dizi şifreleme algoritması) kullanılacağı konusunda anlaşmaya varmak,
  • sunucunun kimliğini doğrulamak,
  • güvenli bir şekilde iletişim kurmak için el sıkışma tamamlandıktan sonra kullanılacak şifreleme anahtarları oluşturun.

TLS el sıkışması

TLS anlaşması sırasında sunucu, istemcinin sunucunun kimliğini doğrulayabileceğini doğrulaması için istemciye sertifikasını gönderir. Sertifika pasaporta benzer - Web sitesinin kimliğini bağımsız olarak belirleyen ve tarayıcınıza kanıtlanabilen Sertifika Yetkilisi (CA) adı verilen güvenilir bir merkezi otorite tarafından verilir.

Genel ve özel anahtarlar (anahtar çifti)

Web sunucusunun istemciye gönderdiği TLS sertifikası (genellikle SSL sertifikası olarak adlandırılır), ortak anahtarı içerir. Genel anahtar , keypair adı verilen iki özel anahtardan biridir. Bir anahtar çifti iki anahtardan oluşur; genel anahtar ve özel anahtar . Açık anahtar istemcilerle paylaşılırken özel anahtar sunucuda gizli tutulur ve asla ifşa edilmez. Anahtar çifti birlikte dövülür.

Genel ve özel anahtar çifti arasında özellikle ilginç bir ilişki vardır - sunucunun özel anahtarını bilmeden (bu gizlidir ve yalnızca sunucu bunu bilmelidir), bir istemci, sunucunun özel anahtarını kullanarak şifresini çözebileceği sunucunun genel anahtarını kullanarak verileri şifreleyebilir . .

Bu kafa karıştırıcı geliyorsa, "sunucu", "tarayıcınıza" asma kilitle korunan açık bir bavul (ortak anahtar) göndermiş gibi düşünün - bavula bir şey koyup asma kilidi kilitlediğinizde, yalnızca "sunucu" asma kilidin anahtarı (özel anahtar) içinde ne olduğunu görebilir.

WordPress web sitemde gerçekten HTTPS'ye ihtiyacım var mı?

Evet. Web sitenizin sunduğu trafik türü ne olursa olsun (kişisel olarak tanımlanabilir bilgiler (PII), kart sahibi verileri veya kedi resimleri) web sitenizi HTTPS üzerinden sunmamanız için kesinlikle hiçbir neden yoktur .

Her şeyden önce, web sitenizi HTTP üzerinde çalıştırdığınızda, bilgisayar korsanları WordPress şifrelerinizi ve kimlik bilgilerinizi kolayca çalabilir ve web sitenize girebilir. Tüm bunları ücretsiz olarak temin edilebilen araçları kullanarak yapabilirler.

Güvenlik avantajları ve daha iyi bir kullanıcı deneyiminin yanı sıra, çeşitli performans avantajları sunan yeni HTTP/2 protokolü, web tarayıcılarında TLS olmadan kullanılamaz. Ayrıca HTTPS, Arama Motoru Optimizasyonu (SEO) avantajlarına sahiptir ve Google'ın arama sıralama algoritmasının bir parçasıdır.

HTTPS TLS sertifikası alma (diğer adıyla SSL sertifikası)

Her şeyi kendiniz ayarlıyorsanız, HTTPS'yi kurmak için bir TLS sertifikasına ihtiyacınız olacaktır. Düzinelerce ücretli TLS sertifikası teklifini görecek olsanız da, Let's Encrypt adlı kar amacı gütmeyen bir Sertifika Yetkilisinden ücretsiz bir TLS sertifikası alabilirsiniz. Let's Encrypt'ten ücretsiz olarak aldığınız sertifika ile parasını ödediğiniz sertifika arasında kesinlikle hiçbir fark yoktur.

Paylaşılan ve yönetilen WordPress barındırmada HTTPS

Lütfen, yönetilen veya paylaşılan barındırma çözümleri için barındırma sağlayıcınızın HTTPS eklemek için ücret talep edebileceğini veya almayabileceğini unutmayın - bu durumda, bir sertifika için para ödemeden önce, Let's Encrypt sertifikası kullanıp kullanamayacağınızı müşteri desteğine sorun. yerine hizmet. Let's Encrypt topluluk forumları da size yardımcı olabilecek harika bir kaynaktır.

WordPress HTTPS'yi Yapılandırma (WordPress sitenizde TLS'yi zorunlu kılar)

Kurulumunuza bağlı olarak WordPress web sitenizde TLS'yi zorlamanın birkaç yolu vardır. Çoğu durumda, web sunucunuzu tüm HTTP trafiğini HTTPS'ye yönlendirecek şekilde yapılandırırsınız (Mozilla'nın SSL yapılandırma oluşturucusuna bakın.

Ayrıca WordPress'i HTTPS'de dinleyecek şekilde yapılandırmanız gerekir. Bunu, Really Simple SSL veya WP force SSL gibi eklentilerle yapabilirsiniz. Bu örnekte, herhangi bir ek eklenti kullanmadan bunu nasıl yapacağımızı göreceğiz.

Web sunucusunu yapılandırma

Dikkat et

  • Web sunucusu yapılandırmalarını kopyalarken/yapıştırırken dikkatli olun ve web sunucunuzun belgelerine bakarak tam olarak ne yaptıklarını bildiğinizden emin olun.
  • %{HTTP_HOST} (Apache HTTP Sunucusu) veya $http_host (Nginx) kullanarak çevrimiçi olarak birçok örnek bulabilirsiniz - bunların ikisi de web sitenizi HTTP ana bilgisayar üstbilgisi saldırılarına açık hale getirebilir - bunun yerine, yapılandırmanızda görüldüğü gibi ana bilgisayar adınızı yazın altında.

Nginx kullanıyorsanız, aşağıdakileri yapılandırabilirsiniz:

server {
  listen 80;
  server_name example.com www.example.com;
  return 301 https://example.com$request_uri;
}

Alternatif olarak, Apache HTTP Sunucusu kullanıyorsanız aşağıdakileri yapılandırabilirsiniz:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTPS} off
  RewriteRule ^(.*)$ https://www.example.com%{REQUEST_URI} [L,R=301]
<IfModule>

WordPress URL'sini HTTPS'ye Yapılandırma

Web sunucunuzda HTTPS'yi etkinleştirdikten sonra, WordPress'i de kurmanız gerekir. Teoride bunu manuel olarak yapabilirsiniz: WordPress genel ayarlarında WordPress Adresini ve Site Adresini değiştirmeniz yeterlidir. Ayrıca, tüm web sitesi bağlantılarınızı HTTP'den HTTPS'ye değiştirmek için veritabanında bir arama yapmanız ve değiştirmeniz gerekir.

[EKRAN GÖRÜNTÜSÜ]

Bu nedenle, WordPress web sitenizi HTTPS'ye geçirmek için bir eklenti kullanmak muhtemelen çok daha kolaydır. Bu süreçte size yardımcı olması için Really Simple SSL gibi popüler bir eklenti kullanabilirsiniz.

WordPress panosunda TLS'yi zorlama

TLS, yalnızca kullanılıyorsa yararlıdır. Bu nedenle, WordPress sitenizin yalnızca TLS'yi desteklediğinden değil, aynı zamanda onu uyguladığından emin olmak istersiniz. WordPress panosuna her zaman HTTPS üzerinden erişilmesi gerektiğinden, WordPress, wp-config.php içinde true olarak ayarlanabilen FORCE_SSL_ADMIN özel yapılandırma seçeneğini içerir.

define('FORCE_SSL_ADMIN', true);

Dikkat et

  • Web sitesi kurulumunuza ve yapılandırmanıza bağlı olarak (özellikle, bir ters proxy kullanıyorsanız), bu, WordPress panonuza yapılan isteklerin sonsuz bir yeniden yönlendirme döngüsüne girmesine neden olabilir. Bunun nasıl düzeltileceği hakkında daha fazla bilgi için WordPress belgelerine bakın ve değişikliklerinizi üretime sunmadan önce her zaman bir hazırlama ortamında test edin.
  • Ayrıca, FORCE_SSL_ADMIN'i true olarak ayarlamadan önce TLS'nin yapılandırıldığından ve düzgün çalıştığından emin olun.

BONUS İPUCU 1: HTTP Strict Transport Security (HSTS) Ekleme

Tüm trafiğinizi HTTPS'ye yönlendirmek harika bir hareket olsa da, ne yazık ki saldırganların elinde birkaç numara olabilir. SSL şeridi olarak bilinen bir saldırı, bir saldırganın, güvenli HTTPS yerine HTTP'de siteye göz atması için tarayıcıyı kandırmasına izin vererek, sıkı çalışmanızı tamamen ortadan kaldırır.

SSL şerit saldırıları hakkında daha fazla (son derece teknik) ayrıntı için aşağıdaki Moxie Marlinspike konuşmasını izleyin.

Sonuç olarak, tarayıcılar artık HTTP Strict Transport Security veya HSTS'yi uygular. HSTS, tarayıcıya bu web sitesine asla HTTP üzerinden erişilmemesi gerektiğini söyleyen ve SSL şerit saldırılarını yenen basit bir HTTP başlığından başka bir şey değildir.

Web sunucusunda HSTS'yi yapılandırma

Dikkat et

  • HTTPS'den emin olana kadar HSTS'yi etkinleştirmeyin - bu HTTP başlığını alan herhangi bir ziyaretçi sitenizi yalnızca HTTPS üzerinden görüntüleyebilir.
  • Her zaman maksimum yaş özniteliğini ayarlayın — isteğe bağlı olarak, HSTS'yi ilk kez dağıttığınızda (olası sorunları sınırlamak için) düşük bir değer ayarlamayı ve HSTS'yi kullanırken kendinize daha fazla güvendiğinizde bunu artırmayı tercih edebilirsiniz.

Nginx kullanıyorsanız, 443 numaralı bağlantı noktasını dinleyen sunucu bloğu içinde aşağıdakileri yapılandırabilirsiniz:

# HSTS (ngx_http_headers_module is required) (63072000 seconds)
add_header Strict-Transport-Security "max-age=63072000" always;

Alternatif olarak, Apache HTTP Sunucusu kullanıyorsanız, 443 numaralı bağlantı noktasını dinleyen VirtualHost'unuzda aşağıdakileri yapılandırabilirsiniz:

# HTTP Strict Transport Security (mod_headers is required) 
(63072000 seconds)
Header always set Strict-Transport-Security "max-age=63072000"

Bonus İpucu 2: TLS Şifrelerini Yapılandırma

Tarayıcı ve sunucu arasındaki veri aktarımının güvenli olduğundan emin olmak için, her iki taraf da güvenlik ayarlarını görüşmek için bir şifre paketi olarak bilinen kimlik doğrulama, şifreleme ve mesaj doğrulama kodu (MAC) algoritmalarının bir kombinasyonunu kullanmayı kabul eder. , ayrıca verileri güvenli bir şekilde aktarmak için.

Ne yazık ki, birçok eski şifrenin güvenlik açıkları vardır ve artık kullanımları özellikle güvenli değildir. Hangi şifrelerin kullanılacağına karar vermek zor bir iş olsa da, Mozilla SSL Yapılandırma Oluşturucu, ihtiyaçlarınıza uygun bir TLS şifre paketi seçmeyi çocuk oyuncağı haline getirir. Mümkün olduğunda, modern veya orta seviye profilleri deneyin ve kullanın, ancak kullanım durumunuza bağlı olarak, özellikle eski tarayıcıları desteklemeniz veya düzenleme ve uyumluluk gereksinimlerini karşılamanız gerekiyorsa, biraz farklı şifre paketi yapılandırmaları kullanmanız gerekebilir.

Nginx kullanıyorsanız, aşağıdaki TLS şifrelerini yapılandırabilirsiniz (Mozilla SSL Yapılandırma Oluşturucu ara profiline göre):

 # intermediate configuration
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES25
6-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDH
E-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;

Alternatif olarak, Apache HTTP Sunucusu kullanıyorsanız, aşağıdaki TLS şifrelerini yapılandırırsınız (Mozilla SSL Yapılandırma Oluşturucu ara profiline göre):

# intermediate configuration
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off

Daha fazla teknik bilgi için SSLabs adlı ücretsiz bir araç kullanarak web sitenizin TLS yapılandırma puanını da test edebilirsiniz.

WordPress'im HTTPS üzerinde çalışıyor, güvenli mi?

Tarayıcınızın adres çubuğunun yanındaki yeşil asma kilit simgeleri ve "güvenli" kelimeleri, HTTPS'nin tüm web sitesi güvenlik sorunlarını çözen sihirli bir değnek olduğuna inanmanıza neden olmuş olabilir. Maalesef öyle değil. Tarayıcı çubuğundaki yeşil asma kilit

HTTPS, WordPress güvenliğinin yalnızca küçük bir parçasıdır: ziyaretçilerin web sitenize güvenli bir bağlantı üzerinden göz atmalarına olanak tanır. Ancak web sitenizi bir WordPress güvenlik duvarı gibi korumaz veya daha güvenli hale getirmez. Bu, HTTP üzerinde çalışan bir web sitesinden daha güvenli olduğu anlamına da gelmez. Diğer güvenlik savunmaları gibi, HTTPS de sorunun bir kısmının çözülmesine yardımcı olur.

Başka bir deyişle, HTTPS'yi kesinlikle uygulamanız ve zorlamanız gerekirken, bu, rahatlayabileceğiniz ve bir daha asla güvenlik konusunda endişelenmeyeceğiniz anlamına gelmez. Yine de şunları yapmalısınız:

  • İki faktörlü kimlik doğrulama ekleyin
  • Bir dosya bütünlüğü izleme eklentisi yükleyin
  • Güçlü WordPress parola politikalarını uygulayın
  • Web sitenizde meydana gelen tüm değişikliklerin bir kaydı olarak bir WordPress etkinlik günlüğü tutun
  • İyi bir güvenlik duvarı kullanın.