Отключите рукопожатие для клиента/сервера Java Californium Coap.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Отключите рукопожатие для клиента/сервера Java Californium Coap.

Сообщение 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");
}
}
'''


Подробнее здесь: https://stackoverflow.com/questions/790 ... ent-server
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»