Sunucularınızda HTTPS'yi etkinleştirme

Chris Palmer
Chris Palmer
Matt Gaunt

Bu sayfa, şu adımları uygulayın:

  • 2048 bit RSA ortak/özel anahtar çifti oluşturuluyor.
  • Ortak anahtarınızı yerleştiren bir sertifika imzalama isteği (CSR) oluşturma.
  • CSR'nizi Sertifika Yetkilinizle (CA) paylaşma olabilir.
  • Nihai sertifikanızı şunun gibi web erişimi olmayan bir yere yükleme: /etc/ssl (Linux ve Unix) veya IIS'nin gerekli olduğu her yerde (Windows).

Anahtarlar ve sertifika imzalama istekleri oluşturma

Bu bölümde, Opensl komut satırı programı kullanılmaktadır. Linux, BSD ve Mac OS X sistemlerini kullanarak özel ve genel anahtarlar ve bir CSR oluşturabilir.

Ortak/özel anahtar çifti oluşturun

Başlamak için 2.048 bit RSA anahtar çifti oluşturun. Daha kısa bir anahtarı, kaba kuvvet kullanarak yapılan tahminler ve uzun anahtarlar gereksiz kaynaklar kullanır.

RSA anahtar çifti oluşturmak için aşağıdaki komutu kullanın:

openssl genrsa -out www.example.com.key 2048

Bu işlem sonucunda aşağıdaki çıktı elde edilir:

Generating RSA private key, 2048 bit long modulus
.+++
.......................................................................................+++
e is 65537 (0x10001)

Sertifika imzalama isteği oluştur

Bu adımda, ortak anahtarınızı ve kuruluşunuzla ilgili bilgileri yerleştireceksiniz bir sertifika imzalama isteğine veya CSR'ye göndermeniz gerekir. openssl komutu sizden gerekli meta verileri ister.

Aşağıdaki komutu çalıştırmak:

openssl req -new -sha256 -key www.example.com.key -out www.example.com.csr

Aşağıdaki çıktıları verir:

You are about to be asked to enter information that will be incorporated
into your certificate request

What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CA
State or Province Name (full name) [Some-State]:California
Locality Name (for example, city) []:Mountain View
Organization Name (for example, company) [Internet Widgits Pty Ltd]:Example, Inc.
Organizational Unit Name (for example, section) []:Webmaster Help Center Example
Team
Common Name (e.g. server FQDN or YOUR name) []:www.example.com
Email Address []:[email protected]

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

CSR'nin geçerli olduğundan emin olmak için şu komutu çalıştırın:

openssl req -text -in www.example.com.csr -noout

Yanıt şu şekilde görünmelidir:

Certificate Request:
    Data:
        Version: 0 (0x0)
        Subject: C=CA, ST=California, L=Mountain View, O=Google, Inc.,
OU=Webmaster Help Center Example Team,
CN=www.example.com/[email protected]
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:ad:fc:58:e0:da:f2:0b:73:51:93:29:a5:d3:9e:
                    f8:f1:14:13:64:cc:e0:bc:be:26:5d:04:e1:58:dc:
                    ...
                Exponent: 65537 (0x10001)
        Attributes:
            a0:00
    Signature Algorithm: sha256WithRSAEncryption
         5f:05:f3:71:d5:f7:b7:b6:dc:17:cc:88:03:b8:87:29:f6:87:
         2f:7f:00:49:08:0a:20:41:0b:70:03:04:7d:94:af:69:3d:f4:
         ...

CSR'nizi bir sertifika yetkilisine gönderme

Farklı sertifika yetkilileri (CA) MT'lerinizi onlara göndermenizi gerektirir şekillerde kullanabilirsiniz. Web sitesindeki bir formu kullanarak veya CSR'ye gönderilir. Bazı CA'lar veya bayileri, bazı sertifika programlarını veya bazı durumlarda anahtar çifti ve MT oluşturma da dahil olmak üzere bu sürecin

CSR'yi CA'nıza gönderin ve nihai formunuzu almak için onların talimatlarını uygulayın. manuel olarak da girebilirsiniz.

Farklı CA'lar, kefil hizmeti için farklı tutarlarda ücret alır. kullanın.

