Menu

/home/burak

günlük şeysi…

HTTPS Yönlendirme

GitHub Education paketi ile ilgili bir nevi başlangıç sayılabilecek yazımı daha önce yazmıştım. Paketi alır almaz DigitalOcean kodunu oluşturup DigitalOcean ile aramızdaki borç alacak hesabını -bayağı birikmiş- sıfırladım. Pakette başka neler var diye bakarken Namecheap‘ten bir yıllık .me alan adı ile yine bir yıllık SSL sertifikası olduğunu gördüm. Zaten bir alan adına sahip olduğumdan bir yıllık SSL sertifikası daha çok ilgimi çekti. Hemen aktifleştirip sunucuma gerekli ayarlamaları yaptım ve şu anda da görebileceğiniz üzere sizinle sunucum arasındaki bütün trafik şifreli bir şekilde gerçekleşiyor.

SSL sertifikasını düzgün bir şekilde çalıştırdıktan sonra http protokolü üzerinden günlüğe bağlanan kullanıcıların https protokolüne yönlenmesini ayarlamak gerekiyordu yoksa sertifikanın bir espirisi -havası- kalmıyor haliyle. Apache kullanarak bunun yapmanın iki yolu var:

  1. .htaccess dosyasına rewrite kuralı yazmak -ki google’layınca çoğunlukla bahsedilen karmaşık yöntem-
  2. yine .htaccess dosyasına veya sanal sunucu dosyasına Apache’nin Redirect özelliğini kullanarak kural yazmak.

Daha basit -tek satır, temiz ve anlaşılabilir komut- ve daha önerilen bir yöntem olduğu için ben ikinci yöntemi kullanıyorum.

Sunucunuzda sadece sizin web siteniz barınıyorsa veya herhangi bir sanal sunucu ayarlaması yapmadıysanız bahsedeceğim değişiklikleri varsayılan yapılandırma dosyasında -/etc/apache2/sites-available/000-default.conf (eski ubuntu sürümlerinde default.conf isimli dosyadır.)- yapmalısınız. Eğer siteniz için bir sanal sunucu ayarlaması yaptıysanız da -örnek vermek gerekirse ben bu site için varsayılan yapılandırma dosyası yerine ayrıca bir yapılandırma dosyası (burakuzun.com.tr.conf) kullanıyorum- bu değişiklikleri kendi yapılandırma dosyanızda yapmalısınız.

Apache normal bağlantı ayarlamalarını ayrı yapılandırma dosyasında -80 portunu dinleyen 000-default.conf dosyası-, SSL bağlantı ayarlamalarını ayrı yapılandırma dosyalasında -443 portunu dinleyen default-ssl.conf dosyası- tutuyor.

 Aslında ikisini tek bir dosyada ayarlayıp daha pratik bir şekilde tek yerden her iki bağlantı protokolüyle ilgili ayarlamaları yapabilirsiniz ki biz birazdan öyle yapacağız.

Basit olarak yapmak istediğimiz, http protokolüne -80 portu oluyor- gelen istekleri, https protokolüne -443 portu oluyor- yönlendirmek. İlk olarak sitenizi 443 portundan çalışacak şekilde ayarlamalısınız. Gerekli ayarlamaları tamamlayıp test ettikten sonra yapılandırma dosyanızdaki <VirtualHost *:443> satırının üstüne eklemeniz gereken kodlar ve açıklamaları aşağıda görebilirsiniz.

Tek yapılandırma dosyasını kullanarak 80 portundan web sitemizi çalıştırıyoruz. Daha sonra Redirect permanent / https://burakuzun.com.tr/ komutu ile gelen bütün bağlantıları https://burakuzun.com.tr adresine yönlendirdik.

Redirect komutu ile ilgili detaylı bilgiyi ve permanent komutunun yerine yazabileceğiniz alternatif komutları görmek için http://httpd.apache.org/docs/trunk/mod/mod_alias.html#redirect adresini incelebilirsiniz.

GitHub Education – Namecheap SSL Kullanımı

GitHub Education paketinden haberdarsınızdır sanırım. Paket bizim gibi öğrenci arkadaşlara, ücretli bir çok servisi ve hizmeti belirli bir süre için ücretsiz olarak kullanma hakkı veriyor. -örnek vereyim; bu sitenin barındığı sunucuyu aldığım firma olan DigitalOcean (referans linkidir, size de bana da faydası dokunur)‘da kullanabileceğimiz 100$ kredi alabiliyorsunuz. sitedeki en düşük paket olan 5$’lık droplet (droplet nedir derseniz) ile siteniz 20 ay ücretsiz barınabilir.-

Bu paketi kullanabilmek için GitHub hesabınız ve hesabınızda üniversitenizden aldığınız e-posta adresiniz -dolmuşların aksine açıköğretim de geçerli- birincil e-posta adresi olarak ayarlanmış olmalı. Başvurunuzun onaylanması bir iki günü bulabilir.

Heabınızın onaylandıktan sonra https://education.github.com/pack/offers adresinden kullanabileceğiniz servislerin listesine ulaşabilirsiniz.

Namecheap SSL Aktivasyonu

