27
EDUTIME EDUTIME Java Day 9 Java Day 9 Serdar TÜRKEL Serdar TÜRKEL

EDUTIME Java Day 9

Embed Size (px)

DESCRIPTION

EDUTIME Java Day 9. Serdar TÜRKEL. Java’da Güvenlik. JAR aracının tanımlanması Bir JAR dosyasını oluşuturmak Appletleri tanımak için Sayısal imzalar Güvenlik anahtarı aracı oluşturmak Sayısal sertifikalarlar çalışmak Java.security paketini anlamak. JAR Aracı. JAR Dosyası : - PowerPoint PPT Presentation

Citation preview

Page 1: EDUTIME Java Day 9

EDUTIMEEDUTIMEJava Day 9Java Day 9

Serdar TÜRKELSerdar TÜRKEL

Page 2: EDUTIME Java Day 9

Java’da GüvenlikJava’da Güvenlik

JAR JAR aracının tanımlanmasıaracının tanımlanması Bir JAR dosyasını oluşuturmakBir JAR dosyasını oluşuturmak Appletleri tanımak için Sayısal imzalarAppletleri tanımak için Sayısal imzalar Güvenlik anahtarı aracı oluşturmakGüvenlik anahtarı aracı oluşturmak Sayısal sertifikalarlar çalışmakSayısal sertifikalarlar çalışmak Java.security Java.security paketini anlamakpaketini anlamak

Page 3: EDUTIME Java Day 9

JAR JAR AracıAracı

JAR DosyasıJAR Dosyası: : • Java arşivleme aracının(JAR) oluşturduğu Java arşivleme aracının(JAR) oluşturduğu

sıkıştırılmış bir arşiv dosyasıdır.sıkıştırılmış bir arşiv dosyasıdır.• Bir çok dosyayı tek bir arşiv dosyasında birleştirir.Bir çok dosyayı tek bir arşiv dosyasında birleştirir.• Web tarayıcılarına verimli yüklemeyi sağlarWeb tarayıcılarına verimli yüklemeyi sağlar

JAR JAR aracını çalıştırmak için :aracını çalıştırmak için :  jar [options] [manifest] jar-file input-file(s)jar [options] [manifest] jar-file input-file(s)

Page 4: EDUTIME Java Day 9

JAR JAR AracıAracı

SeçenekSeçenek AçıklamaAçıklama

cc Yeni arşiv oluştururYeni arşiv oluşturur

tt Arşivin içerik tablosunu listelerArşivin içerik tablosunu listeler

xx İsimleri verilen dosyaları arşivden çıkarırİsimleri verilen dosyaları arşivden çıkarır

vv Standard hata üzerinden detaylı çıktı Standard hata üzerinden detaylı çıktı oluştururoluşturur

ff Arşiv dosya isimlerini belirtirArşiv dosya isimlerini belirtir

mm Belirtilen manifesto dosyalarından Belirtilen manifesto dosyalarından manifesto bilgisi alırmanifesto bilgisi alır

OO Dosyaları sadece birleştir, sıkıştırmaDosyaları sadece birleştir, sıkıştırma

MM Manifesto dosyarı oluşturmazManifesto dosyarı oluşturmaz

Page 5: EDUTIME Java Day 9

JAR JAR AracıAracı Bir dizin içindeki tüm sınıf dosyalarını ve Bir dizin içindeki tüm sınıf dosyalarını ve

java dosyalarınıjava dosyalarını ‘pack’ ‘pack’ isimli bir jar isimli bir jar dosyasına arşivlemedosyasına arşivleme

jar cf pack.jar *.class jar cf pack.jar *.class

‘‘pack.jar’pack.jar’ dosyasındaki dosyaları dosyasındaki dosyaları listelemelisteleme

jar tf pack.jarjar tf pack.jar

Page 6: EDUTIME Java Day 9

JAR JAR AracıAracı

‘‘pack.jar’ dosyasını bir aplette kullanmak pack.jar’ dosyasını bir aplette kullanmak için, HTML sayfasını açın ve için, HTML sayfasını açın ve ARCHIVE = ARCHIVE = “pack.jar” “pack.jar” özelliğini aplet biçiminde özelliğini aplet biçiminde aşağıdaki gibi kullanın:aşağıdaki gibi kullanın:<applet code = “class file name” ARCHIVE = <applet code = “class file name” ARCHIVE = “pack.jar”“pack.jar” height = “125” width = “350”> height = “125” width = “350”>

