9 Mart 2020 Pazartesi

keytool genkeypair/genkey Seçeneği - Self Signed Sertifika Oluşturma

Giriş
Self signed sertifika oluşturur. Bu sertifika örneğin SSL için kullanılır. Sertifika -keystore ile belirtilen dosyadadır. Dosyanın tipi JKS, PKCS12 vs olabilir. Java için genellikle JKS kullanılır

-keyalg ile kullanılacak algoritma seçilir.
-keysize ile keyalg ile belirtilen algoritmanın kullanacağı key büyüklüğü belirtilir.

-keystore ile sertifikanın yazılacağı dosya belirtilir. Bo dosya kopyalanarak gerekli yere taşınabilir.
-storetype ile dosya tipi belirtilir. Bu seçenek belirtilmezse JKS formatı kullanılır. İstenirse PKCS12 belirtilebilir.
-storepas ile keystore dosyasına erişim şifresi belirtilir.

-alias ile sertifikaya isim verilir. Örneğin tomcat kullanıyorsak sertifikaya tomcat alias verilir.
-validity ile sertifikanın geçerlilik süresi belirtilir 
-keypass ile sertifikaya erişim şifresi belirtilir

Eğer seçeklerin bazıları verilmezse, keytool bir soru sorarak değer girmemiz ister veya varsayılan bir değeri kullanır

1. genkeypair seçeneği
Açıklaması şöyle
The -genkeypair command in the keytool utility generates a key pair. The key pair includes a public key and associated private key. The -genkeypair command wraps the public key into an X.509 v3 self-signed certificate, which is stored as a single-element certificate chain. This certificate chain and the private key are stored in a new keystore entry that is identified by an alias.
Örnek
Şöyle yaparız.
keytool -genkeypair -alias apacheds -keyalg RSA -validity 7 -keystore ads.keystore

Enter the keystore password:
Re-enter new password:

What is your first and last name?
[Unknown]:  apacheds

What is the name of your organizational unit?
[Unknown]:  apacheds

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

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

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

What is the two-letter country code for this unit?
[Unknown]:  CN

Is CN=apacheds, OU=apacheds, O=apacheds, L=apacheds, ST=apacheds, C=CN correct?
[no]:  yes

Enter key password for <apacheds>
(RETURN if same as keystore password):
Re-enter new password:

Warning:
The JKS keystore uses a proprietary format.  It is recommended to migrate to PKCS12,
 which is an industry standard
Örnek
Şöyle yaparız. Burada PKCS#12 (Tek dosyada Private Key + Sertifika) formatında dosya oluşturuluyor.
keytool -genkeypair -keyalg RSA -keysize 2048 -storetype PKCS12 
-keystore key-cert-mousumi.p12 -validity 365
Örnek 
Şöyle yaparız. localhost-ssl.p12 isimli bir dosya oluşturur.
keytool -genkeypair 
  -alias localhost 
  -keyalg RSA 
  -keysize 2048 
  -storetype PKCS12 
  -keystore localhost-ssl.p12 
  -validity 3650

Örnek
Bu sorulara cevap vermeden bir seferde yapmak için şöyle yaparız. Burada niye deststoretype seçeneği kullanılmış bilmiyorum. -storetype kullanılmalıydı bence. Sertifikada Owner ve Issuer alanları -dname ile verilen değerlere sahiptir
keytool

-genkeypair
-keyalg RSA
-keysize 2048
-alias server
-dname "CN=Hakan,OU=Amsterdam,O=Thunderberry,C=NL"
-ext "SAN:c=DNS:localhost,IP:127.0.0.1"
-validity 3650
-keystore server/src/main/resources/identity.jks
-storepass secret
-keypass secret
-deststoretype pkcs12
Örnek
Şöyle yaparız. Burada City/Locality için L=Cupertino, State için S=California, Country için C=US bilgileri belirtiliyor.
keytool -genkeypair -alias taskrSaml -storepass 123456
  -dname "CN=John Doe, OU=Taskr, O=EvilInc, L=Cupertino, S=California, C=US"
  -keypass 123456 -keyalg RSA -keysize 2048 -sigalg SHA256withRSA
  -keystore taskrSamlKeystore.jks
2. genkey seçeneği - Eski seçenek Kullanmayın
Örnek
Şöyle yaparız.
keytool  -genkey -alias tomcat -keyalg RSA -keystore c:\mykeystore
Komutu çalıştırınca şu tür soruları cevaplarız.
Enter keystore password: ...
Re-enter new password:
What is your first and last name?
   [Unknown]:  ...
What is the name of your organizational unit?
...

Enter key password for <...>
    (RETURN if same as keystore password):
  Re-enter new password:...
Örnek - RSA 2048 JKS keystore
Daha fazla parametre verebiliriz. Şöyle yaparız. Çıktı keystore.key dosyasındadır.
keytool -genkey -alias tomcat -keypass mypassword -keystore keystore.jks 
-storepass mypassword -keyalg RSA -validity 360 -keysize 2048
Örnek - RSA 2048 PKCS12 keystore
Şöyle yaparız.
keytool -genkey -alias tomcat
-storetype PKCS12
-keyalg RSA -keysize 2048 -keystore keystore.p12
-validity 3650
Örnek - RSA 4096 PKCS12 keystore
Şöyle yaparız
keytool -genkey -keyalg RSA -alias medium -keystore medium.jks -storepass password
-validity 365 -keysize 4096 -storetype pkcs12


Hiç yorum yok:

Yorum Gönder