Upload
iris-park
View
43
Download
0
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
EDUTIMEEDUTIMEJava Day 9Java Day 9
Serdar TÜRKELSerdar TÜRKEL
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
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)
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
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
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
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){}
}}
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.
Apletleri tanımak için sayısal Apletleri tanımak için sayısal imzalarimzalar
Anahtar tabanlı şifrelemeAnahtar tabanlı şifreleme
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
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.
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.
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
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ı
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.
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
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
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
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.
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);
}}}}
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.
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.
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.
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
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
Jar Dosyasının Kontol EdilmesiJar Dosyasının Kontol Edilmesi
jarsigner -verify sjar2.jarjarsigner -verify sjar2.jar
.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