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)
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 klucza