How Spark SQL evaluate our Expressions

There are different evaluation paths in Spark SQL:

  • Interpreted. Expressions are evaluated using an eval(…) method. Plans are evaluated using iterators (volcano model). 
  • Expression Codegenerated. This means that all expressions are evaluated using a code generated function. Plans are evaluated using iterators.
  • Wholestafe Codegenerated. All expressions and most plans are evaluated using code generation.

For more information: https://issues.apache.org/jira/browse/SPARK-17728

9 Mart 2017

Posted In: apache, apache spark, apache spark sql, dataframe, scala, spark, spark sql, sql

SSL Sertifikası Nasıl Üretilir?

SSL sertifikasının iki farklı türü bulunuyor; bunlar otorite imzalı SSL sertifikaları ve kendini imzalamış (self signed) SSL sertifikaları.

Kendini imzalamış sertifikalar genellikle test amaçlı veya lokal kullanımda tercih ediliyor. Biri diğerine göre daha güvenli değil. Otoriterler güvenli anahtar değiş tokuşuna olanak sağlarlar ve paylaşılan açık anahtarların doğruluğunu kanıtlarlar.

https sslSSL, anahtar değişiminde asimetrik algoritmalar (RSA,DSA), akan trafikte simetrik algoritmalar (AES, 3DES, RC4 …) kullanılır. Asimetrik kriptografi yaygın olarak açık anahtar (public key, PKI) kriptografisi olarak da anılmaktadır. Açık anahtar kriptografisinde açık (public) ve gizli (private) olmak üzere iki anahtar oluşturulur. Açık anahtar ile kriptolanan veri ancak anahtar çiftinin gizli olan yarısı ile çözülebilir. Bunun tam tersi; gizli anahtar ile kriptolanan veri anahtar çiftinin açık olan yarısı ile çözümlenebilir, bu kaynağın doğrulanması için kullanılır (sertifika doğrulama).

SSL açık anahtar ile şifrelenmiş veriyi İnternet’e gönderiyorsa, neden sertifikaya ihtiyaç duyuluyor? Sertifikalar, güvenilir sertifika otoriteleri tarafından imzalanmış açık anahtarlardır ve sertifikayı gönderen tarafın gerçekten o kişi olduğunu doğrularlar. Güvenilir otorite tarafından imzalanmayan sertifikalar kullanıldığında da veri kriptolanır fakat iletişim kurulan tarafın doğru kişi olduğu kanıtlanamaz.

1- Özel Anahtarın Oluşturulması

SSL özel anahtar oluştururken seçebileceğimiz iki farklı algoritma var, DSA ve RSA. Algoritma seçimi yaparken pek çok farklı kriter göz önünde bulundurulur. Seçimi siyasi veya teknik detaylar belirleyebilir. Örnek olarak yaygın kullanılan RSA‘yı seçiyoruz;

openssl genrsa -out sunucu.pem 2048

Oluşturulan dosya PEM biçimindedir ve ASCII olarak okunabilir.

2- Sertifika İmza Talebinin Oluşturulması CSR (Certificate Signing Request)

CSR üretilirken, özel anahtar kullanılarak açık anahtar oluşturulur ve  imzalanır. Bu CSR dosyası sertifika otoritesine gönderilerek imzalanması istenir. İşlemden sonra otorite imzalı açık anahtarı sertifika olarak geri döner. Bu süreçte gizli anahtarın karşı tarafa gönderilmesine gerek yoktur.

CSR dosyasını sertifika otoritesine göndermek yerine kendi özel anahtarımız ile imzalayabiliriz. Bu tip sertifikalara, kendi imzalamış sertifika (self signed certificate) denir.

CSR dosyası oluşturulurken, sertifika üzerinde X.509 alanlarının tanımlanması istenecek. Bu alanlardan en önemlisi “Common Name” alanıdır. Bu alana SSL ile korumak istediğiniz alanadını yazmanız gerekiyor (fully qualified domain name).

openssl req -new -key sunucu.pem -out sunucu.csr

Country Name (2 letter code) [GB]:TR
State or Province Name (full name) [Berkshire]:Cankaya
Locality Name (eg, city) [Newbury]:Ankara
Organization Name (eg, company) [My Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server’s hostname) []:ozcan.com
Email Address []:
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

3- Kendini İmzalamış Sertifika (self-signed certificate)

Oluşturacağınız sertifikayı bir otoriteye imzalatmayacaksanız, kendi özel anahtarınız ile CSR dosyasının imzalanması gerekiyor. Self-signed sertifika kullandığınızda tarayıcınız uyarı görüntüleyecektir. Bu uyarının sadece kendi sisteminizde görüntülenmesini önlemek için, sertifikayı tarayıcınızın güvenilir kök sertifikalar (trusted root certification authorities) bölümüne eklemeniz yeterli.

openssl x509 -req -days 365 -in sunucu.csr -signkey sunucu.pem -out sunucu.crt

4- Özel Anahtarın Güvenlik Parolasının Kaldırılması

Özel anahtar oluşturulurken tanımlanmış bir parola var ise bunun kaldırılması, web servisleri yeniden başlatıldığında kolaylık sağlayacaktır. Ek güvenlik gereken durumlarda bu parola tanımlanır ve web servislerinin her açılışında parolanın girilmesi gerekir. Parolayı kaldırdıktan sonra özel anahtara sadece root kullanıcısının erişebilir olması güvenliği açısından önemlidir.

openssl rsa -in server.key.org -out server.key

5- Sertifikanın Web Sunucuya Eklenmesi

Aşağıda Apache web sunucu için örnek ayar satırları bulunuyor;

SSLEngine on
SSLCertificateFile /usr/local/apache/conf/sunucu.crt
SSLCertificateKeyFile /usr/local/apache/conf/sunucu.pem
SSLCACertificateFile /usr/local/apache/conf/sub.class1.server.ca.pem

SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !RC4 !aNULL !eNULL !$

CipherSuite ile trafik kripto algoritma önceliği belirlenir. Anahtar derinliği arttıkça performans düşecektir.

Hamdi ÖZCAN – ozcan.com

25 Haziran 2014

Posted In: 3DES, AES, apache, dsa, lkd, openssl, pki, private key, public key, rsa, sertifika, SSL, teknik, tr, web

Ubuntu LAMP

Giriş
LAMP, Linux Apache Mysql PHP kısaltması olarak aklımızda kalıyor. Bazı yerlerde P yerine PHP'den başka bir dil gelebilir ama bu yazıda PHP'yi anlatacağız. Günümüzde çoğu Linux dağıtımı temel ayarlarla gelmektedir, ben Ubuntu 10.04 LTS kullanıyorum ve temel Birkaç ayarı burada anlatmaya çalışmayacağım, uzmanlar anlatsın :) Aslında kendime not almak için yazıyorum bu yazıyı ama belki ihtiyacı olan vardır diye blogda yayınlıyorum tutorial kıvamında, yanlışım varsa şimdiden affola, yorumlarla bana düzelttirile!

Apache Web Sunucusu Kurulumu ve Ayarları
Apache günümüzde en yaygın olarak kullanılan web sunucularından birisidir. Bu yüzden apache ile ilgili bir çok doküman bulmak mevcut bu kısımda ayrıntıya girmeden apache kurulumu ve yapılandırılmasından bahsedeceğim. Öncelikle sisteminizde ki paketleri güncelleyin.
apt-get update
apt-get upgrade --show-upgraded
Ubuntu üzerinde apache’yi kurmak için aşağıdaki komutu kullanın. Bu komut apache version 2 serisini bilgisayarınıza kuracaktır.
apt-get install apache2
Bu işlemi tamamladıktan sonra sanal konaklama(Virtual Hosting) ayarlarını yapacağız.

Sanal Konaklamayı Ayarlamak
Öncelikle /etc/apache2/ports.conf dosyamızı kontrol edelim. Ben bu dökümanı hazırlarken içersinde
NameVirtualHost *:80
Listen 80
değerleri yazılmış ve hazır şekildeydi. Burada 80. portu dinlediğimizden ve sunucumuzun tüm ipleri dinlediğiden emin oluyoruz. Ardından açacağımız site için /etc/apache2/sites-available/ dizinine bir dosya oluşturuyoruz. Örnek olarak:
touch siteminadi.com
Bu dosyayı vim ile açıyor ve düzenlemeye başlıyoruz:
VirtualHost *:80>
ServerName www.siteminadi.com
ServerAlias siteminadi.com
DocumentRoot /srv/www/siteminadi.com/dosyalarhangidizindeyse/
ErrorLog /srv/www/siteminadi.com/logs/error.log
CustomLog /srv/www/siteminadi.com/logs/custom.log
/VirtualHost> (VirtualHostların başında < şu işaret var ama burada yazınca blogger sapıtıyor)

ServerAlias kullanıcılarınızın sitenize erişmek için kullandığı adresleri içerir, Log dosyaları sitenizin kayıtlarını tutar, document root sitenizi barındırdığınız dizini adresler, servername hangi barınağın hangi adrese gideceğini belirler. Elbette bunları buraya yazmanız direkt çalışacağı anlamına gelmez, DNS'lerini düzggün bir şekilde sunucunuzun IP'sine yönlendirmeniz gerekir. Bundan böyle sunucunuza bir istek geldiğinde önce izin verilen iplerden birisi olup olmadığına bakılır ardından uygun servername aranmaya başlanır ve bulunduğunda bu documentrootta bulunan içeriğe yönlendirilir. Bu dosyayı oluşturduktan sonra ya da önce belirttiğiniz dizinleri oluşturmanız gerekir, yoksa apache hata verir.

mkdir -p /srv/www/siteminadi.com/dosyalarhangidizindeyse
mkdir /srv/www/siteminadi.com/dosyalarhangidizindeyse/logs

Eğer dosyalar zaten ayarlıysa şu komut ile siteyi aktif hale getirirsiniz
a2ensite siteminadi.com
Bu komutla dosyanız sites-enabled dizine kopyalanır ardından apache'yi restart ederek ya da reload ederek siteyi açarsınız.

/etc/init.d/apache2 restart
/etc/init.d/apache2 reload
Mysql Kurulumu ve Ayarları
Öncelikle şu komutu çalıştırın

apt-get install mysql-server

Kurulum sırasında sizden root şifrenizi ayarlamanız istenir, bir şifre belirleyip not ediniz.
Mysql başlı başına bir konudur ama biz sadece bir veritabanı oluşturacağız şu komutla mysql sistemine giriş yaparsınız

mysql -u root -p

Şifrenizi girmenizi isteyecek root şifrenizi girip giriş yapınız.
Database oluşturmak için aşağıdaki komutu kullanın, sonuna ; işareti koymayı unutmayın, mysql'de komutlar ; işareti ile biter.

create database benimdb;

Database oluştu üzerinde bir kullanıcı oluşturup tüm haklarını bu kullanıcıya vermek için aşağıdaki komutu yazınız kullanıcı adı dbadmin şifre 12345 yaptım, siz daha düzgün bir şey seçersiniz.

grant all on benimdb.* to 'dbadmin' identified by '12345';

Flush komutuyla ayrıcalıkları güncelliyoruz.

flush privileges;

İşimiz bitince çıkış yapıyoruz

quit
PHP Kurulumu ve Ayarları
PHP bir programlama dilidir ve LAMP rehberinde onun kurulumunu anlatacağız. Şu komutla kurulumu yaparsınız.

apt-get install php5 php-pear

İsterseniz şu adresteki ayar dosyasını güncelleyebilirsiniz, başlangıç seviyesi kullanıcılar gerekmedikçe bu dosyayı güncellemek zorunda değildir. Çoğu ayar standart şekilde zaten yapılmıştır. Bir değişiklik yaparsanız Apache'yi restart etmeniz gerekir.

/etc/php5/apache2/php.ini

Mysql desteği için şu paketi kurunuz böylece PHP ile Mysql güzelce anlaşmaya başlar, Apache ise zaten PHP'nin dilinden çok iyi anlar ve kısaca LAMP kısmını geride bırakırız.

apt-get install php5-mysql libapache2-mod-auth-mysql

Grafiksel araçlar, çeşitli ayarlar bunların hepsi sonra yapılabilir ama öncelikli olarak sunucunuz artık bu bileşenlere sahiptir. Ayrıntılar vakit bulursam belki ileride burada yayınlanır. Okuduğunuz için teşekkürler

Kaynakça:

http://httpd.apache.org/docs/2.0/en/vhosts/name-based.html

http://library.linode.com/lamp-guides/ubuntu-10.04-lucid/

https://help.ubuntu.com/community/ApacheMySQLPHP

24 Aralık 2010

Posted In: apache, lamp, linux, MySQL, php, ubuntu

Twitter Auto Publish Powered By : XYZScripts.com