Anahtarınızı birden fazla DNS adıyla eşlemek için kullanabileceğiniz seçenekler de vardır: birkaç farklı ad (ör. tüm example.com, www.example.com, example.net, ve www.example.net) veya "joker karakter" *.example.com gibi adlar kullanabilir.

Sertifikaları, web'den erişilemeyen bir tarayıcıda tüm kullanıcı arabirimi sunucularınıza kopyalayın /etc/ssl (Linux ve Unix) veya IIS'nin (Windows) gerektirdiği her yerde oluşturabilirsiniz.

Sunucularınızda HTTPS'yi etkinleştirme

Sunucularınızda HTTPS'nin etkinleştirilmesi, Google'a gönderir.

  • Sunucunuzu HTTPS için ayarlamak için Mozilla'nın Sunucu Yapılandırma aracını kullanma destek.
  • Sitenizi Qualys'le düzenli olarak test edin. SSL Sunucu Testi ve en azından A veya A+ alırsınız.

Bu noktada operasyonla ilgili çok önemli bir karar vermeniz gerekir. Aşağıdakilerden birini seçin: takip etmek için:

  • Web sunucunuzun içerik sunduğu her ana makine adına ayrı bir IP adresi ayırın var.
  • Ada dayalı sanal barındırma kullanın.

Her ana makine adı için ayrı IP adresleri kullanıyorsanız hem HTTP'yi hem de HTTPS'yi kullanır. Ancak, çoğu site operatörü ad tabanlı daha pratik olduğu için IP adreslerini korumak amacıyla bir sanal barındırma hizmeti genel.

Sunucularınızda HTTPS hizmeti halihazırda yoksa hizmeti şimdi etkinleştirin (HTTP'den HTTPS'ye yönlendirilmeden) HTTP'yi HTTPS'ye yönlendirme başlıklı makaleyi inceleyin. bakın). Web sunucunuzu, kullandığınız sertifikaları kullanacak şekilde satın alıp yükleyebilirsiniz. Mozilla'nın yapılandırmasında oluşturma aracı faydalı olur.

Çok sayıda ana makine adınız veya alt alan adınız varsa bunların her birinin doğru sertifikası.

Şimdi ve sitenizin ömrü boyunca düzenli olarak HTTPS'nizi kontrol edin Qualys' SSL Sunucu Testi. Siteniz A veya A+ puanına sahip olmalıdır. Düşük dereceye neden olan her şeyi ve titizlikle çalışın çünkü algoritmalara ve protokollere yapılan yeni saldırılar sürekli geliştiriliyor.

Site içi URL'leri göreli yapın

Artık sitenizi hem HTTP hem de HTTPS üzerinden yayınladığınıza göre sorunsuz bir şekilde çalışmasını sağlamalısınız. Önemli bir faktör, göreceli URL'leri kontrol edin.

Site içi URL'lerin ve harici URL'lerin belirli bir protokole bağlı olmadığından emin olun. Göreli yollar kullanın veya protokolü //example.com/something.js olduğu gibi hariç tutun.

HTTPS kullanarak HTTP kaynakları içeren bir sayfa sunma sorunlara neden olabilir. Tarayıcı, güvenli olmayan kaynakları kullanarak güvenli olmayan bir sayfayı kopyalarsa, kullanıcıları sayfanın tam olarak güvenli değildir ve bazı tarayıcılar HTTP yüklemesini veya çalıştırmayı reddedmektedir yardımcı olabilir. Ancak güvenli bir şekilde HTTPS'yi kaynaklarını kontrol edin. Bu sorunları düzeltme konusunda daha fazla yardım için bkz. Karma İçeriği Düzeltme.

Sitenizdeki diğer sayfalara yönlendiren HTTP tabanlı bağlantıları izlemek de daha fazla bilgi edineceksiniz. Bunu düzeltmek için site içi URL'lerinizi veya protokole bağlı olmadığından daha yüksek protokolü (//example.com ile başlar) veya ana bilgisayarla göreli (yalnızca yol, örneğin /jquery.js) girin.

