keytool etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
keytool etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

16 Mart 2023 Perşembe

keytool komutu İle TrustStore'a Keystore İthal Etme

Giriş

Örnek
Şöyle yaparız
# Generate a new RSA key pair with an alias mykey and 
# store it in a new keystore file mykeystore.jks.
keytool -genkeypair -alias mykey -keyalg RSA -keysize 2048 -keystore mykeystore.jks

# import the certificate of the key pair that you created in step 1 
# into a new trust store file mytruststore.jks.
keytool -import -alias mykey -file mycertificate.crt -keystore mytruststore.jks

7 Aralık 2020 Pazartesi

keytool komutu İle Certificate Signing Request (CSR) Üretme

Giriş
CertReq oluşturmak için kullanılır

Örnek - Existing Java Keystore
Şöyle yaparız
keytool –certreg –alias mydomain –keystorekeystore.jks –file mydomain.csr
Örnek
Şöyle yaparız. İlk komut bir keypair yani "self signed certificate" oluşturur. İkinci komut ise "certificate sign in" request oluşturur.
keytool -genkey -keyalg RSA -keysize 2048 -keystore server.keystore

keytool -certreq -keyalg RSA -file server.csr -keystore server.keystore
Örnek
Şöyle yaparız
1. Create the Truststore
$ keytool -keystore kafka.server1.truststore.jks — alias CARoot -import -file ca-cert
-storepass <PassForTrust> -keypass <PassOfPrivateKey> -noprompt

2. Create the Keystore
$ keytool -genkey -keystore kafka.server1.keystore.jks -validity 365
-storepass <PassForKeystore> -keypass <PassOfPrivateKey> -ext SAN=dns:localhost
-storetype pkcs12
Burada şöyle sorular geliyor
What is your First and Last Name ...
...

3. Create Certificate Signing request
$ keytool -keystore kafka.server1.keystore.jks -certreq -file cert-file
-storepass <PassOfKeystore> -keypass <PassOfPrivateKey>

4. Sign in Certificate using CA
$ openssl x509 -req -CA ca-cert -CAkey ca-key -in cert-file -out cert-signed -days 365
-CAcreateserial -passin pass:<PassOfPrivateKey>

5.Import the CA into Keystore
$ keytool -keystore kafka.server1.keystore.jks — alias CARoot -import -file ca-cert
-storepass <PassOfKeystore> -keypass <PassOfPrivateKey> -noprompt

6. Import the signed certificate into keystore
$ keytool -keystore kafka.client.keystore.jks -import -file cert-signed
-storepass <PassOfKeystore> -keypass <PassOfPrivateKey> -noprompt

9 Mart 2020 Pazartesi

keytool exportcert Seçeneği - Sertifika keystore'dan Dışarı Çıkarılır.

Giriş
Sertifika (daha kolay hatırlamak için public key diyelim) keystore'dan dışarı çıkarılır. Bu seçenek self-signed sertifika varsa ve sertifika client'ın TrustStore'una eklenmek istiyorsa kullanılır.

Bu komutun tam tersi -importcert seçeneği

Örnek
Şöyle yaparız.
## Export the certificate.
# Password is required. The password is the value set in the previous step, which is 
# 123456
> keytool -export -alias apacheds -keystore ads.keystore -rfc -file apacheds.cer

Enter the keystore password:
Certificate stored in file <apacheds.cer>

Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12, which 
is an industry standard format, using 
"keytool -importkeystore -srckeystore ads.keystore 
  -destkeystore ads.keystore -deststoretype pkcs12".
Örnek
Şöyle yaparız.
-keystore seçeneği ile kullanılacak keystore belirtilir.
-storedpass seçeneği ile varsa keystore için şifre belirtilir.
-file seçeneği ile çıktı dosya belirtilir.
keytool -export -alias server -storepass zzzzzz -file server.cer 
-keystore mykeystore.jks

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


20 Mayıs 2019 Pazartesi

keytool komutu İle TrustStore'a Root CA İthal Etme

Giriş

JVM'in kullandığı Truststore, sunucunun gönderdiği sertifika zincirini doğrulamak için kullanılır. Bazen bir Java uygulamasını çalıştırdığımızda, sunucunun gönderdiği sertifika zincirindeki kök sertifika (Root CA) bizim Truststore dosyamızda yoktur. Bu durumda şöyle bir hata alırız
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Bu durumda kök sertifikayı Java'ya tanıtmak gerekmektedir. Bunun için iki farklı yol izlenebilir.

