Chcę zaimportować certyfikat z podpisem własnym do Javy, aby każda aplikacja Java, która spróbuje nawiązać połączenie SSL, będzie ufać temu certyfikatowi.
Do tej pory udało mi się go zaimportować
keytool -import -trustcacerts -noprompt -storepass changeit -alias $REMHOST -file $REMHOST.pem
keytool -import -trustcacerts -noprompt -keystore cacerts -storepass changeit -alias $REMHOST -file $REMHOST.pem
Mimo to, kiedy próbuję uciec HTTPSClient.class
, nadal otrzymuję:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: Tworzenie ścieżki PKIX nie powiodło się: sun.security.provider.certpath.SunCertPathBuilderException: nie można znaleźć prawidłowej ścieżki certyfikacji do żądanego celu
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider())
są zupełnie niepotrzebne w pierwszej części. Drugi nie przeprowadza żadnej weryfikacji certyfikatu.URLConnection
Zacznij od prostego . Czy na pewno zostały zmodyfikowanecacerts
wlib/security
swojej instalacji JRE? Czy próbowałeśtrustmanager
opcji debugowania ?Odpowiedzi:
W systemie Windows najłatwiej jest użyć portu programu .
System.out.println(System.getProperty("java.home"));
W systemie Linux:
Możesz pobrać certyfikat SSL z serwera internetowego, który już go używa:
Opcjonalnie zweryfikuj informacje o certyfikacie:
Zaimportuj certyfikat do magazynu kluczy Java Cacerts:
źródło
ps -ef | grep java
co powiedziało mi, że moja java działa z openjdk znajdującego się w / usr / lib / jvm / java-openjdk / bin / java. Ponadto, jeśli tak jest w przypadku aplikacji internetowej, pamiętaj o ponownym uruchomieniu. Dzięki za pomoc!!źródło
Skończyło się na napisaniu małego skryptu, który dodaje certyfikaty do magazynów kluczy, więc jest znacznie łatwiejszy w użyciu.
Możesz pobrać najnowszą wersję z https://github.com/ssbarnea/keytool-trust
`` ''
źródło
To zadziałało dla mnie. :)
źródło
Jeśli używasz certyfikatu podpisanego przez urząd certyfikacji, który domyślnie nie znajduje się w pliku Java cacerts, musisz wykonać następującą konfigurację połączeń HTTPS. Aby zaimportować certyfikaty do cacerts:
źródło
Proste polecenie „keytool” działa również w systemie Windows i / lub z Cygwin.
JEŚLI używasz Cygwin tutaj, jest zmodyfikowane polecenie, którego użyłem od dołu odpowiedzi „S.Botha”:
Wykonaj polecenie keytool z jego wnętrza, gdzie na końcu podajesz ścieżkę do nowego certyfikatu, na przykład:
Zauważ, ponieważ jeśli jest to pod Cygwin, podajesz ścieżkę do programu innego niż Cygwin, więc ścieżka jest podobna do DOS i jest ujęta w cudzysłowy.
źródło
Może zechcesz spróbować
Szczerze mówiąc, nie mam pojęcia, gdzie znajduje się twój certyfikat, jeśli po prostu napiszesz,
cacerts
po prostu podaj mu pełną ścieżkęźródło
zainstaluj certyfikat w java linux
/ opt / jdk (wersja) / bin / keytool -import -alias aliasname -file certificate.cer -keystore cacerts -storepass hasło
źródło
źródło