Yapılması gerekenler
<h1>Welcome To Example.com</h1>
<script src="/https/web.developers.google.cn/jquery.js"></script>
<link rel="stylesheet" href="/https/web.developers.google.cn/assets/style.css"/>
<img src="/https/web.developers.google.cn/images/logo.png"/>;
<p>A <a href="/https/web.developers.google.cn/2014/12/24">new post on cats!</a></p>
Göreli site içi URL'ler kullanın.
Yapılması gerekenler
<h1>Welcome To Example.com</h1>
<script src="//example.com/jquery.js"></script>
<link rel="stylesheet" href="//assets.example.com/style.css"/>
<img src="//img.example.com/logo.png"/>;
<p>A <a href="//example.com/2014/12/24/">new post on cats!</a></p>
Alternatif olarak, protokole bağlı site içi URL'ler kullanabilirsiniz.
Yapılması gerekenler
<h1>Welcome To Example.com</h1>
<script src="/https/web.developers.google.cn/jquery.js"></script>
<link rel="stylesheet" href="/https/web.developers.google.cn/assets/style.css"/>
<img src="/https/web.developers.google.cn/images/logo.png"/>;
<p>A <a href="/https/web.developers.google.cn/2014/12/24">new post on cats!</a></p>
<p>Check out this <a href="https://foo.com/"><b>other cool site.</b></a></p>
Mümkün olduğunda diğer sitelere yönlendiren bağlantılar için HTTPS URL'leri kullanın.

Hata yapmamak için bağlantılarınızı elle değil, bir komut dosyasıyla güncelleyin. Eğer bir veritabanında bulunuyorsa komut dosyanızı aşağıdaki sitenin geliştirme kopyasında test edin: Sitenizin içeriği yalnızca basit dosyalardan oluşuyorsa komut dosyanızı test edin bir kopyası oluşturulur. Değişiklikleri üretime yalnızca şu tarihten sonra aktarın: normal bir şekilde kalite güvencesi testinden geçer. Bram van Damme'ın senaryosunu kullanabilirsiniz tespit etmek için kullanabileceğiniz başka bir araçtır.

Diğer sitelere bağlantı verirken (bu sitelere ait kaynakları eklemek yerine) protokolü değiştirmeyin. Bu sitelerin çalışma biçimi üzerinde herhangi bir denetiminiz yoktur.

Büyük siteler için taşıma sürecini daha sorunsuz hale getirmek üzere protokole bağlı URL'ler kullanmanızı öneririz. HTTPS'yi tam olarak dağıtıp dağıtamayacağınızdan emin değilseniz sitenizi geri tetiklenebilecek tüm alt kaynaklar için HTTPS kullanmak. Muhtemelen birtakım sorular HTTPS'nin sizin için yeni ve tuhaf olduğu ve HTTP sitesinin yine de çalışması gereken zaman geri dönüyor. Zaman içinde taşıma işlemini tamamlayıp HTTPS ile kilitlenirsiniz. (sonraki iki bölüme bakın).

Siteniz, üçüncü bir yayıncı tarafından sunulan komut dosyaları, resimler veya diğer kaynaklara dayanıyorsa bir CDN veya jquery.com gibi bir taraf kullanıyorsanız iki seçeneğiniz vardır:

  • Bu kaynaklar için protokole bağlı URL'ler kullanın. Üçüncü taraf, HTTPS ile sunmalarını isteyin. jquery.com da dahil olmak üzere bunların çoğu zaten mevcuttur.
  • Kaynakları, hem HTTP'yi sunan hem de sizin kontrolünüzdeki bir sunucudan sunun. ve HTTPS'ye gidin. Bu genellikle iyi bir fikirdir çünkü böylece daha iyi sitenizin görünümü, performansı ve güvenliği üzerinde denetim sahibidir ve üçüncü tarafa güvenebileceğiniz anlamına gelir.
ziyaret edin.

HTTP'yi HTTPS'ye yönlendir

Arama motorlarına, sitenize erişmek için HTTPS kullanmalarını söylemek için standart bağlantıyı <link rel="canonical" href="https://…"/> etiketlerini kullanarak her sayfanın başlığını yönetebilirsiniz.

Katı Taşıma Güvenliği'ni ve güvenli çerezleri etkinleştir

Bu noktada, "bağımlı" olmaya hazırsınız daha iyi anlamanızı sağlar:

  • 301 maliyetinden kaçınmak için HTTP Strict Transport Security (HSTS) kullanın unutmayın.
  • Çerezlerde her zaman Güvenli işaretini ayarla.

