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

Hiç yorum yok:

Yorum Gönder