>

MQTT 주소에 가입해야하지만 예외가 발생합니다. 내가 아는 한 인증서를 업로드 할 필요가 없으며 서버를 사용하면됩니다. 어떻게해야합니까?

코드 :

public void connect() throws MqttException{
    MqttConnectOptions options = new MqttConnectOptions();
    options.setUserName("username");
    options.setPassword("123456".toCharArray());
    options.setAutomaticReconnect(true);
    client = new MqttClient("ssl://myadress:1883", MqttClient.generateClientId());
    client.setCallback(callback);
    System.out.println(topic);
    try {
        client.connect(options);
        client.subscribe(topic);
    } catch (Exception e){
        e.printStackTrace();
    }
}

예외 :

MqttException (0) - javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Eclipse Paho 라이브러리를 사용하고 있으며 라이브러리 문서에서 매우 깨달은 것을 찾지 못했습니다 (또는 이해하지 못한 경우).

  • 답변 # 1

    자신 만의 SSLSocketFactory 를 공급해야합니다  그것은 자신의 TrustManager 이  인증서를 신뢰한다는 것을 알고 있습니다.

    MqttClientOptions 에 SSLSocketFactory를 추가합니다   MqttClient.connect() 에 전달되는 객체  전화.

    자신의 CA 인증서를 사용하여 SSLSocketFactory를 설정하는 방법에 대한 많은 온라인 예제가 있습니다.

관련 자료

  • 이전 import - React-Native 앱에서 jsPDF를로드하는 중 오류가 발생했습니다
  • 다음 Y 케이블 또는 이중 전원 케이블을 사용하여 단일 USB 전원 하드 드라이브에 추가 전원을 공급할 수 있습니까?