Anahtar deposu ve güven deposu arasındaki fark nedir?
Anahtar deposu ve güven deposu arasındaki fark nedir?
Yanıtlar:
Bir anahtar deposu özel anahtarlar ve karşılık gelen ortak anahtarları olan sertifikaları içerir.
Bir truststore, iletişim kurmayı beklediğiniz diğer taraflardan veya diğer tarafları tanımlamak için güvendiğiniz Sertifika Yetkililerinden sertifikalar içerir.
TrustStore
kendi başına değildir . Ya da java belgelerinde bulamadım (örneğin, java.security.TrustStore
). Bir Sertifika Yetkilisine güvenmek istediğimizde, sertifikaya bir KeyStore
(ve aracılığıyla KeyStore
geçirilir TrustManagerFactory
) aracılığıyla güvenilir .
Bir anahtar deposu özel anahtarlar içerir. Buna yalnızca bir sunucuysanız veya sunucu istemci kimlik doğrulaması gerektiriyorsa ihtiyacınız vardır.
Bir truststore güvenilecek CA sertifikaları içerir. Sunucunuzun sertifikası tanınan bir CA tarafından imzalanmışsa, JRE ile birlikte gelen varsayılan güven deposu zaten ona güvenir (çünkü zaten güvenilir CA'lara güveniyordur), bu yüzden kendinizinkini oluşturmanıza veya birine bir şey eklemenize gerek yoktur JRE'den.
SSL el sıkışmasında trustStore'un amacı kimlik bilgilerini doğrulamak ve keyStore'un amacı kimlik bilgileri sağlamaktır .
anahtar deposu
Java'daki keyStore, ortak anahtarlarına karşılık gelen özel anahtarı ve sertifikaları depolar ve SSL Server veya SSL olup olmadığınızı gerektirir, istemci kimlik doğrulaması gerektirir.
truststore
TrustStore, üçüncü tarafın sertifikalarını saklar, Java uygulamanızla iletişim kurar veya CA tarafından imzalanmış sertifikalar (Verisign, Thawte, Geotrust veya GoDaddy gibi sertifika yetkilileri).
TrustManager
TrustManager, uzak bağlantıya güvenilip güvenilmeyeceğini belirler; yani uzak tarafın iddia ettiği kişi olup olmadığı ve KeyManager, SSL el sıkışma sırasında kimlik doğrulama için uzaktaki ana bilgisayara hangi kimlik doğrulama bilgilerinin gönderilmesi gerektiğine karar verir.
SSL Sunucusu iseniz, anahtar değişimi algoritması sırasında özel anahtarı kullanır ve genel anahtarlarınıza karşılık gelen sertifikaları istemciye gönderirsiniz, bu sertifika keyStore'dan alınır. SSL istemci tarafında, Java ile yazılmışsa, Server'ın kimliğini doğrulamak için trustStore'da saklanan sertifikaları kullanır. SSL sertifikaları en sık olarak gelir olan .cer herhangi bir tuşa yönetim programı örn kullanarak anahtar deposu veya truststore içine eklenir dosyanın keytool .
Kaynak: http://javarevisited.blogspot.ch
Ayrıca, standart JSSE belgelerinin bir parçası olarak Sun'ın yazımıyla da ilgilenebilirsiniz:
http://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#Stores
Güven deposu, genellikle X.509 kimlik doğrulaması gibi doğrulama amacıyla yalnızca ortak anahtarları depolamak için kullanılır. Yönetilebilirlik amacıyla, yöneticilerin veya geliştiricilerin ikisini tek bir mağazada sınırlamaları oldukça yaygındır.
Java'da bir anahtar deposu ve bir güven deposu arasındaki fark nedir?
Java Güvenli Yuva Uzantısı (JSSE) Başvuru Kılavuzu'ndaki Java belgelerinin açıklaması aşağıdadır . Sana başkalarının söylediklerinden farklı bir şey söylediğini sanmıyorum. Ancak resmi referans sağlar.
deposu / truststore
Bir anahtar deposu, anahtar materyalin bir veritabanıdır. Anahtar malzeme, kimlik doğrulama ve veri bütünlüğü de dahil olmak üzere çeşitli amaçlar için kullanılır. PKCS12 ve Oracle'ın JKS'i gibi çeşitli anahtar deposu türleri mevcuttur.
Genel olarak, anahtar deposu bilgileri iki kategoriye ayrılabilir: anahtar girişleri ve güvenilir sertifika girişleri. Anahtar girişi, bir kuruluşun kimliğinden ve özel anahtarından oluşur ve çeşitli kriptografik amaçlar için kullanılabilir. Buna karşılık, güvenilir bir sertifika girişi, varlığın kimliğine ek olarak yalnızca ortak bir anahtar içerir. Bu nedenle, javax.net.ssl.KeyManager gibi özel bir anahtarın gerekli olduğu durumlarda güvenilir bir sertifika girişi kullanılamaz. JKS'nin JDK uygulamasında, bir anahtar deposu hem anahtar girişlerini hem de güvenilir sertifika girişlerini içerebilir.
Bir truststore, neye güveneceğiniz konusunda karar verirken kullanılan bir anahtar deposudur. Zaten güvendiğiniz bir varlıktan veri alırsanız ve varlığın iddia ettiği varlık olduğunu doğrularsanız, verilerin gerçekten o varlıktan geldiğini varsayabilirsiniz.
Yalnızca kullanıcı o varlığa güvenirse, bir güven mağazasına bir giriş eklenmelidir. Bir anahtar çifti oluşturarak veya bir sertifikayı içe aktararak, kullanıcı bu girdiye güven verir. Güven mağazasındaki herhangi bir giriş güvenilir bir giriş olarak kabul edilir.
İki farklı anahtar deposu dosyası olması yararlı olabilir: biri yalnızca anahtar girişlerinizi içerir, diğeri ise CA sertifikaları dahil olmak üzere güvenilir sertifika girişlerinizi içerir. Birincisi özel bilgiler içerirken ikincisi içermez. Tek bir anahtar deposu dosyası yerine iki dosya kullanmak, kendi sertifikalarınız (ve karşılık gelen özel anahtarlar) ile diğerlerinin sertifikaları arasındaki mantıksal ayrımın daha net bir şekilde ayrılmasını sağlar. Özel anahtarlarınız için daha fazla koruma sağlamak üzere, bunları sınırlı erişime sahip bir anahtar deposunda saklayın ve gerekirse güvenilir sertifikaları daha halka açık bir anahtar deposunda sağlayın.
TrustStore ve keyStore arasındaki ilk ve en büyük fark, trustStore'un TrustManager tarafından uzak bağlantıya güvenilip güvenilmeyeceğini belirlemek için kullanılmasıdır, keyStore, SSL tokalaşması sırasında kimlik doğrulama için hangi kimlik doğrulama bilgilerinin uzak ana bilgisayara gönderilmesi gerektiğine karar vermek için KeyManager'dan kullanılır.
Diğer bir fark, keyStore'un teorik olarak yalnızca SSL bağlantısında bir Sunucu çalıştırıyorsanız veya sunucu tarafında ve diğer yandan trustStore'un ortak anahtarı veya CA (Sertifika Yetkilileri) uzak tarafa veya SSL bağlantısına güven.
Aslında böylece bu dosyayı yönetmek için bir araç (keytool) aynı olduğu göz önüne alındığında, aynı dosyada hem özel hem kamu anahtarları saklayabileceğiniz sen olabilir her iki amaç için tek bir dosya kullanmak, ancak muhtemelen olmamalı .
En azından Mac OSX'imde varsayılan keyStore ${user.home}/.keystore
ve varsayılan trustStore /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security/cacerts
.
Bunları geçersiz kılmak istiyorsanız, JVM parametrelerini
-Djavax.net.ssl.keyStore /path/to/keyStore
veya
-Djavax.net.ssl.trustStore /path/to/trustStore
. Ayrıca söz konusu anahtar deposu parolası ayarlamak gerekebilir
java.security.UnrecoverableKeyException: Password must not be
null
parametresini kullanarak,
-Djavax.net.ssl.trustStorePassword=password
ya da-Djavax.net.ssl.trustStorePassword=password
Ana kaynak:
http://javarevisited.blogspot.co.uk/2012/09/difference-between-truststore-vs-keyStore-Java-SSL.html