NGINX SSL Sertifikası Kurulumu | 301 Yönlendirme ve Ayarlar

Yazar: | 6 Ocak 2018

Bu rehberde Nginx SSL sertifikası nasıl kurulur resimli olarak anlatımını bulabilir, sorun yaşadığınız herhangi bir noktada iletişime geçebilir veya yorum alanından destek alabilirsiniz. Bu kurulum örneğinde PHP 7 ve Nginx web server kullandığımız CentOS 7 sunucumuza ücretsiz Comodo SSL kuracağız. Birçok sertifikanın kurulumu benzer şekilde yapılmaktadır.

Bilindiği üzere, SSL sertifikası web siteniz ve ziyaretçiler arasındaki iletişimi şifrelemeye yarar ve yüksek düzeyde güvenlik sağlar. Kısa bir süredir, etkisi az olsa dahi Google SSL sertifikasını olumlu bir SEO sinyali olarak algılıyor ve sıralamaya etki ettiğini kabul ediyor. Özellikle, e-Ticaret siteleri için SSL sertifikası neredeyse zorunlu hale geldi. Sertifika sahibi olmayan e-ticaret siteleri bankalardan ve ödemelere aracılık yapan firmalardan sanal pos alamayabilir.

Sorunsuz bir Nginx SSL Sertifikası kurulumu için rehber arıyorsanız, doğru yerdesiniz.

Bölümler

a) SSL bundle oluşturma

b) 301 https yönlendirme

Nginx SSL Kurulumu

Nginx SSL Sertifikası Kurulum Rehberi

Bu rehberde kullandığımız unsurlar:

  • SSH erişimi
  • Ücretli veya ücretsiz SSL sertifikası
  • Bilgisayarımıza WinSCP ve Notepad++ (Opsiyonel)
  • Admin veya webmaster@alanadi.com şeklinde mail (Opsiyonel)

Adım 1 – Private Key, CSR Oluşturma

Web sitemiz bir sertifika oluşturmadan önce ilk yapmamız gereken şey bir key vs CSR oluşturmaktır. Öncelikle, kullanacağımız SSL sertifika dosyaları elimizin altında olsun diye html klasörünün yanına bir ssl klasörü oluşturalım. Örneğimizde html klasörü /var/www dizininde kurulu.

Sertifika için klasör oluşturma:

mkdir /var/www/ssl

Cd komutuyla klasöre gidelim.

cd /var/www/ssl

Private Key ve CSR oluşturma kodu.

openssl req -new -newkey rsa:2048 -nodes -keyout alanadiniz_com.key -out alanadiniz_com.csr

Diğer örneklerde olduğu gibi, bu örnekte de herhangi.net domainimizi kullanıyoruz. Karşımıza gelecek satırları kendi bilgilerimize uygun olarak aşağıdaki gibi dolduralım. Türkçe karakter kullanmamaya dikkat etmenizi öneririm.

openssl req -new -newkey rsa:2048 -nodes -keyout herhangi_net.key -out herhangi_net.csr
Nginx SSL CRS oluşturma

[root@server ssl]# openssl req -new -newkey rsa:2048 -nodes -keyout herhangi_net.key -out herhangi_net.csr

Generating a 2048 bit RSA private key ……………………………………….+++. …………………………………………………………………………………………+++ writing new private key to ‘herhangi_net.key’

—–

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) [XX]:TR #Ülke kodu iki hane olarak yazılmalı. Türkiye icin TR
  • State or Province Name (full name) []:Istanbul #Şehir bilgisi
  • Locality Name (eg, city) [Default City]:Atasehir #İlçe bilgisi
  • Organization Name (eg, company) [Default Company Ltd]:Herhangi NET #Site adı veya organizasyon ismi
  • Organizational Unit Name (eg, section) []:IT #İlgili birim ismi. IT, bilgi teknolojisi anlamına geliyor. Siz dilediğinizi yazabilirsiniz.
  • Common Name (eg, your name or your server’s hostname) []:herhangi.net #Alan adınız
  • Email Address []:admin@herhangi.net #Yönetici e-posta adresiniz

