it-swarm.com.de

Nicht erkannte SSL-Nachricht, Klartextverbindung? Ausnahme

Ich habe ein Java-konformes Paket, um mit dem https-Server im Internet zu sprechen. Das Ausführen der Kompilierung führt zu der folgenden Ausnahme:

javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
    at com.Sun.net.ssl.internal.ssl.InputRecord.handleUnknownRecord(Unknown Source)
at com.Sun.net.ssl.internal.ssl.InputRecord.read(Unknown Source)
at com.Sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.Sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at com.Sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at com.Sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at Sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
at Sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
at Sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(Unknown Source)

Ich denke das liegt daran, dass die Verbindung mit dem Client-Rechner nicht sicher ist. Gibt es eine Möglichkeit, den lokalen Computer oder die lokalen Ports zu konfigurieren, um eine Verbindung zum Remote-HTTPS-Server herzustellen?

121
karthi

Ich denke, das liegt an der Verbindung mit dem Client-Rechner eingerichtet ist nicht sicher.

Dies liegt daran, dass Sie mit einem HTTP-Server und nicht mit einem HTTPS-Server kommunizieren. Wahrscheinlich haben Sie nicht die richtige Portnummer für HTTPS verwendet.

177
user207421
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?

Sie sollten über einen lokalen SMTP-Domänennamen verfügen, der den Mail-Server kontaktiert und eine neue Verbindung herstellt sowie die SSL-Eigenschaft in Ihrer Programmierung unten ändern 

javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection

 props.put("mail.smtp.socketFactory.fallback", "true"); // Should be true
15
Thobith

Ich habe dieselbe Fehlermeldung erhalten, als ich vergessen hatte, mich bei der Unternehmensfirewall anzumelden, bevor eine POST -Anforderung über einen Proxy ausgeführt wurde.

8
Jay

Ich habe den gleichen Fehler bekommen. Es war, weil ich über http auf den https-Port zugegriffen habe. Das Problem wurde behoben, als ich http in https änderte. 

3
Soumyajit Swain

Wenn Sie mit spring lokal laufen, empfehle ich die Verwendung von:

@Bean
public AmazonDynamoDB amazonDynamoDB() throws IOException {
    return AmazonDynamoDBClientBuilder.standard()
            .withCredentials(
                    new AWSStaticCredentialsProvider(
                            new BasicAWSCredentials("fake", "credencial")
                    )
            )
            .withClientConfiguration(new ClientConfigurationFactory().getConfig().withProtocol(Protocol.HTTP))
            .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("localhost:8443", "central"))
            .build();
}

Es funktioniert bei mir mit Unit-Test.

Hoffe es hilft!

1
Henrique

Ich habe ein Problem mit der in Jdevelopr 11.1.1.7 IDE erstellten Java-Anwendung. Ich habe das Problem gelöst, indem ich die Verwendung der Eigenschaften des Proxy-Formulars deaktiviert habe.

Sie finden es im Folgenden: Projekteigenschaften -> (von der linken Seite) Ausführen/Debuggen/Profil -> Klicken Sie im rechten Bedienfeld auf (Bearbeiten). Möglichkeit.

1
Salman

Ich habe einen ähnlichen Fehler beim Verwenden der Kamel-Mail-Komponente zum Senden von E-Mails mit Google Mail SMTP erhalten. 

Die Lösung wurde von TLS-Port (587) zu SSL-Port (465) wie folgt geändert:

<route id="sendMail">
  <from uri="jason:toEmail"/>
  <convertBodyTo type="Java.lang.String"/>
  <setHeader headerName="Subject"><constant>Something</constant></setHeader>
  <to uri="smtps://smtp.gmail.com:[email protected]&amp;password=mypw&amp;[email protected]&amp;debugMode=true&amp;mail.smtp.starttls.enable=true"/>
</route>
0

Wenn Sie dies als Antwort hinzufügen, kann dies später jemandem helfen.

Ich musste jvm zwingen, den IPv4-Stack zu verwenden, um den Fehler zu beheben. Meine Anwendung hat früher im Firmennetzwerk gearbeitet, aber bei der Verbindung von zu Hause aus gab es dieselbe Ausnahme. Kein Proxy beteiligt. Das jvm-Argument wurde hinzugefügt -Djava.net.preferIPv4Stack=true und alle https-Anforderungen verhalten sich normal.

0
basiljames

Bei der Verwendung von Google Mail war ich mit dieser Ausnahme konfrontiert.

Um Google Mail nutzen zu können, musste ich Aktivieren Sie "Weniger sichere Apps zulassen".

Diese Google Mail-Einstellung finden Sie unter https://www.google.com/settings/security/lesssecureapps - nach dem Einloggen in das Google Mail-Konto.

0
Jose1755

Es hat jetzt bei mir funktioniert. Ich habe die Einstellungen meines Google-Kontos wie folgt geändert:

        System.out.println("Start");
        final String username = "[email protected]";
        final String password = "************";

        Properties props = new Properties();
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.Host", "smtp.gmail.com");
        props.put("mail.smtp.port", "465");
        props.put("mail.transport.protocol", "smtp");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

         Session session = Session.getInstance(props,
                  new javax.mail.Authenticator() {
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication(username, password);
                    }
                  });


        try {
            Transport transport=session.getTransport();
            Message message = new MimeMessage(session);
            message.setFrom(new InternetAddress("[email protected]"));//formBean.getString("fromEmail")
            message.setRecipients(Message.RecipientType.TO,InternetAddress.parse("[email protected]"));
            message.setSubject("subject");//formBean.getString(
            message.setText("mailBody");
            transport.connect();
            transport.send(message, InternetAddress.parse("[email protected]"));//(message);

            System.out.println("Done");

        } catch (MessagingException e) {
            System.out.println("e="+e);
            e.printStackTrace();
            throw new RuntimeException(e);

        }

Obwohl ich SSL und TSL aktiviert habe, während ich das Programm in diesem link gleichen Beitrag ausführe. Ich verbringe viel Zeit, aber als ich merkte und fand diesen Link. Und getan 2 folgenden Schritten und Einstellungskontrolle in Google. :

  • Deaktivieren Sie die Bestätigung in zwei Schritten (Passwort und OTP)

  • Aktivieren des Zugriffs auf weniger sichere Apps ( Weniger sichere Apps zulassen: EIN )

Jetzt kann ich E-Mails mit dem obigen Programm senden.

0
Laxman G

Wie EJP sagte, handelt es sich um eine Nachricht, die aufgrund eines Aufrufs an ein Nicht-https-Protokoll angezeigt wird. Wenn Sie sicher sind, dass es sich um HTTPS handelt, überprüfen Sie die Einstellungen für den Bypass-Proxy und fügen Sie in die Bypass-Proxy-Liste die URL Ihres Webservice-Hosts hinzu

0

wenn es sich bei der Verbindung um einen FTPS-Test handelt:

FTPSClient ftpClient = neuer FTPSClient (Protokoll, false);

protocol = TLS, SSL und false = isImplicit.

0
Faxon