Listede Namecheap‘i bulduktan sonra ‘Request your offer code to get access’ yazısındaki linke tıklayarak size özel kupon kodunu oluşturun ve verilen kupon koduyla Namecheap’ten alışverişinizi tamamlayın. Hesabınıza giriş yaptıktan sonra https://manage.www.namecheap.com/myaccount/ssl-list.asp adresinden satın aldığınız sertifikaları yönetebileceğiniz ekranı açın. SSL sertifikanızın yanındaki ‘Activate Now’ linkine tıklayın.

csr-kodu-girisYan taraftaki ekranda ‘Select web server’ kutucuğundan ‘Apache + MOD SSL’ seçeneğini -ya da siz hangi sunucu yazılımını kullanıyorsanız onu- seçin. Aşağıda ‘Enter csr’ kutucuğuna girmeniz gereken bilgiyi sunucunuzda oluşturmanız gerekli. Sunucunuza terminal ile burada terminal kullanımı ile ilgili bir kaç güzel ipucu var, mutlaka bakın- bağlandıktan sonra mkdir ssl komutu ile ssl isimli yeni bir klasör -oluşturacağınız sertifikalara daha sonra kolaylıkla ulaşabilmek için- oluşturun cd ssl konutu ile klasöre giriş yapın. openssl req -new -newkey rsa:2048 -nodes -keyout alanadiniz.com.tr.key -out alanadiniz.com.tr.csr komutunu yazın ve sizden siteniz ile ilgili bir kaç bilgi girmeniz -Türkçe karakter kullanmadan- istenecek.

Diğer soruları boş bırakıp geçebilirsiniz. Komut tamamlandığında daha önce oluşturduğunuz ssl klasöründe iki adet dosya -alanadiniz.com.tr.csr ve alanadiniz.com.tr.key- göreceksiniz. nano alanadiniz.com.tr.csr komutuyla alanadiniz.com.tr.csr dosyasını açın. Bütün içeriği seçip kopyalayın.

Nano kullanırken normal ctrl + c komutu işinize yaramaz, onun yerine kopyalamak için alt + 6 tuş kombinasyonunu kullanabilirsiniz.

ssl-onay-e-postaKopyaladığınız içeriği ‘Enter csr’ kutucuğuna yapıştırın. Sonraki ekranda sizden alan adınızın size ait olduğunu doğrulamanız istenecek. İsterseniz ‘Domain Related’ listesinde belirtilen e-posta adreslerine -VPS kullanırken kendinize alan adınıza ait e-posta adresleri alabileceğiniz konusu yazılacaklar listesinde-, isterseniz de ‘Whois Record Type’ kısmında belirtilen, alan adınızı alırken kayıt ettirdiğiniz e-posta adresini seçebilirsiniz. Seçtiğiniz e-posta adresinize onay kodunuzun olduğu bir posta gelecek. ‘Next’ dedikten sonra benim gibi hemen e-posta adresinizi kontrol etmeyin, sonraki ekranda gerekli bilgileri girip -sertifikanız için size gönderilecek dosyalar ‘Administrator Email Address’ kısmına yazdığınız e-posta adresinize geliyor. önceki ekranda seçtiğiniz e-posta adresiniz sadece onaylama için.- ‘Submit order’ butonuna tıkladığınızda onaylama postanız seçtiğiniz e-posta adresinize gönderilecek. Onaylama işlemini tamamlandıktan sonra ‘Administrator Email Address’ kısmında belirttiğiniz e-posta adresinize sunucunuza yüklemeniz gereken dosyalar gönderilecek.

Sunucu Yapılandırması

Sunucunuzda yapılması gereken ayarlamaları sırasıyla anlatmak gerekirse, önce web sitenizin yapılandırma dosyasında SSL ayarlamalarını yapacaksınız, daha sonra web sitenizin SSL portundan -443 numaralı port oluyor- çalışmasını sağlayacaksınız. Sitenizin yapılandırma dosyasını -/etc/apache2/sites-available/000-default.conf ya da eğer sanal sunucu ayarlaması yaptıysanız kendi yapılandırma dosyanız- açın. Yapılandırma dosyanızın en altındaki </VirtualHost> satırının üstüne eklemeniz gereken satırları, aşağıda açıklamaları ile birlikte görebilir ve benim kullanıcı adımı kendi sistem kullanıcı adınız ve dosya adınız ile değiştirerek direk olarak yapılandırma dosyanıza kopyalayabilirsiniz.

Yapılandırma dosyanızın en üst satırındaki <VirtualHost *:80> satırını <VirtualHost *:443> şeklinde değiştirerek yapılandırma dosyanızı kaydedip kapatın. Son olarak apache’nin ssl modülünü sudo a2enmod ssl komutuyla etkinleştirin. sudo service apache2 restart komutuyla apache’yi yeniden başlatın. Web sitenize https://www.alanadiniz.com.tr yazarak bağlandığınızda hiç bir uyarı ile karşılaşmadan şifreli bir şekilde bağlanmalısınız.

Güncelleme: Web sitenize http protokolünü kullanarak bağlanan -yani sizden başka herkes- kullanıcılarınızın https protokolüne yönlendirilmesi ile ilgili bir yazı da yazdım, buraya tıklayarak okuyabilirsiniz.