Please enter the following ‘extra’ attributes to be sent with your certificate request

  • A challenge password []: #Bir şey yazmadan Enter tuşuna basın
  • An optional company name []: #Bir şey yazmadan Enter tuşuna basın

Herhangi bir sorun yoksa Private Key ve CSR dosyamız hazır. ls komutu ile dosyalarımızı kontrol edebiliriz.


Adım 2 – Ücretsiz SSL Sertifikası Alma

Şimdi CSR dosyamızdaki kodları kopyalayıp SSL sertifikası satın aldığımız siteye giderek Paste your CSR yazan alana yapıştırıyoruz. Siz de ücretsiz SSL kullanarak başlamak istiyorsanız ziyaret etmeniz gereken site: https://gogetssl.com/

SSL sertifikası oluşturma

Kodu yapıştırdıktan sonra Validate CSR butonuyla ilerliyoruz ve doğrulama türünü seçiyoruz. Örneğimizde doğrulama işlemini e-posta adresi ile yapıyoruz.

Dilerseniz DNS kaydı ekleyerek ve doğrulama için sunucunuza dosya yükleyerek yapabilirsiniz. Bu doğrulama türünde “.well-known” gibi bir dizine ilgili dosyaları yüklememiz gerekiyor, bunun için Nginx konfigürasyonunda biraz değişiklik yapmanız gerekiyor. İhtiyaç duyarsanız birlikte çözebiliriz.

SSL doğrulama

Next Step dedikten sonra bilgilerimizi girelim ve Complete Generation butonuna basarak devam edelim.

Buradan sonraki iş admin e-postamıza gelen doğrulama kodunu verilen linke giderek yapıştırma. Aşağıdaki iki resimde olduğu gibi.

“Thank you”

You have entered the correct Domain Control Validation code. Your certificate will now be issued and emailed to you shortly. Please close this window now.”

Bu mesajı gördüyseniz kapatabilirsiniz. Ortalama 5 dakika içerisinde SSL sertifikası dosyalarınız hazır olacaktır, bizim örneğimizde yaklaşık 30 saniye sürdü.

Sertifika dosyaları geldiyse bilgisayarımıza indirelim, zipten çıkarıp sunucumuzun /var/www/ssl klasörüne yükleyelim. Yükleme için WinSCP kullanıyorum.

Mail yoluyla gelenleri yükledikten sonra sunucumun SSL klasöründe toplam 4 dosya oldu.

  • herhangi_net.csr
  • herhangi_net.key
  • herhangi_net.crt
  • herhangi_net.ca-bundle

Adım 3 – Nginx SSL Kurulumu

Bu aşamada bir öncekinden daha dikkatli olmalısınız zira en çok problem yaşanan adım burasıdır.


3 (a) – SSL Bundle Oluşturma

Öncelikle SSL sertifikası ve CA dosyalarımızı aşağıdaki komut ile kombine ediyoruz. Birden fazla siteniz varsa sonraki ssl-bundle yerine başka bir şey yazabilirsiniz. Türkçe karakter içermediği sürece sorun yok.

cat alanadi_com.crt alanadi_com.ca-bundle > ssl-bundle.crt

SSL Bundle dosyası bulunmayan arkadaşlar bu şekilde yapabilir.

cat alanadi_com.crt COMODO_RSA_Certification_Authority.crt AddTrust_External_CA_Root.crt > alanadi-ssl-bundle.crt

Bizim örneğimizde şu şekilde:

cat herhangi_net.crt herhangi_net.ca-bundle > ssl-bundle.crt

ls komutu ile kontrol edebilirsiniz.


3 (b) – Nginx 301 Https – SSL Yönlendirme

