Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
5 / 5 / 5
Регистрация: 16.06.2013
Сообщений: 40

SslStream & Java-server

14.09.2013, 05:42. Показов 1838. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть сервер и клиент на Java. Хочу переделать клиент на C#. Связь через сокет и SSL.
Сервер Java, насколько я могу видеть, не использует сертификат,а каким-то образом работает на прямую.
Все, что видел, связанного с C# использует X.509 сертификат...
В растерянности - как подружить их между собой.
Сервер
Java
1
2
3
4
5
6
7
8
9
10
11
12
SSLServerSocketFactory ssf = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
SSLServerSocket serverSocket = (SSLServerSocket) ssf.createServerSocket(this.serverPort);
String[] suites = serverSocket.getSupportedCipherSuites();
serverSocket.setEnabledCipherSuites(suites);
SSLSocket clientSocket = null;
clientSocket = (SSLSocket) serverSocket.accept();
clientSocket.startHandshake();
InputStream sin = clientSocket.getInputStream();
OutputStream sout = clientSocket.getOutputStream();
DataInputStream in = new DataInputStream(sin);
DataOutputStream out = new DataOutputStream(sout);
...

Клиент
Java
1
2
3
4
5
6
7
8
9
10
11
12
InetAddress e = InetAddress.getByName(this.socketip);
SSLSocketFactory sf = (SSLSocketFactory) SSLSocketFactory.getDefault();
SSLSocket socket = (SSLSocket) sf.createSocket(e, socketport);
String[] suites = socket.getSupportedCipherSuites();
socket.setEnabledCipherSuites(suites);
socket.startHandshake();
socket.setSoTimeout(10000);
InputStream sin = socket.getInputStream();
OutputStream sout = socket.getOutputStream();
DataInputStream in = new DataInputStream(sin);
DataOutputStream out = new DataOutputStream(sout);
...


На попытку просто подключится
примерно так
C#
1
2
3
4
5
string ip = ...
int port = ...
TcpClient sslClient = new TcpClient(ip, port);
SslStream sslStream = new SslStream(sslClient.GetStream());
sslStream.AuthenticateAsClient(ip);

Получаю ошибку:
Ошибка

System.Security.Authentication.Authentic ationException: Ошибка вызова SSPI, см. внутреннее исключение.
---> System.ComponentModel.Win32Exception: Получено непредвиденное сообщение или оно имеет неправильный формат
--- Конец трассировки внутреннего стека исключений ---
в System.Net.Security.SslState.StartSendAu thResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, Exception exception)
в System.Net.Security.SslState.CheckComple tionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
в System.Net.Security.SslState.StartSendBl ob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
в System.Net.Security.SslState.ProcessRece ivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
в System.Net.Security.SslState.StartReadFr ame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
в System.Net.Security.SslState.StartReceiv eBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)
в System.Net.Security.SslState.CheckComple tionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)
в System.Net.Security.SslState.StartSendBl ob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
в System.Net.Security.SslState.ForceAuthen tication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
в System.Net.Security.SslState.ProcessAuth entication(LazyAsyncResult lazyResult)
в System.Net.Security.SslStream.Authentica teAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation)
в System.Net.Security.SslStream.Authentica teAsClient(String targetHost)
в SSLConnect.Program.Main(String[] args) в C:\Users\SC\Documents\Visual Studio 2012\Projects\SSLConnect\SSLConnect\Prog ram.cs:строка 20 (там где AuthenticateAsClient)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.09.2013, 05:42
Ответы с готовыми решениями:

SslStream, как отключить кэширование сеанса?
В документации сказано: Как отключить кэширование? В данный момент есть проблемы с повторным подключением к серверу (т.е....

Получение имени HTTPS хоста из SslStream
Для организации SSL соединений в C# есть класс SslStream. Работает предельно просто: Тут мы создаём ssl стрим: SslStream...

Валидатор указывает на ошибочную ссылку, вместо & нужно & amp
Использую браузер FF 8.0, на нем установлен HTML Vallidator. Так вот этот валидатор ругается типо я неправильно указываю ссылку, я пишу...

1
5 / 5 / 5
Регистрация: 16.06.2013
Сообщений: 40
15.09.2013, 06:51  [ТС]
Как временное решение нашел такой способ -
1.все необходимые мне функции на Java выделяю в отдельный jar
2.пакетом IKVM преобразую jar в .Net совместимый dll
3.подключаю как ссылку все тот же IKVM и свежесозданный dll, к членам которого обращаюсь в коде.

Как плюс такого решения - почти полная совместимость с Java, возможность писать код на Java прямо в проекте
Минус - от 4 до 40 метров дополнительных библиотек того самого IKVM.

более легкий аналог jni4net не обладает ssl пакетом. печально.
продолжаю поиск более элегантного решения
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.09.2013, 06:51
Помогаю со студенческими работами здесь

C# & SQL Server
Поделитесь, пожалуйста, полезной информацией: что нужно для работы с C# и SQL Server с нуля? Как создать, заполнить таблицу и т.д... короче...

VS & MS SQL Server connection
Пытаюсь подсоединиться к MS SQL Server Management Studio из Visual Studio Выполняю такое действие: ... connectionString =...

Visual Studio & SQL Server
Создал интерфэйс(windows forms C#) на основе базы данных созданной в SQL Server... Как сделать чтобы приложение запускалось на другом ПК,...

query='SELECT * FROM resume WHERE ' & ''' & RecSet('place')& ''' & '=' & '''& s_loc &''' & - что не так?
упростил для краткости запрос. в чем ошибка? RecSet - это коннекшн. query='SELECT * FROM resume WHERE ' & ''' &...

error '80020009' Îøèáêà. /lalala/profile.asp, line 28
При простейшем и сто раз работавшем скрипте, вылетает ошибка! след. содержания error '80020009' ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru