web-dev-qa-db-fra.com

Message SSL non reconnu, connexion en texte brut? Exception

J'ai un paquet compatible Java pour parler avec le serveur https sur le net. L'exécution de la compilation donne l'exception suivante:

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)

Je pense que cela est dû à la connexion établie avec la machine client n'est pas sécurisée. Est-il possible de configurer la machine locale ou les ports afin de se connecter au serveur https distant?

121
karthi

Je pense que cela est dû à la connexion établi avec la machine cliente est pas sécurisé.

Cela est dû au fait que vous parlez à un serveur HTTP, pas à un serveur HTTPS. Vous n'avez probablement pas utilisé le numéro de port correct pour HTTPS.

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

Vous devez avoir un nom de domaine SMTP local qui contactera le serveur de messagerie et établira une nouvelle connexion. Vous devrez également modifier la propriété SSL dans votre programmation ci-dessous 

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

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

J'ai reçu le même message d'erreur lorsque j'ai oublié de me connecter au pare-feu de la société avant d'effectuer une demande POST via un proxy.

8
Jay

J'ai eu la même erreur. c'était parce que j'accédais au port https en utilisant http .. Le problème a été résolu lorsque j'ai remplacé http en https. 

3
Soumyajit Swain

Si vous utilisez local en utilisant spring, je vous conseillerais d'utiliser:

@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();
}

Cela fonctionne pour moi en utilisant le test unitaire.

J'espère que c'est de l'aide!

1
Henrique

Je suis confronté au même problème avec l'application Java créée dans l'EDI Jdevelopr 11.1.1.7. J'ai résolu le problème en décochant l'utilisation des propriétés de projet du formulaire proxy.

Vous pouvez le trouver dans les éléments suivants: option.

1
Salman

J'ai une erreur similaire en utilisant le composant camel-mail pour envoyer des e-mails par Gmail SMTP. 

La solution passait du port TLS (587) au port SSL (465) comme ci-dessous:

<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
Cleber Jorge Amaral

Ajouter ceci comme réponse car cela pourrait aider quelqu'un plus tard.

J'ai dû forcer JVM à utiliser la pile IPv4 pour résoudre l'erreur. Mon application fonctionnait jadis au sein du réseau de l’entreprise, mais lorsqu’elle se connectait depuis chez soi, elle donnait la même exception. Aucun proxy impliqué. Ajout de l'argument jvm -Djava.net.preferIPv4Stack=true et toutes les demandes https se comportaient normalement.

0
basiljames

J'étais confronté à cette exception lors de l'utilisation de Gmail.

Pour pouvoir utiliser Gmail, je devais activer "Autoriser les applications moins sécurisées".

Ce paramètre Gmail est disponible à l’adresse https://www.google.com/settings/security/lesssecureapps après la connexion au compte Gmail.

0
Jose1755

Cela a fonctionné pour moi maintenant, j'ai changé les paramètres de mon compte Google comme ci-dessous:

        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);

        }

Bien que j'ai activé SSL et TSL lors de l'exécution du programme dans ce lien du même message. Je passe beaucoup de temps mais je me suis rendu compte et j'ai trouvé ce lien. Et fait 2 étapes suivantes et réglage du contrôle dans Google. :

  • Désactiver la vérification en deux étapes (mot de passe et OTP)

  • Activer pour autoriser l'accès à une application moins sécurisée ( Autoriser les applications moins sécurisées: ON. )

Maintenant, je peux envoyer un mail en utilisant le programme ci-dessus.

0
Laxman G

Comme l’a dit EJP, il s’agit d’un message dû à un appel à un protocole autre que https .. Si vous êtes certain qu’il s’agit du protocole HTTPS, vérifiez vos paramètres de proxy de contournement et, le cas échéant, ajoutez l’URL de votre serveur Web à la liste de proxy de contournement.

0
Fabrizio Stellato

si la connexion est test FTPS:

FTPSClient ftpClient = new FTPSClient (protocole, false);

protocole = TLS, SSL et false = isImplicit.

0
Faxon