Muszę skonfigurować javax.net.ssl.SSLContext
do użytku w aplikacji klienta Jersey. Wszystko, co chcę zrobić, to kontekst do zaakceptowania niestandardowego certyfikatu root. Czy rzeczywiście jest prawdą, że nie ma sposobu generowania pliku kluczy i importowania certyfikatu CA?Stosowanie formatu SSLContext przy użyciu tylko certyfikatu urzędu certyfikacji i brak magazynu kluczy
Odpowiedz
Czy rzeczywiście jest prawdą, że nie ma sposobu na wygenerowanie pliku magazynu kluczy i zaimportowanie certyfikatu CA?
Istnieje sposób to zrobić bez pliku kluczy, ale ponieważ trzeba by załadować certyfikat CA chcesz zaufać taki czy inny sposób, będziesz musiał załadować pliku lub zasobu jakoś.
(Można również z pewnością wdrożyć własną TrustManager
, która wykonuje wszystkie połączenia, aby korzystać z API Ścieżki Certyfikacji, bez korzystania w ogóle z interfejsu API KeyStore
, ale to tylko zwiększyłoby złożoność kodu, a nie zmniejszyło go. również trzeba zrozumieć, aby wykonać to poprawnie.)
Jeśli naprawdę nie chcesz pliku magazynu kluczy, możesz użyć interfejsu API KeyStore
w pamięci i załadować certyfikat bezpośrednio.
Coś wzdłuż tych linii powinny działać (nie testowane):
InputStream is = new FileInputStream("cacert.crt");
// You could get a resource as a stream instead.
CertificateFactory cf = CertificateFactory.getInstance("X.509");
X509Certificate caCert = (X509Certificate)cf.generateCertificate(is);
TrustManagerFactory tmf = TrustManagerFactory
.getInstance(TrustManagerFactory.getDefaultAlgorithm());
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(null); // You don't need the KeyStore instance to come from a file.
ks.setCertificateEntry("caCert", caCert);
tmf.init(ks);
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, tmf.getTrustManagers(), null);
(. Pamiętaj, aby zamknąć wszystko i obsługi wyjątków)
czy ładowanie certyfikatowi tędy lub ładowania certyfikatu w podobny KeyStore
wystąpienie z pliku magazynu kluczy jest bardziej wygodne, zależy od Ciebie.
- 1. Jak dodać niestandardowy certyfikat główny urzędu certyfikacji do magazynu urzędu certyfikacji używanego przez Python w systemie Windows?
- 2. Programowe dodawanie urzędu certyfikacji przy zachowaniu certyfikatów SSL systemu Android
- 3. Dodawanie certyfikatu do magazynu kluczy przy użyciu kodu Java
- 4. Błąd podczas importowania certyfikatu publicznego do magazynu kluczy
- 5. Tomcat HTTPS certyfikat magazynu kluczy
- 6. Jaka jest różnica między podstawowymi ograniczeniami x599 V3 i kluczem do utworzenia certyfikatu urzędu certyfikacji?
- 7. Jak utworzyć certyfikat urzędu certyfikacji za pomocą makecert?
- 8. Stosowanie% formatu liczb do wartości komórek przy użyciu OpenXML
- 9. Jak zautomatyzować generowanie magazynu kluczy za pomocą narzędzia magazynu kluczy Java? brak interakcji użytkownika
- 10. Instalacja VSTO Urzędu dodatek przy użyciu WiX
- 11. Nieprawidłowy format magazynu kluczy
- 12. Brak domyślnego formatu dla MyClass dostępnego przy użyciu Json.format
- 13. Błąd "Zła wersja magazynu kluczy". Jak mogę utworzyć certyfikat magazynu kluczy version = 1?
- 14. programowo zaimportuj certyfikat .cer do magazynu kluczy
- 15. Połączenie Java SSL, programowe dodawanie certyfikatu serwera do pliku kluczy
- 16. Jak dodać łańcuch certyfikatów do magazynu kluczy?
- 17. Udostępnianie magazynu kluczy do klienta usługi WWW
- 18. Zgubione hasło do magazynu kluczy
- 19. Jak działają certyfikaty cyfrowe, gdy są wykorzystywane do zabezpieczania witryn internetowych (przy użyciu protokołu SSL)?
- 20. Android - konwersja łańcucha certyfikatów pkcs12 na obiekt certyfikatu x509 dla magazynu kluczy bks
- 21. Uzyskaj klucz prywatny z magazynu kluczy MacOS X przy użyciu Javy
- 22. Usuwanie urzędu certyfikacji relacji z dostawcami oprogramowania Apple Worldwide od kluczyka systemowego
- 23. Rozwiązanie magazynu danych JavaScript przy użyciu PhoneGap
- 24. Która domyślna lokalizacja magazynu kluczy/magazynu zaufanych aplikacji Java?
- 25. Używanie certyfikatu klienta spoza magazynu certyfikatów
- 26. "Brak odwzorowanego pola" przy użyciu częściowych zapytań i kluczy złożonych w Doctrine2
- 27. sposób sprawdzania poprawności certyfikatu klienta przy użyciu zaufanego certyfikatu CA certyfikatu internediate?
- 28. Udostępnianie mojego magazynu kluczy Android z klientem
- 29. Znajdź datę wygaśnięcia magazynu kluczy Androida
- 30. Generowanie kluczy ssh przy użyciu dockerfile
Każdemu, kto przejdzie tę odpowiedź, należy użyć importu 'javax.net.ssl.TrustManagerFactory' oraz NOT' com.sun.net.ssl.TrustManagerFactory'; później jest teraz przestarzałe. Twoje zdrowie. –
@MattClark Ogólnie, nie powinieneś importować żadnych pakietów 'com.sun. *' Lub 'sun. *' Bezpośrednio. – Bruno
W moim przypadku certyfikat jest dodawany przez użytkownika (poprzez ustawienia) i pojawia się jako ciąg Base64: 'java.io.InputStream is = new java.io.ByteArrayInputStream (java.util.Base64.getDecoder(). Decode (cert)); 'działa jak urok. Dzięki! – mvreijn