Öncelikle Strict Transport Security'yi kullanın HTTPS kullanarak sunucunuza her zaman bağlanmaları gerektiğini, (bir http:// referansını takip ederken) Bu, aşağıdaki gibi saldırıları yenebilir: SSL Soyma, Böylece, şurada etkinleştirdiğimiz 301 redirect için gidiş-dönüş maliyetinden kurtulabilirsiniz: HTTP'yi HTTPS'ye yönlendirin.

HSTS'yi etkinleştirmek için Strict-Transport-Security başlığını ayarlayın. OWASP'ın HSTS sayfası talimatlar bağlantıları içeriyor farklı türde sunucu yazılımları için kullanılır.

Çoğu web sunucusu, özel üstbilgiler eklemeye benzer bir özellik sunar.

Ayrıca istemcilerin hiçbir zaman çerez göndermediğinden (örneğin, kimlik doğrulaması veya site tercihleri) devre dışı bırakılır. Örneğin, bir kullanıcının kimlik doğrulama çerezi düz metin olarak gösterilecekti. Bu, sizin güvenlik garantiniz başka her şeyi yapmış olsanız bile, oturumun tamamı silinir doğru!

Bunu önlemek için web uygulamanızı çerezlerde her zaman Güvenli işaretini ayarlayacak şekilde değiştirin belirler. Bu OWASP sayfasında, Güvenli işaretinin nasıl ayarlanacağı açıklanmaktadır. pek çok çerçevede kullanılabilir. Her appl çerçevesinin işareti ayarlamanın bir yolu vardır.

Çoğu web sunucusu basit bir yönlendirme özelliği sunar. 301 (Moved Permanently) hesabını kullan HTTPS sürümünün standart olduğunu arama motorlarına ve tarayıcılara belirtmek için ve kullanıcılarınızı HTTP'den sitenizin HTTPS sürümüne yönlendirin.

Arama sıralaması

Google, HTTPS'yi pozitif bir arama kalitesi olarak kullanır göstergesi. Google ayrıca, verilerinizi taşıma, taşıma veya taşıma sitenizde bakımını yaparken en iyi sonucu verir. Bing, Google Ads'de aynı zamanda ziyaret edin.

Performans

İçerik ve uygulama katmanları iyi bir şekilde ayarlandığında (bkz. Steve Souders' bakın), ve performansla ilgili endişeler, reklamın genel maliyetine göre bir uygulamadır. Ayrıca, bu maliyetleri azaltabilir ve amorti edebilirsiniz. TLS hakkında öneri için Yüksek Performanslı Tarayıcı Ağları'na bakın. Ilya Grigorik ve Ivan Ristic'in OpenSSL Cookbook ve Kurşun geçirmez SSL ve TLS.

Bazı durumlarda TLS performansı artırabilir. Bunun için genellikle HTTP/2 mümkün. Daha fazla bilgi için şu sayfaya bakın: Chris Palmer's HTTPS ve HTTP/2 performansı hakkında konuşalım. Chrome Geliştirici Zirvesi 2014.

Başvuran başlıkları

Kullanıcılar HTTPS sitenizden diğer HTTP sitelerine giden bağlantıları izlediğinde, kullanıcı aracıları Yönlendiren başlığını göndermeyin. Bu bir sorunsa, birkaç şekilde çözün:

ziyaret edin.

Reklam geliri

Reklam göstererek sitelerinden para kazanan site operatörleri, reklam gösterimlerini azaltmaz. Ancak, karma reklamlar İçerik güvenliği endişeleri olduğunda HTTP <iframe>, HTTPS sayfasında çalışmaz. Reklamverenler HTTPS üzerinden yayınlayana kadar site operatörleri HTTPS'ye taşınamaz reklam geliri kaybetmezsiniz. ancak site operatörleri HTTPS'ye geçene kadar reklamverenlerin HTTPS yayınlamak için çok az motivasyonu vardır.

Bu çıkmazı kırma sürecini başlatmak için, para kazanma olanağı sunan HTTPS üzerinden reklam hizmetleri sunmalarını ve HTTPS üzerinden sunulmayan reklamverenleri istemelerini en azından bir seçenek haline getirmek için. Projeyi tamamlamak için gereken süre Yeterli sayıda reklamveren olana kadar Site İçi URL'leri göreli yapın düzgün şekilde çalışmasını sağlamalısınız.