Я создаю клиентскую программу Java, которая будет отправлять уязвимую информацию на сервер Tomcat. Таким образом, я должен использовать Соединение SSL, таким образом, информация будет зашифрована.
Я должен использовать самоподписанный недоверяемый сертификат, но проблемы наличия, устанавливающие связь от клиента Java.
Я имею успешно Tomcat 5.5 установки для использования SSL и протестировал его через Firefox, который отображает предупреждение самоподписанного сертификата.
Я следовал за установкой Tomcat 5.5 SSL, и они упомянули для создания keystore:
keytool -genkey -alias tomcat -keyalg RSA
Затем я сделал экспорт вышеупомянутого:
keytool -export -keystore .keystore -alias tomcat -file localhost.cer
Затем я сделал импорт вышеупомянутого сертификата в клиентскую машину:
keytool -import -alias tomcat -file localhost.cer -keystore "C:\Program Files"\Java\jdk1.6.0_17\jre\lib\security\cacerts"
Но когда рабочий клиент я добираюсь:
Исключение в потоке "основной" javax.net.ssl. SSLHandshakeException: sun.security.validator. ValidatorException: здание пути PKIX перестало работать: sun.security.provider.certpath. SunCertPathBuilderException: не мог найти действительную сертификацию соединяют каналом к требуемой цели
Это - клиентский код:
URL url = new URL("https://localhost:8443");
HttpsURLConnection conn = (HttpsURLConnection)url.openConnection();
conn.setSSLSocketFactory(sslsocketfactory);
InputStream inputstream = conn.getInputStream();
Теперь я только что начал играть с этими сертификатами сегодня, и я плохо знаком с keystores, поэтому быть терпеливым.
Кто-то может объяснить, как экспортировать и импортировать сертификат, созданный в Tomcat к клиентской машине?
Спасибо.
У Atlassian есть хорошие инструкции о том, как это исправить.
http://confluence.atlassian.com/display/JIRA/Connecting+to+SSL+services
Другой подход - установить менее жестокие валидаторы сертификатов, но это следует делать только в крайнем случае.
Используйте Apache HTTP Cleint jar и следуйте этому SSL Guide.
EasySSLProtocolSocketFactory можно использовать для создания SSL-соединений, позволяющих целевому серверу аутентифицироваться с помощью самоподписанного сертификата.