1. Yepyeni bir Truststore oluşturularak, Java uygulamasının bu dosyayı kullanması sağlanabilir. Bu seçenek diğer Java uygulamalarını etkilemeyeceği için belki biraz daha avantajlı olabilir.

2. Java'ya ait global "$JAVA_HOME/jre/lib/security/cacerts" Truststore dosyasına karşı sunucunun kök sertifikası eklenebilir. cacerts dosyası Root CA sertifikalarının saklandığı dosyadır.

1. Yeni Truststore Oluşturma
Örnek
Şöyle yaparız
$ keytool -keystore kafka.server1.truststore.jks
-alias CARoot
-import
-file ca-cert
-storepass <PassForTrust>
-keypass <PassOfPrivateKey>
-noprompt
Örnek
Yeni bir truststore yaratıp Root CA dosyası alias ile şöyle ithal etmek için şöyle yaparız.
keytool
  -import
  -alias mykey
  -file file_i_got.cer
  -keystore certificate.pfx
JVM'i başlatırken yeni Truststore ismi belirtilebilir. Şöyle yaparız.
-Djavax.net.ssl.trustStore=/app/security/truststore.jks
-Djavax.net.ssl.trustStorePassword=myTrustStorePassword
2. Java'nın Kendi Truststore Dosyasına Root CA Ekleme Yapma
Java'nın Truststore dosyasını varsayılan şifresi "changeit". keytool komutu ile erişince şifre sorulacaktır

Bir sunucunun Root CA sertifikasını elde etmek için "chrome://settings/privacy" adresinden sertifika zinciri izlenerek Root CA bir dosyaya kaydedilir. Detaylı açıklama burada

Örnek
Şöyle yaparız
keytool -import -alias testCert -keystore $JAVA_HOME/jre/lib/security/cacerts
-file example.cer
3. Diğer
keytool komutunu kullanarak kök sertifika ithal ederken kullanılan seçeneklerle ilgili örnekler şöyle

import ve importcert farkı
Eskiden bu seçeneğin ismi import idi. Daha sonra Bu seçeneğin ismi daha sonra importcert olarak değiştirildi.

Örnek
Şöyle yaparız. Burada ithal edilen sertifikayı Root CA kabul edilip edilmeyeceği soruluyor. Kullanıcı yes olarak cevap veriyor.
keytool -import -file example.crt -alias exampleCA -keystore truststore.jks
Enter keystore password:
Re-enter new password:
Owner: CN=.....
.......
Trust this certificate? [no]:  yes
Certificate was added to keystore
Örnek
Şöyle yaparız. Burada ithal edilen sertifikanın Root CA kabul edilmesi -trustcerts seçeneği ile belirtiliyor
keytool -importcert -trustcacerts -file myapp-csr.pem -alias myorg -keystore myapp.jks

6 Nisan 2018 Cuma

keytool list Seçeneği - Keystore İçindekileri Listemele

Giriş
-list ile bir çok seçenek kullanılabilir. Keystore içinde şuna benzer satırlar görebiliriz.

trustedCertEntry : CA sertifikasıdır
PrivateKeyEntry : Private anahtarımdır.

alias seçeneği
Şöyle yaparız
keytool –list –v –keystore keystore.jks –alias mydomain
keystore seçeneği
Belirtilen keyStore dosyası içindekiler listelenir. Şeklen şöyledir.
keytool ... -keystore <FileName>
Örnek
Şöyle  yaparız.
keytool -list -v -keystore certificate.pfx
İçindekiler şöyledir. Dosya içinde private key ve ona karşılık gelen sertifika görülebilir.
keytool -list -keystore certificate.pfx
Enter keystore password:

Keystore type: JKS
Keystore provider: SUN

Your Keystore contains 2 entries