Bu aşamada site konfigürasyonumuzda yönlendirme yapıyor ve sertifika dosyalarımızın bulunduğu dizini belirtiyoruz.

WordPress performans sunucusu kurulum rehberi ile oluşturduğumuz Nginx sanal host dosyamızın bulunduğu dizine gidiyoruz. Dilerseniz nano komutuyla dosyayı açabilirsiniz. Biz WinSCP ile ilişkilendirdiğimiz Notepad++ ile düzenleme yapıyoruz.

nano /etc/nginx/conf.d/default.conf

Örnek sitemizin konfigürasyonu aşağıdaki gibi:

server {
listen 80 default_server;

listen [::]:80 default ipv6only=on;

server_name herhangi.net;

return 301 https://herhangi.net$request_uri;

}

 

server {

listen 443 ssl http2;

listen [::]:443 ssl http2;

server_name herhangi.net;

 

ssl_certificate      /var/www/ssl/ssl-bundle.crt;

ssl_certificate_key  /var/www/ssl/herhangi_net.key;

 

root  /var/www/html;

index index.php index.html index.htm;

location / {

try_files $uri $uri/ /index.php?$args;

}

location ~* /\. {

deny all;

}

location ~ [^/]\.php(/|$) {

fastcgi_split_path_info ^(.+?\.php)(/.*)$;

if (!-f $document_root$fastcgi_script_name) {

return 404;

}

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

set $do_not_cache 0;

if ($request_method = POST) {

set $do_not_cache 1;

}

if ($query_string != "") {

set $do_not_cache 1;

}

if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {

set $do_not_cache 1;

}

if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)") {

set $do_not_cache 1;

}

fastcgi_cache        wpcache;

fastcgi_cache_key    "$request_method:$scheme://$host$request_uri";

fastcgi_cache_valid  200 60m;

fastcgi_no_cache     $do_not_cache;

fastcgi_cache_bypass $do_not_cache;

add_header X-F-Cache $upstream_cache_status;

}

}

Son kontrolleri yaptıktan sonra Nginx’i yeniden başlatalım.

service nginx restart

Herhangi bir noktada hata yoksa Nginx SSL kurulumu tamamlanmıştır. Tüm aşamaları test ederek gitmekte fayda var.


SSL Testi Yapma

SSL testi için bu siteleri kullanabilirsiniz.

https://www.ssllabs.com/ssltest/
https://www.sslshopper.com/ssl-checker.html
sslshopper ssl testi
sslshopper
ssllabs SSL Testi
ssllabs

Bonus

Gelişmiş güvenlik (ve performans) için en iyi nginx yapılandırması isteyenler aşağıdaki kodları kendine göre düzenleyip kullanabilir. Dosyayı txt olarak indirmek için tıklayınız.

Ayarların etkinleşmesi için Nginx’i yeniden başlatmanız gerekiyor. Ssllabs üzerinden yapacağınız yeni bir sorgulamada sonuçların daha farklı olacağını göreceksiniz.

Her zamanki gibi, takıldığınız noktada iletişim sayfası ve yorum alanını kullanarak destek alabilirsiniz.

Serinin tüm bölümleri:

1CentOS 7 Sunucu Kurulumu | DigitalOcean
2WordPress Performans Sunucusu Kurulum Rehberi
3CentOS 7 LAMP, WordPress ve PHP APC Kurulumu
4OPcache, APCu Kurulumu ve MariaDB Optimizasyonu
5Gzip, Apache Tuned, MPM+php-fpm Kurulum ve Ayarlar
6PHP 7, OPCache ve APCu ile 3 Kat Hızlı WordPress
7Nginx Kurulumu ile WordPress Sitemizi Hızlandırıyoruz
8FastCGI Kurulumu ile Işık Hızında WordPress
9Buradasınız: NGINX SSL Sertifikası Kurulumu | 301 Yönlendirme ve Ayarlar
Paylaş:

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir