При попытке подключиться к веб-сайта по протоколу HTTPS, как следующим образом:В Java, как я могу подключиться к HTTPS сайтов, не заботясь о сертификатах безопасности
StringBuilder sb = new StringBuilder();
URL oracle = new URL("https://company.com");
URLConnection yc = oracle.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
sb.append(inputLine);
in.close();
return sb.toString();
Я получаю
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:387)
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292)
at sun.security.validator.Validator.validate(Validator.java:260)
at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324)
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229)
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1491)
Если я использую http://company.com
вместо он работает, но я хочу использовать https one, потому что это то, что они говорят, чтобы использовать, и я думаю, что небезопасный может быть удален.
Однако, когда я просмотрел похожие ответы об этом, он говорит о копировании сертификатов из моего браузера ectera. Мне нужно решение, которое будет работать для всех, кто запускает код на любом компьютере, не делая ничего особенного.
Я не беспокоюсь о преимуществах безопасности SSL для этого проекта. Я просто хочу иметь возможность подключиться к wenbsite.
«Не беспокоясь о« SSL », вы говорите, что вам неинтересно, что ваша программа обманута атаками« человек в середине », хотя рассматриваемый сайт четко * делает * заботиться о человеке- in-the-middle (если они говорят, что используют версию https и что http-версия может быть удалена в какой-то момент). –
Во-первых, если сайт не предлагает HTTP, вы все равно потерпите неудачу. Во-вторых, ваш запрос должен работать, поскольку среда выполнения имеет хранилище [хранилище доверия] по умолчанию (http://stackoverflow.com/questions/1398556/connect-to-https-siteserver). Возможно, сертификат на этом веб-сайте имеет проблемы и не может быть подтвержден. – Alfabravo
@ T.J.Crowder посмотрите, если они не предоставили версию https, вы бы не говорили мне, чтобы я не использовал сайт, нет ничего критического/чувствительного к данным. Поэтому вместо того, чтобы критиковать меня за то, что я не беспокоился о ssl в thsi cirumstance, как я могу решить проблему –