signingkey, Jun 19, 2015, PrivateKeyEntry,
Certificate fingerprint (SHA1): 83:C7:A9:D2:F9:80:C3:6B:16:49:FA:86:FC:18:D5:D5:
26:39:16:12
mykey, Apr 22, 2016, trustedCertEntry,
Certificate fingerprint (SHA1): E9:85:A6:8B:8A:51:89:6D:EA:BA:B8:3A:25:BB:89:34:
1F:5A:BA:5E
printcert seçeneği
printcert seçeneği "stand alone certificate" için kullanılır
Örnek
Standa alone sertifika için şöyle yaparız.
keytool –printcert –v –file mydomain.crt
Örnek
İmzalı apk veya jar dosyaları için şöyle yaparız.
keytool -list -printcert -jarfile app.apk
storetype seçeneği
Örnek
Listelenecek keystore dosyasının tipini belirtmek için kullanılır. Şöyle yaparız.
keytool -list -storetype pkcs12 -keystore mykeystore.p12 -storepass debug
Diğer
cacerts dosyası - Trusted Certificate Authority (CA) Certs List
Özel bir keystore dosyasıdır. JRE'nin kullandığı CA sertifikaları bu dosyadadır.Listelemek için şöyle yaparız. Bu dosyanın varsayılan şifresi "changeit" şeklinde.
keytool -list -keystore "%JAVA_HOME%/jre/lib/security/cacerts"
Çıktı olarak şunu alırız
Keystore type: jks
Keystore provider: SUN
Your keystore contains 44 entries
verisignclass3g2ca, Mar 26, 2004, trustedCertEntry,
Certificate fingerprint (MD5): A2:33:9B:4C:74:78:73:D4:6C:E7:C1:F3:8D:CB:5C:E9
entrustclientca, Jan 9, 2003, trustedCertEntry,
Certificate fingerprint (MD5): 0C:41:2F:13:5B:A0:54:F5:96:66:2D:7E:CD:0E:03:F4
thawtepersonalbasicca, Feb 13, 1999, trustedCertEntry,
Certificate fingerprint (MD5): E6:0B:D2:C9:CA:2D:88:DB:1A:71:0E:4B:78:EB:02:41
addtrustclass1ca, May 1, 2006, trustedCertEntry,
Certificate fingerprint (MD5): 1E:42:95:02:33:92:6B:B9:5F:C0:7F:DA:D6:B2:4B:FC
verisignclass2g3ca, Mar 26, 2004, trustedCertEntry,
Certificate fingerprint (MD5): F8:BE:C4:63:22:C9:A8:46:74:8B:B8:1D:1E:4A:2B:F6

21 Şubat 2018 Çarşamba

keytool komutu

Giriş
Not : Bu komutlar yerine KeyStore Explorer kullanılabilir

- genkeypair/genkey seçeneği ile self signed sertifika oluşturulur.
- export seçeneği ile sertifika dosyaya kaydedilir.
- import seçeneği ile dosya başka bir sistemin "trust store" dosyasına ithal edilir.

certreq seçeneği

export veya exportcert seçeneği
keytool komutu ile Sertifikayı Keystore'dan Dışarı Çıkarma yazısına taşıdım.

genkey veya genkeypair seçeneği
keytool komutu ile Self Signed Sertifika Oluşturma yazısına taşıdım.

list seçeneği
keytool komutu İle Listeleme yazısına taşıdım.

import veya importcert seçeneği
keytool komutu İle TrustStore'a Sertifika İthal Etme yazısına taşıdım

importkeystore seçeneği
Mevcut bir keystore ile bir başka keystore'u birleştirmek istersek kullanırız.

Örnek
Elimizde bir PKCS12 dosyası olsun. Şöyle yaparız
keytool -importkeystore -srckeystore vsftpd.p12 -destkeystore keystore.jks
-srcstoretype pkcs12
keypass seçeneği
keystore dosyasındaki private key nesnesine erişmek için gerekir.

trustcacerts seçeneği
Sertifika ithal ederken sadece Sadece truststore'daki CA sertifikaları değil, JRE dizinini lib/security yolu altında bulunan cacerts sertifikalarını da kullanarak sertifikayı doğrular. Şöyle yaparız.
keytool -import -v -trustcacerts -alias mm_tg_server -file mm-tg-server.cer 
-keystore mm_tg_trustkeystore.jks -keypass zzzzzz -storepass zzzzzz
storepass seçeneği
keystore dosyasına erişmek için gerekir.

storepasswd seçeneği
keystore dosyasının şifresini değiştirmek için kullanılır.

v seçeneği
verbose (daha ayrıntılı) çıktı almak için kullanılır.