öncül truststore: Ben bir sertifika var ve doğrulamak istediğiniz sistem 'güvenir' (Java/İşletim Sistemi tarafından güvenilen bir kök CA tarafından imzalanan) bu sertifika BenJava - sistemle doğrulayarak sertifika
Bunun nasıl gerçekleştirileceğine dair bazı değişken çözümler buldum.
Seçenek 1:
SSL Kullan sınıfları güven türetmek.
TrustManagerFactory tmfactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmfactory.init((KeyStore) null);
for (TrustManager trustManager : tmfactory.getTrustManagers()) {
if (trustManager instanceof X509TrustManager) {
try {
((X509TrustManager) trustManager).checkClientTrusted(new X509Certificate[] {new JcaX509CertificateConverter().getCertificate(holder)}, "RSA");
System.out.println("This certificate is trusted by a Root CA");
} catch (CertificateException e) {
e.printStackTrace();
}
}
}
bu yaklaşım alternatifler arıyoruz (geçerli projeye göre gerekli değildir) SSL sınıfları dayanır yana
.Seçenek 2: Java'nın cacerts
dosyasını bir anahtar deposuna yükleyin ve her bir 'en güvenilir' sertifikayı sertifikam için eşitlik açısından kontrol edin.
String filename = System.getProperty("java.home") + "/lib/security/cacerts".replace('/', File.separatorChar);
FileInputStream is = new FileInputStream(filename);
KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
String password = "changeit";
keystore.load(is, password.toCharArray());
// This class retrieves the most-trusted CAs from the keystore
PKIXParameters params = new PKIXParameters(keystore);
// Get the set of trust anchors, which contain the most-trusted CA certificates
Set<X509Certificate> rootCertificates = params.getTrustAnchors().parallelStream().map(TrustAnchor::getTrustedCert).collect(Collectors.toSet());
return rootCertificates.contains(holderX509);
Bu yaklaşımdaki sorun, JKS kodlu dosyanın bütünlüğünü doğrulamak için bir parola gerektirmesidir. SSL görünüşte görünmüyorsa (veya daha çok SSL'ye sıkı sıkıya bağlı olan System.getProperty("javax.net.ssl.trustStorePassword")
'u kullanıyor.)
Soru: Bir dosyadan ve saf SSL'den sertifikaları manuel olarak yüklemek arasında bir çözüm var mı? sadece birkaç çemberler üzerinden atlamak zorunda kalmadan bir sertifikanın sistem güvenini teyit edip bazı sınıf olmalıdır.
, muhtemelen başka bir alternatif bir üçüncü taraf kitaplığı indirme
Burada TrustManager'ı kullanmanın yanlış bir tarafı yoktur. Bunun için böyle. Avukatlığınızı aşın. – EJP