</applet></applet> ‘‘pack.jar’ pack.jar’ dosyasında sıkıştırılmış tüm dosyasında sıkıştırılmış tüm

dosyaları çıkarır.dosyaları çıkarır.

   jar xvf pack.jarjar xvf pack.jar

Page 7: EDUTIME Java Day 9

Jar AracıJar Aracıimport java.awt.*;import java.awt.*;import java.io.*;import java.io.*;import java.awt.event.*;import java.awt.event.*;public class jar1 extends Frame implements WindowListener{public class jar1 extends Frame implements WindowListener{

public jar1(){public jar1(){addWindowListener(this);addWindowListener(this);

}}public static void main(String args[]){public static void main(String args[]){

jar1 f=new jar1();jar1 f=new jar1();f.setTitle("pencere");f.setTitle("pencere");f.setSize(400,400);f.setSize(400,400);f.setVisible(true);f.setVisible(true);

}}public void windowDeactivated(WindowEvent we){}public void windowDeactivated(WindowEvent we){}public void windowActivated(WindowEvent we){}public void windowActivated(WindowEvent we){}public void windowDeiconified(WindowEvent we){}public void windowDeiconified(WindowEvent we){}public void windowIconified(WindowEvent we){}public void windowIconified(WindowEvent we){}public void windowClosing(WindowEvent we){System.exit(0);}public void windowClosing(WindowEvent we){System.exit(0);}public void windowClosed(WindowEvent we){}public void windowClosed(WindowEvent we){}public void windowOpened(WindowEvent we){}public void windowOpened(WindowEvent we){}

}}

Page 8: EDUTIME Java Day 9

Apletleri tanımak için sayısal Apletleri tanımak için sayısal imzalarimzalar

Apletlerin desteklemediği bazı özelliklerApletlerin desteklemediği bazı özellikler::• Apleltin çalışmakta olduğu sistemeden dosyaları Apleltin çalışmakta olduğu sistemeden dosyaları

okuma ve yazma.okuma ve yazma.• Sistemdeki bir dosya hakkında bilgi almaSistemdeki bir dosya hakkında bilgi alma• Sitemden dosya silmeSitemden dosya silme

Java 2Java 2, appletler güvenilir bir applet sunucudan geldiği , appletler güvenilir bir applet sunucudan geldiği ve sayısal imza ile imzalandığı sürece, yukarıdaki ve sayısal imza ile imzalandığı sürece, yukarıdaki işlemlerin hepsini gerçekleştirebilir. işlemlerin hepsini gerçekleştirebilir.

Page 9: EDUTIME Java Day 9

Apletleri tanımak için sayısal Apletleri tanımak için sayısal imzalarimzalar

Anahtar tabanlı şifrelemeAnahtar tabanlı şifreleme

Page 10: EDUTIME Java Day 9

Apletleri tanımak için sayısal Apletleri tanımak için sayısal imzalarimzalar

Sayısal imza, bir programla gelen şifrelenmiş bir Sayısal imza, bir programla gelen şifrelenmiş bir dosya olmasının yanısıra, dosyanın nerden dosya olmasının yanısıra, dosyanın nerden geldiğini ayrıntılı bir şekilde belirten bir dosyadırgeldiğini ayrıntılı bir şekilde belirten bir dosyadır

Özel anahtarı(private key) elinde tutan kişi, Özel anahtarı(private key) elinde tutan kişi, nesnenin içeriğinin doğruluğunu sağlayabilir.nesnenin içeriğinin doğruluğunu sağlayabilir.

Sayısal imzadaSayısal imzada, , şifreleme için özel anahtarşifreleme için özel anahtar, , ve ve şifreyi çözmek içinde ortak anahtar (public şifreyi çözmek içinde ortak anahtar (public key)kullanılırkey)kullanılır

Bu imzayı temsil eden dökümanın adı Bu imzayı temsil eden dökümanın adı ‘Sertifika’dır‘Sertifika’dır..

