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?
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.
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
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.
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.
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!
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.
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]&password=mypw&[email protected]&debugMode=true&mail.smtp.starttls.enable=true"/>
</route>
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.
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.
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.
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.
si la connexion est test FTPS:
FTPSClient ftpClient = new FTPSClient (protocole, false);
protocole = TLS, SSL et false = isImplicit.