В настоящее время у меня есть сервер Coap, который обрабатывает запросы от устройств IOT. Он выполняет рукопожатие, проверяет сертификат, личность.... перед обработкой каждого запроса.
Теперь, чтобы оптимизировать батарею для устройства, мне нужен еще один незащищенный сервер Coap, который поддержка незащищенных запросов, проверка наличия обновлений на сервере.
Если они есть, устройство обратится к исходному серверу Coap для получения изменений, в противном случае оно не будет совершать никаких вызовов.
Но теперь я зациклен на том, как отключить рукопожатие для сервера Coap.
Даже если я сделаю это на сервере:
setDefaultHandshakeMode(DtlsEndpointContext.HANDSHAKE_MODE_NONE)
Он по-прежнему показывает, что рукопожатие произошло:
handshake completed dtls-con: CID=A7FA63DBD32D, 127.0.0.1:64164, session established AA322905DB17, is alive
Это код, который установил сервер Coap:
CoapServer server = new CoapServer();
int port = config.getInt(NetworkConfig.Keys.COAP_SECURE_PORT);
for (InetAddress addr : NetworkInterfacesUtil.getNetworkInterfaces()) {
// only binds to IPv4 addresses and localhost
if (addr instanceof Inet4Address || addr.isLoopbackAddress()) {
log.debug("Creating DTLS connector");
Connector dtlsConnector = createDtlsConnector(addr, port);
log.debug("DTLS connector created");
server.addEndpoint(new CoapEndpoint.Builder()
.setNetworkConfig(config)
.setConnector(dtlsConnector)
.build());
}
}
и
private DTLSConnector createDtlsConnector(InetAddress addr, int port) {
try (InputStream ksStream = properties.getSsl().getKeyStore().getInputStream();
InputStream tsStream = properties.getSsl().getTrustStore().getInputStream()) {
KeyStore keyStore = KeyStore.getInstance(properties.getSsl().getKeyStoreType());
keyStore.load(ksStream, properties.getSsl().getKeyStorePassword().toCharArray());
KeyStore trustStore = KeyStore.getInstance(properties.getSsl().getTrustStoreType());
trustStore.load(tsStream, properties.getSsl().getTrustStorePassword().toCharArray());
// Load certificates from the trust storage
log.debug("Load certificates from birth trust list");
loadTrustedCertificates(birthTrustList, trustStore,
properties.getSsl().getTrustBirthCaAlias());
log.debug("Load certificates from trust list");
loadTrustedCertificates(trustList, trustStore,
properties.getSsl().getTrustPlateCaAlias());
trustList.addAll(birthTrustList);
log.debug("Setting binding address");
InetSocketAddress bindToAddress = new InetSocketAddress(addr, port);
DtlsConnectorConfig.Builder builder = new DtlsConnectorConfig.Builder();
builder.setAddress(bindToAddress);
log.debug("Setting certificate identity provider");
builder.setCertificateIdentityProvider(new SingleCertificateProvider((PrivateKey) keyStore.getKey(
properties.getSsl().getKeyServerCertAlias(),
properties.getSsl().getKeyStorePassword().toCharArray()),
keyStore.getCertificateChain(properties.getSsl().getKeyServerCertAlias()),
(List) null));
if (staticNewAdvancedCertificateVerifier == null) {
staticNewAdvancedCertificateVerifier = (StaticNewAdvancedCertificateVerifier) StaticNewAdvancedCertificateVerifier
.builder()
.setTrustedCertificates(trustList.toArray(new Certificate[0])).build();
}
builder.setAdvancedCertificateVerifier(staticNewAdvancedCertificateVerifier);
builder.setClientAuthenticationRequired(false);
builder.setRetransmissionTimeout(properties.getDtlsRetransmissionTimeout());
builder.setMaxTransmissionUnit(properties.getMtu());
// builder.setDefaultHandshakeMode(DtlsEndpointContext.HANDSHAKE_MODE_NONE); This line didn't make any different
log.debug("Returning DTLSConnector");
return new DTLSConnector(builder.build());
} catch (GeneralSecurityException | IOException e) {
log.error("Could not load the keystore", e);
throw new CoapException(CoapError.COAP_SERVER_CONFIGURATION_ERROR, "Unable to load the keystore");
}
}
'''
Подробнее здесь: https://stackoverflow.com/questions/790 ... ent-server
Отключите рукопожатие для клиента/сервера Java Californium Coap. ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1727805090
Anonymous
В настоящее время у меня есть сервер Coap, который обрабатывает запросы от устройств IOT. Он выполняет рукопожатие, проверяет сертификат, личность.... перед обработкой каждого запроса.
Теперь, чтобы оптимизировать батарею для устройства, мне нужен еще один незащищенный сервер Coap, который поддержка незащищенных запросов, проверка наличия обновлений на сервере.
Если они есть, устройство обратится к исходному серверу Coap для получения изменений, в противном случае оно не будет совершать никаких вызовов.
Но теперь я зациклен на том, как отключить рукопожатие для сервера Coap.
Даже если я сделаю это на сервере:
setDefaultHandshakeMode(DtlsEndpointContext.HANDSHAKE_MODE_NONE)
Он по-прежнему показывает, что рукопожатие произошло:
handshake completed dtls-con: CID=A7FA63DBD32D, 127.0.0.1:64164, session established AA322905DB17, is alive
Это код, который установил сервер Coap:
CoapServer server = new CoapServer();
int port = config.getInt(NetworkConfig.Keys.COAP_SECURE_PORT);
for (InetAddress addr : NetworkInterfacesUtil.getNetworkInterfaces()) {
// only binds to IPv4 addresses and localhost
if (addr instanceof Inet4Address || addr.isLoopbackAddress()) {
log.debug("Creating DTLS connector");
Connector dtlsConnector = createDtlsConnector(addr, port);
log.debug("DTLS connector created");
server.addEndpoint(new CoapEndpoint.Builder()
.setNetworkConfig(config)
.setConnector(dtlsConnector)
.build());
}
}
и
private DTLSConnector createDtlsConnector(InetAddress addr, int port) {
try (InputStream ksStream = properties.getSsl().getKeyStore().getInputStream();
InputStream tsStream = properties.getSsl().getTrustStore().getInputStream()) {
KeyStore keyStore = KeyStore.getInstance(properties.getSsl().getKeyStoreType());
keyStore.load(ksStream, properties.getSsl().getKeyStorePassword().toCharArray());
KeyStore trustStore = KeyStore.getInstance(properties.getSsl().getTrustStoreType());
trustStore.load(tsStream, properties.getSsl().getTrustStorePassword().toCharArray());
// Load certificates from the trust storage
log.debug("Load certificates from birth trust list");
loadTrustedCertificates(birthTrustList, trustStore,
properties.getSsl().getTrustBirthCaAlias());
log.debug("Load certificates from trust list");
loadTrustedCertificates(trustList, trustStore,
properties.getSsl().getTrustPlateCaAlias());
trustList.addAll(birthTrustList);
log.debug("Setting binding address");
InetSocketAddress bindToAddress = new InetSocketAddress(addr, port);
DtlsConnectorConfig.Builder builder = new DtlsConnectorConfig.Builder();
builder.setAddress(bindToAddress);
log.debug("Setting certificate identity provider");
builder.setCertificateIdentityProvider(new SingleCertificateProvider((PrivateKey) keyStore.getKey(
properties.getSsl().getKeyServerCertAlias(),
properties.getSsl().getKeyStorePassword().toCharArray()),
keyStore.getCertificateChain(properties.getSsl().getKeyServerCertAlias()),
(List) null));
if (staticNewAdvancedCertificateVerifier == null) {
staticNewAdvancedCertificateVerifier = (StaticNewAdvancedCertificateVerifier) StaticNewAdvancedCertificateVerifier
.builder()
.setTrustedCertificates(trustList.toArray(new Certificate[0])).build();
}
builder.setAdvancedCertificateVerifier(staticNewAdvancedCertificateVerifier);
builder.setClientAuthenticationRequired(false);
builder.setRetransmissionTimeout(properties.getDtlsRetransmissionTimeout());
builder.setMaxTransmissionUnit(properties.getMtu());
// builder.setDefaultHandshakeMode(DtlsEndpointContext.HANDSHAKE_MODE_NONE); This line didn't make any different
log.debug("Returning DTLSConnector");
return new DTLSConnector(builder.build());
} catch (GeneralSecurityException | IOException e) {
log.error("Could not load the keystore", e);
throw new CoapException(CoapError.COAP_SERVER_CONFIGURATION_ERROR, "Unable to load the keystore");
}
}
'''
Подробнее здесь: [url]https://stackoverflow.com/questions/79044213/disable-the-handshake-for-java-californium-coap-client-server[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия