8 Eylül 2015 Salı

Self signed certificate

Neden Root CA Üretiriz
Local Certificate Authority yazısına taşıdım.

Sertifika Uyarısı
Bazen site adı ile sertifikası uyuşmaz. O zaman tarayıcı uyarı verir. Aşağıda bir örnek var.
Güvenlik Sertifikası
Site adı sertifika üzerindeki adla uyuşmuyor.
Düzenlenen kişi


Genel ad:
  *.tai.com.tr

Organizasyon:
TUSAS TURK HAVACILIK VE UZAY SANAYI A.S.

Kurumsal birim:
BILISIM DESTEK MUDURLUGU

Düzenleyen

Genel ad:
TÜRKTRUST Elektronik Sunucu Sertifikası Hizmetleri

Organizasyon:
TÜRKTRUST Bilgi İletişim ve Bilişim Güvenliği Hizmetleri A.Ş.(c) Kasım 2005

Kurumsal Birim:

Geçerlilik:
Düzenleme tarihi:
31 01 2011

Sona erme tarihi:
30 01 2014


Java İle İlgili Notlarım

Java keystore dosyası içinde iki çeşit girdi var. İlki trustedCertEntry diğeri ise keyEntry.

trustedCertEntry
SSL ile el sıkışma esnasında sertifikayı yayınlayan CA'nın istemci (client) tarafından biliniyor olması gerekirCA sertifikasının içinde CA otoritesinin public anahtarı bulunmaktadır.

CA Listeleme
Normalde JVM ile çok kullanılan CA'lar tanımlı olarak geliyorlar. Tanımlı CA'lar şöyle listelenebilir.
keytool -list -keystore cacerts >> /opt/app/temp/<filename_here>
CA Tanımlama
Ancak bazı CA'lar tanımlı olmayabilirler. Eğer sistemde tanımlı bulunmayan CA'nın sertifikasını girmek istiyorsak aşağıdaki komutu kullanıyoruz.

keytool -import -v -trustcacerts -alias myServer -file caCert.cer -keystore $JAVA_HOME/jre/lib/security/cacerts


Bu komutta trustcacerts parametresi ile CA sertifikasını aldığımızı belirtiyoruz. caCert.cer ise CA'nın sertifikası.

Dikkat edilmesi gereken nokta  benim sistemimde cacerts dosyası bulunduğu için bu komutu kullandım.
Aslında CA sertifikası sistemden aşağıdaki yerlerden birinde bulunabilir ve kullanılan komutta keystore'un nerede olduğu değişebilir.

  • If the system property "javax.net.ssl.trustStore" is defined, the TrustManager tries to find the default trustStore file by using the filename specified by that system property.
  • If the "javax.net.ssl.trustStore" system property was not specified, and if the file "<java-home>/lib/security/jssecacerts" exists, that file is used.
  • If the file "<java-home>/lib/security/cacerts" exists, that file is used.


keyEntry
keyEntry public/private anahtarları içerir.

keytool - genkey komutu ile üretiliyor. Oracle dokümanında örnekler var. Üretilen sertifika için kullanılacak algoritmayı seçebiliyoruz. Örneğin RSA'yı seçmek için aşağıdaki komut kullanılabilir.

keytool -genkey -alias tomcat -keyalg RSA

Eğer keystore ile sertifikayı almak istemiyorsaj JVM'e çalışma parametresi olarak verebiliriz. Örnek,
java -Djavax.net.ssl.trustStore=c:\jdk160_29\.mykeystore

Certificate Request Nedir
Önce kendi private ve public anahtalarımızı oluşturuyoruz. Sonra public anahtarımızı ve bilgilerimizi bir CA'ya gönderiyoruz. CA da kendi private anahtarı ile bizim public anahtarımızı şifreleyip bize geri gönderiyor. Böylece bizi tanımlayan bir kimlik oluşuyor.
 
Intermediate CA (Certificate Authority) 'dan Satın Aldığımız Sertifikamızı Kurmak

Bir Intermediate CA'dan satın aldığımız sertifika aynı zamanda Primary Sertifika olarak ta adlandırılıyor. Bizi tanımlayan kimlik anlamına geliyor. İçinde bizim public key'imiz var diye anlıyorum.

Java ile bu işi yaparken aşağıdaki komutu kullanıyoruz. Aşağıdaki örneği buradan aldım.
İşlem bittikten sonra certfile.cer dosyasınıa artık ihtiyacımız kalmıyor ve silinebilir.
------------------------------------------
Bir başka örnekte ise Tomcat'e kurma komutu verilmiş.


keytool -import -trustcacerts -alias tomcat -file PrimaryCertFileName.crt -keystore keystore.key 

İşlemi yaparken keystore.key dosyasına erişim için şifre istenecek. Bu keystore dosyasını oluştururken kullandığımı şifreyi kullanmamız lazım.

Web Servis İle Bir Başka Kurumun Servisine Erişim İçin Sertifika Kurmak
Buradaki örnekte de görüldüğü gibi yukarıdaki işlemler ile aynı komut çalıştırılıyor.

keytool -import -trustcacerts -keystore $JAVA_HOME/lib/security/cacerts -file /Users/..../Sertifika/ptt.pem



SSL
SSL ile tek yönlü veya iki yönlü kimlik doğrulama mümkün. Nasıl çalıştığını gösteren bulabildiğim en güzel şekilleri buradan aldım ve aşağıya ekledim.

Tek yönlü doğrulama

Çift yönlü doğrulama


Hiç yorum yok:

Yorum Gönder