Şu an itibariyle, aşağıdaki şirketler sertifika Şu an itibariyle, aşağıdaki şirketler sertifika doğrulama servisi sunar:doğrulama servisi sunar:• VeriSignVeriSign• ThawtCertificationThawtCertification

Page 11: EDUTIME Java Day 9

Java Java güvenlik anahtarıgüvenlik anahtarı Apleti imzalamadan önceApleti imzalamadan önce::

• ‘‘jar’, ‘jarsigner’, jar’, ‘jarsigner’, ve ve ‘keytool’ ‘keytool’ isminde üç araç isminde üç araç oluşturmalıyız.oluşturmalıyız.

• Bir ortakBir ortak//özelözel anahtaranahtar çifti oluşturulmalıçifti oluşturulmalı, , ve ve jarsigner jarsigner aracı için erişilebilir yapmalıyız.aracı için erişilebilir yapmalıyız.

‘‘keystore’ keystore’ bir anahtar deposu, anahtarlardan bir anahtar deposu, anahtarlardan oluşan bir veritabanıdıroluşan bir veritabanıdır

‘‘keytool’keytool’, javanın güvenlik anahtarı aracıdır, javanın güvenlik anahtarı aracıdır. . BuBu::• Ortak/özel anahtar çiftlerini yönetirOrtak/özel anahtar çiftlerini yönetir• Ortak anahtarları tutarOrtak anahtarları tutar• Doğruluk kontrolü için sertifikalar kullanırDoğruluk kontrolü için sertifikalar kullanır• Kaynak verinin doğruluğunu kontrol eder.Kaynak verinin doğruluğunu kontrol eder.

Page 12: EDUTIME Java Day 9

Java Java güvenlik anahtarıgüvenlik anahtarı

Jarsigner komutunun bazı seçenekleriJarsigner komutunun bazı seçenekleri

SeçenekSeçenek AçıklamaAçıklama

keyStorekeyStore Kullanılacak anahtar-deposunun ismini Kullanılacak anahtar-deposunun ismini belirtirbelirtir

storePasswordstorePassword Anahtar-deposunun şifresini belirtirAnahtar-deposunun şifresini belirtir

keyPasswordkeyPassword Gizli anahtar şifresini belirtirGizli anahtar şifresini belirtir

JARFileNameJARFileName İmzalanacak JAR dosyasının ismini İmzalanacak JAR dosyasının ismini belirtirbelirtir

AliasAlias İmzalayanın kaynak adını belirtir.İmzalayanın kaynak adını belirtir.

Page 13: EDUTIME Java Day 9

Java Java güvenlik anahtarıgüvenlik anahtarı JAR JAR dosyasını imzalamak için komutdosyasını imzalamak için komut

jarsigner –keystore keyStore –storepass storePassword jarsigner –keystore keyStore –storepass storePassword -keypass keyPassword-keypass keyPassword

‘‘pack.jar’ JAR pack.jar’ JAR dosyasını, dosyasını, ‘store’ ‘store’ anahtar deposu, anahtar deposu, depo ve gizli anahtar için depo ve gizli anahtar için ‘password’‘password’ şifresiyle şifresiyle imzalamak için komutimzalamak için komut jarsigner –keystore store –storepass password –keypass jarsigner –keystore store –storepass password –keypass

password pack.jar ppassword pack.jar p

İmzalanmış bir JAR dosyasının imzasının İmzalanmış bir JAR dosyasının imzasının doğruluğunu kontrol etmek için komutdoğruluğunu kontrol etmek için komut

jarsigner –verify pack.jarjarsigner –verify pack.jar

Page 14: EDUTIME Java Day 9

Doğrulama süreciDoğrulama süreci: : • ‘‘.DSA’ dosyasının. ‘.SF’ imza dosyası için .DSA’ dosyasının. ‘.SF’ imza dosyası için

geçerli bir imza taşıyıp taşımadığınıgeçerli bir imza taşıyıp taşımadığını• İmza dosyasındaki dosya girişlerinin, ilgili İmza dosyasındaki dosya girişlerinin, ilgili

manifesto dosya girişleri için geçerl özetler manifesto dosya girişleri için geçerl özetler olup olmadığını kontrol eder.olup olmadığını kontrol eder.

Java Java güvenlik anahtarıgüvenlik anahtarı

Page 15: EDUTIME Java Day 9

