Próbuję połączyć Java Web API przez HTTPS; jednak wyjątek jest zgłaszany:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException
Wykonałem następujące kroki, których nauczyłem się z samouczków online keytool i certyfikatów SSL:
Skopiowałem adres URL HTTPS do przeglądarki, pobrałem certyfikaty SSL i zainstalowałem je w przeglądarce za pomocą Internet Explorera.
Wyeksportowałem certyfikaty do ścieżki na moim komputerze, certyfikaty zostały zapisane jako
.cer
Użyto opcji importu narzędzia keytool. Poniższe polecenie zostało wykonane bez żadnych błędów.
keytool -import -alias downloadedCertAlias -keystore C:\path\to\my\keystore\cacerts.file -file C:\path\of\exportedCert.cer
Zostałem poproszony o hasło w wierszu polecenia, które wprowadziłem, a następnie zostałem uwierzytelniony.
W
cmd
oknie wydrukowano dane certyfikatu i podpisy, a ja zostałem poproszony o pytanie:Zaufać temu certyfikatowi?
Odpowiedziałem tak.
Zostanie wyświetlony monit cmd
Certyfikat został dodany do magazynu kluczy
Jednak po tym komunikacie został wyświetlony kolejny wyjątek:
keytool error: java.io.FileNotFoundException: C:\Program files\...\cacerts <Access Denied>
Wreszcie, kiedy sprawdziłem magazyn kluczy, certyfikat SSL nie został dodany, a moja aplikacja daje ten sam wyjątek, który otrzymałem wcześniej podczas próby połączenia:
(javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException)
źródło
keytool
polecenie, które wykonałeś, i jest ono wyświetlane? niektóre z oczywistych problemów to literówka w-keystore
argumentacji oraz fakt, że narzędzie keytool nie mogło znaleźć magazynu kluczy do zaimportowania kluczaOdpowiedzi:
Może się to zdarzyć, jeśli nie używasz wiersza polecenia w trybie administratora. Jeśli używasz systemu Windows 7, możesz przejść do uruchomienia, wpisać cmd i nacisnąć Ctrl + Shift + Enter. Spowoduje to otwarcie wiersza polecenia w trybie administratora. Jeśli nie, możesz również przejść do Start -> wszystkie programy -> akcesoria -> kliknij prawym przyciskiem myszy wiersz polecenia i kliknij „Uruchom jako administrator”.
źródło
Miałem ten sam problem w systemie Windows i mogłem go rozwiązać, uruchamiając cmd.exe jako administrator (kliknij prawym przyciskiem myszy w menu Start, a następnie „Uruchom jako administrator).
źródło
Miałem ten sam problem podczas importowania certyfikatu do lokalnego magazynu kluczy. Za każdym razem, gdy wykonuję polecenie keytool, pojawia się następujący błąd.
Certyfikat został dodany do keystore keytool błąd: java.io.FileNotFoundException: C: \ Program Files \ Java \ jdk1.8.0_151 \ jre \ lib \ security (odmowa dostępu)
Poniższe rozwiązanie działa dla mnie.
1) upewnij się, że uruchamiasz wiersz polecenia w Rus jako tryb administratora
2) Zmień bieżący katalog na% JAVA_HOME% \ jre \ lib \ security
3), a następnie wydaj poniższe polecenie
keytool -import -alias "mycertificatedemo" -file "C: \ Users \ name \ Downloads \ abc.crt" -keystore cacerts
3) podaj hasło do zmiany
4) wpisz y
5) po pomyślnym dodaniu certyfikatu do magazynu kluczy zobaczysz następujący komunikat
Upewnij się, że podajesz " cacerts " tylko wartość parametru -keystore, ponieważ podałem pełną ścieżkę, np. "C **: \ Program Files \ Java \ jdk1.8.0_151 \ jre \ lib \ security **".
Mam nadzieję, że to zadziała
źródło
Sprawdź uprawnienia do zapisu w magazynie kluczy.
źródło
W przypadku użytkowników komputerów Mac upewnij się, że wykonałeś sudo, a gdy zostaniesz o to poproszony, podaj najpierw hasło administratora, a po nim hasło magazynu kluczy, które zwykle powinno być „changeit”, chyba że faktycznie je zmieniłeś.
źródło
Jeśli używasz Windows8:
command prompt
command prompt
i kliknijRun as administrator
. Następnie wykonaj polecenie keytool.źródło
Możesz przyznać sobie uprawnienia do rozwiązania tego problemu.
Kliknij prawym przyciskiem myszy cacerts> wybierz właściwości> wybierz zakładkę Securit> Zezwól na wszystkie uprawnienia do wszystkich nazw grup i użytkowników.
To zadziałało dla mnie.
źródło
Uruchomiłem nawet wiersz polecenia jako Administrator, ale nie zadziałał on z poniższym błędem.
Jeśli ścieżka do narzędzia keytool nie znajduje się w ścieżkach systemowych, będziesz musiał użyć pełnej ścieżki, aby użyć narzędzia keytool, którym jest
Tak więc polecenie powinno wyglądać następująco
to zadziałało dla mnie.
źródło
Otrzymałem również ten błąd, nawet gdy uruchomiłem cmd jako administrator.
Główna przyczyna: plik pochodzi z VCS (subversion, perforce itp.), A kiedy sprawdziłem właściwości tego pliku, jego atrybuty są tylko do odczytu .
Więc rozwiązaniem jest:
źródło
ROZWIĄZANY
źródło
Możesz przechowywać inny dysk lub ścieżkę (nie C) EX: D \
źródło