| Виды программирования, программирование, языки программирования, книги программирование | На сайте представлена информация про программирование в Интернете и работу |
|
XP Look in Java, работа с visual editor JOptionPane, Не показывается собака :) Как Вы относитесь к курящим девушкам? Append в Java., Добавление информации в файл. Прежде чем задать вопрос, прочтите это! Документация и книги по Java, Давайте соберём ссылки Прежде чем задать вопрос, прочтите это! FAQ по JAVA, Вопросы и ответы нужен пример проверки аунтификации, при помощи java.net.Authenticator;java.n Работа с MulticastSocket Поток и считывание данных из сети, как остановить такой поток POP3 + SSL, нужен пример Как читать фаил с сервера передача данных методом post, как сделать! FindBugs in JavaCode, tools Серверная часть сетевого приложения mailto:, URLConnection-JavaExamples in a Nutshell соединение с удаленным сервером через ssh тунель SocketOutputStream.write, зацикливание в этой функции java.net.URL неправильно понимает путь к файлу, проблема с двоеточием (под windows) JSP ест память, фантастика Как изменить атрибуты файла?, нужно установить +x для скрипта на Perl net help, need your help копируем файлы в папку Как сохранить картинку Рандомное число Клиент-сервер Проблема при парсинге сайта? Как сделать SSL-соединение использую сокеты, маленький howto escape-последовательности Работа с сокетами FTPClient???? jakarta HttpClient юзал кто?, Опять проксик... Вызов удаленных методов, RMI:Как это делается Как узнать не занятый порт? прослушиваем порт 80. возможно? нужен специалист по Java Как записать информацию со страницы в файл? как послать файл в сокет, желательно, пример :) удалённая установка сертификатов на клиент, имея админские права вызов jsp, как вызвать jsp из java-ы Ватягивания текста с сайта? Доступ к защищённой Web-странице (SSL) Cчитывание информации с ftp сервера Отсутствие timeout в SocketClient.connect() Снова Прокси сервер, автоматическое обнаружение Авторизация через прокси jdk vs. third party library, сравнение библиотек SendMail, помогите начинаюшему с сетью.. Proxy, Как работать ч-з прокси? Как Вы относитесь к курящим девушкам? Прежде чем задать вопрос, прочтите это! Документация и книги по Java, Давайте соберём ссылки исчезает сокет UDP в Java, Как это работает...? Проблема с получением значений от формы Считать файл из ftp Работа с потоковым-видео в JAVA, вопрос про потоковое-видео в созданном файле изменить тип файла по умолчанию dos-ностальгия, GUI под консолью Кофе с печеньем, Cookie на Java клиенте FTPClient из commons-net-1.2.2, проблеммы с русскими буквами Swing приложение, работающее с сетью, проблема с потоками FTP, превышен интервал ожидания Написание браузера. http-proxy client Качалка на java Письмо с аттачем TCP Socket, timeout сокеты, не работает отправка/принятие параметров |
Платные хостинги Раскрутка сайта Книги по программированию Как сделать SSL-соединение использую сокеты, маленький howto
- Здравствуйте. Вот захотелось написать Как сделать SSL соединение на Java с использованием сокетов.Процесс создания соединения через SSL включает несколько этапов:создание объекта для хранилища ключей;создание менежеров ключей и доверий;создание контекста SSL;создание сокетов (серверного и клиентского).В приложении описано как создать ключи и хранилище ключей.1. Создание объекта для хранилища ключей.Код //параметры для загрузки хранилища ключей String KSType="JKS", KSProvider="SUN", KSFileName="keystore.ks", KSPassword="keystorepassword"; KeyStore ks=KeyStore.getInstance(KSType,KSProvider); ks.load(new BufferedInputStream(new FileInputStream(KSFileName)), KSPassword.toCharArray());highlightSyntax('javamZDZhN','java');Итак, для привязки к какому-либо хранилищу ключей используются объекты класса KeyStore. Получить объект этого класса можно с помощью одного из трех статических методов getInstance(...). Первый параметр - строка - тип хранилища ключей. Второй параметр - либо объект класса Provider, либо строка - провайдер для указанного типа хранилища данных. После этого требуется загрузить хранилище данных, для этого используется метод load(...). Первый параметр - входной поток типа InputStream откуда производится загрузка (в нашем случае хранилище ключей - это файл), второй - пароль хранилища ключей.2. Создание менежеров ключей и доверий.Код //параметры для создания менеджеров String KeyPassword="keypassword", KMFAlgorithm="SunX509", KMFProvider="SunJSSE", TMFAlgorithm="SunX509", TMFProvider="SunJSSE"; KeyManagerFactory kmf=KeyManagerFactory.getInstance(KMFAlgorithm,KMFProvider); kmf.init(ks,KeyPassword.toCharArray()); TrustManagerFactory tmf=TrustManagerFactory.getInstance(TMFAlgorithm,TMFProvider); tmf.init(ks);highlightSyntax('javaFjYTgy','java');Для создания менеджеров потребуются: алгоритмы запросов к хранилищу данных и провайдеры для них. Оба менеджера требуется инициализировать. Менеджеру доверий нужно указать хранилище ключей, а менеджеру ключей - хранилище и пароль ключа, который будет использоваться для соединения.3. Создание контекста SSL.Код //параметры для создания контекста String SSLCProtocol="TLSv1", String SSLCProvider="SunJSSE"; SSLContext sslc=SSLContext.getInstance(SSLCProtocol,SSLCProvider); sslc.init(kmf.getKeyManagers(),tmf.getTrustManagers(),null);highlightSyntax('javaMWJkMz','java');Как и менеджеры объект контекста SSL требует создания и последующей инициализации. При создании указываются протокол передачи данных и провайдер для указанного протокола. При инициализации указываются два массива: один для ключей, второй для доверий.4. Создание сокетов (серверного и клиентского).Теперь мы можем создать серверный и клиентский сокеты, которые можно будет использовать как обычные серверный и клиентский сокеты.Создание серверного сокета:Код //параметры для создания серверного сокета (всего один - порт, который будем слушать) int port=4911; try { SSLServerSocketFactory ssf=sslc.getServerSocketFactory(); SSLServerSocket ss=(SSLServerSocket)ssf.createServerSocket(serverport); ss.setNeedClientAuth(true);//требуем аутентификацию подключающихся клиентов }catch(Exception e){ e.printStackTrace(); }highlightSyntax('javaTg3MDM','java');Создание клиентского соката:Код //параметры для создания клиентского сокета String host="localhost"; int port=4911; try { SSLSocketFactory sf=sslc.getSocketFactory(); SSLSocket s=(SSLSocket)sf.createSocket(host,port); s.setWantClientAuth(true);//клиент хочет пройти процедуру аутентификации }catch(Exception e){ e.printStackTrace(); }highlightSyntax('javaDQ0ZDV','java');Все. Теперь приложение:Работа с ключами производится с помощью утилиты keytool, входящей в состав SDK.Обычно выполняется три шага:генерирование ключа;экспорт ключа в сертификат;импорт ключа из сертификата в хранилище ключей для клиента.Генерирование ключа.Код keytool -genkey -alias [1] -keyalg [2] -keysize [3] -validity [4] -keypass [5] -keystore [6] -storepass [7]highlightSyntax('javaGQ2MjB','java');1 - алиас для ключа,2 - алгоритм шифрования (типа rsa),3 - размер ключа (от 512 до 2048),4 - количество дней, пока ключ действителен,5 - пароль ключа,6 - имя файла - хранилища ключей,7 - пароль хранилища.Экспорт ключа в сертификат.Код keytool -export -alias [1] -file [2] -keystore [3] -storepass [4]highlightSyntax('javaYWZhYT','java');1 - алиас экспортируемого ключа,2 - файл сертификата (*.cer),3 - файл хранилища ключей,4 - пароль хранилища ключей.Импорт ключа из сертификата в хранилище ключей для клиента.Код keytool -import -alias [1] -file [2] -keypass [3] -keystore [4] -storepass [5]highlightSyntax('javaxNGQ0O','java');1 - алиас под которым будет храниться импортируемый ключ,2 - файл сертификата (*.cer),3 - пароль ключа,4 - файл хранилища ключей,5 - пароль хранилища ключей.//----------------------------------------------------------------------P.S.: Ногами больно не пинайте. Писать я толком не умею. Может что-то объяснить сильнее надо было, напишите, подправлю.Всем спасибо за внимание. - Статья понравилась. Было бы просто супер, если бы был пример реально работающего приложения. Чтобы можно было у себя на машинке запустить и передать строку от клиента к серверу. Но все равно СПАСИБО - Пример сделаю. Но как его разместить? У меня сваво сайта нету. - Прямо здесь размещай текст. Я не думаю, что он просто огромен. Или высылай мне. |