Sayısal SertifikalarSayısal Sertifikalar Sayısal sertifika, bir sertifika yetkesi Sayısal sertifika, bir sertifika yetkesi

tarafından imzalanan bir dosya, nesne tarafından imzalanan bir dosya, nesne veya mesajdır.veya mesajdır.

CA (certificate authorityCA (certificate authority- Sertifika yetkisi- Sertifika yetkisi), ), şahısın kamusal anahtarının doğruluğunu şahısın kamusal anahtarının doğruluğunu kontol eder.kontol eder.

Uluslar arası Standartlar Uluslar arası Standartlar Organizasyonunun Organizasyonunun X.509 X.509 sertifikaları, sertifikaları, popüler sayısal sertifika formatlarıdır.popüler sayısal sertifika formatlarıdır.

Keytool bu sertifikaları destekler.Keytool bu sertifikaları destekler.

Page 16: EDUTIME Java Day 9

Sayısal SertifikalarSayısal Sertifikalar ‘‘keytool’keytool’, bir sertifika edinmek için ilk adımdır., bir sertifika edinmek için ilk adımdır. ‘‘keytool’keytool’ u, yeni bir ortak/özel anahtar çiftleri u, yeni bir ortak/özel anahtar çiftleri

oluşturmak için kullanıyoruz.oluşturmak için kullanıyoruz. KeytoolKeytool, başkaları tarafından oluşturulan ve , başkaları tarafından oluşturulan ve

imzalanan sertifikaları ithal eder.imzalanan sertifikaları ithal eder. KeytoolKeytool, yeni ortak anahtarı ile birlikte yeni bir , yeni ortak anahtarı ile birlikte yeni bir

sertifika paketler.sertifika paketler. Ortak anahtarı oluşturan nesne, bu sertifikayı Ortak anahtarı oluşturan nesne, bu sertifikayı

imzalar.imzalar. Sertifika-imzalama isteği oluşturmak için Sertifika-imzalama isteği oluşturmak için

gereklidirlergereklidirler

Page 17: EDUTIME Java Day 9

Sayısal SertifikalarSayısal Sertifikalar

‘‘keytool’ keytool’ ve ve the ‘–certreq’ the ‘–certreq’ seçeneği, sertifikayı seçeneği, sertifikayı oluşturmak için kullanılıroluşturmak için kullanılır

Sertifika oluşturmak için komut:Sertifika oluşturmak için komut:

keytool – keystore store – alias mykey – certreq –file keytool – keystore store – alias mykey – certreq –file mykey.txtmykey.txt

Page 18: EDUTIME Java Day 9

Java Java Güvenlik paketleriGüvenlik paketleri   java.securityjava.security

• Temel güvenlik paketidir.Temel güvenlik paketidir.   java.security.acljava.security.acl

• Erişim protokolü politikalarını gerçekleştirmek için Erişim protokolü politikalarını gerçekleştirmek için kullanılan arayüzlerden oluşurkullanılan arayüzlerden oluşur

  java.security.certjava.security.cert• X.509 sertifikaları için destek sağlarX.509 sertifikaları için destek sağlar

java.security.interfacesjava.security.interfaces• Sayısal imzalama algoritmasına erişmek için Sayısal imzalama algoritmasına erişmek için

kullanılan arayüzler tanımlarkullanılan arayüzler tanımlar   java.security.specjava.security.spec

• Anahtarlar için algoritma bağımlı ve bağımsız sınıflar Anahtarlar için algoritma bağımlı ve bağımsız sınıflar sunarsunar

Page 19: EDUTIME Java Day 9

Bir Class ŞifrelemekBir Class Şifrelemek

bir java dosyası oluşturmakbir java dosyası oluşturmak Bir jar dosyası oluşturmakBir jar dosyası oluşturmak Bir anahtar deposuna bakmakBir anahtar deposuna bakmak Anahtar oluşturmakAnahtar oluşturmak Jar dosyasını anahtar ile imzalamakJar dosyasını anahtar ile imzalamak Jar dosyasını HTML dosyasına Jar dosyasını HTML dosyasına

gömmek.gömmek.

Page 20: EDUTIME Java Day 9

Bir Java Dosyası OluşturmakBir Java Dosyası Oluşturmak

import java.awt.*;import java.awt.*;import java.applet.*;import java.applet.*;import java.io.*;import java.io.*;public class jar2 extends Applet{public class jar2 extends Applet{

public void paint(Graphics g){public void paint(Graphics g){g.drawRect(10,10,20,60);g.drawRect(10,10,20,60);g.drawString("Edutime",10,20);g.drawString("Edutime",10,20);

}}}}

Page 21: EDUTIME Java Day 9

Bir Jar Dosyası OluşturmakBir Jar Dosyası Oluşturmak

Jar –cvf jar1.jar jar2.classJar –cvf jar1.jar jar2.class• Manifest.mf dosyasını düzenlemekManifest.mf dosyasını düzenlemek

Manifest.mf dosyasına Main-Class:jar2 Manifest.mf dosyasına Main-Class:jar2 yazılmalıdır.yazılmalıdır.

Page 22: EDUTIME Java Day 9

Anahtar Deposuna BakmakAnahtar Deposuna Bakmak

Keytool –list Keytool –list • eğer bir anahtar çiftiniz yok ise, “keytool eğer bir anahtar çiftiniz yok ise, “keytool

error” hatası alacaksınız.error” hatası alacaksınız.

Page 23: EDUTIME Java Day 9

Anahtar OluşturmakAnahtar Oluşturmak

Keytool –genkey –alias anahtar –keypass qwertyKeytool –genkey –alias anahtar –keypass qwerty• Keytool : Keytool : anahtar deposuna erişmek ve oluşturmak için anahtar deposuna erişmek ve oluşturmak için

kullanılan araç.kullanılan araç.• Genkey :Genkey : Oluşturma işleminin yapılacağını belirtir. Oluşturma işleminin yapılacağını belirtir.• Anahtar :Anahtar : Anahtara verilen kısa isim Anahtara verilen kısa isim• Keypass : Keypass : özel anahtarı korumak için konulan şifre.özel anahtarı korumak için konulan şifre.

Page 24: EDUTIME Java Day 9

Anahtar OluşturmakAnahtar OluşturmakBu komut yazıldıktan sonra aşağıdaki mesaj alınacaktır.Bu komut yazıldıktan sonra aşağıdaki mesaj alınacaktır.

Enter keystore password:Enter keystore password: 123456 123456

What is your first and last name?What is your first and last name? [Unknown]: Serdar TÜRKEL[Unknown]: Serdar TÜRKEL

What is the name of your organizational unit?What is the name of your organizational unit? [Unknown]: Eğitmen[Unknown]: Eğitmen

What is the name of your organization?What is the name of your organization? [Unknown]: Edutime[Unknown]: Edutime

What is the name of your City or Locality?What is the name of your City or Locality? [Unknown]: Marmara[Unknown]: Marmara

What is the name of your State or Province?What is the name of your State or Province? [Unknown]: İstanbul[Unknown]: İstanbul

What is the two-letter country code for this unit?What is the two-letter country code for this unit? [Unknown]: TÜRKİYE[Unknown]: TÜRKİYE

Is CN=Serdar TÜRKEL, OU=Eğitmen, O=Edutime, L=Marmara, ST=İstanbul, C=TÜRKİYE Is CN=Serdar TÜRKEL, OU=Eğitmen, O=Edutime, L=Marmara, ST=İstanbul, C=TÜRKİYE correct?correct?

[no]:[no]: yes yes

Page 25: EDUTIME Java Day 9

Jar Dosyasını İmzalamakJar Dosyasını İmzalamak

jarsigner jarsigner -keystore c:\keys\key1-keystore c:\keys\key1-storepass 123456-storepass 123456-keypass qwerty-keypass qwerty-signedjar sjar2.jar jar2.jar ANAHTAR-signedjar sjar2.jar jar2.jar ANAHTAR

Page 26: EDUTIME Java Day 9

Jar Dosyasının Kontol EdilmesiJar Dosyasının Kontol Edilmesi

jarsigner -verify sjar2.jarjarsigner -verify sjar2.jar

Page 27: EDUTIME Java Day 9

.cer oluşturma.cer oluşturma

keytool keytool -export –keystore-export –keystorec:\keys\key1 -alias ANAHTARc:\keys\key1 -alias ANAHTAR-file ser.cer-file ser.cer