Comment changer le type de sécurité de SSL en TLS à Jenkins?

j'essaie de configurer la notification par courriel smtp. Je pouvais voir que la partie gmail fonctionne bien. Je veux le configurer pour mon bureau 365.

serveur Smtp = smtp.office365.com

nous n'avons pas configuré SSL. Au lieu de cela, nous utilisons TLS. Comment puis-je mettre le TLS dans le Jenkins? Il n'y a qu'un bouton de contrôle qui suggère D'utiliser SSL ou non. Si je désactive ce qu'est ce qu'il va utiliser?

j'obtiens les erreurs suivantes -

Failed to send out e-mail

javax.mail.MessagingException: Could not connect to SMTP host: smtp.office365.com, port: 587;
  nested exception is:
    javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1934)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:638)
    at javax.mail.Service.connect(Service.java:317)
    at javax.mail.Service.connect(Service.java:176)
    at javax.mail.Service.connect(Service.java:125)
    at javax.mail.Transport.send0(Transport.java:194)
    at javax.mail.Transport.send(Transport.java:124)
    at hudson.tasks.Mailer$DescriptorImpl.doSendTestMail(Mailer.java:499)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:298)
    at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161)
    at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96)
    at org.kohsuke.stapler.MetaClass.doDispatch(MetaClass.java:120)
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)
    at org.kohsuke.stapler.MetaClass.doDispatch(MetaClass.java:248)
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:631)
    at org.kohsuke.stapler.Stapler.service(Stapler.java:225)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
    at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:96)
    at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:84)
    at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
    at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:46)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
    at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
    at org.eclipse.jetty.server.Server.handle(Server.java:370)
    at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
    at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
    at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
    at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:52)
    at winstone.BoundedExecutorService.run(BoundedExecutorService.java:77)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:679)
Caused by: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
    at sun.security.ssl.InputRecord.handleUnknownRecord(InputRecord.java:542)
    at sun.security.ssl.InputRecord.read(InputRecord.java:374)
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:850)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1190)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1217)
    at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1201)
    at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:507)
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:238)
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1900)
    ... 63 more
28
demandé sur dexterous_stranger 2013-11-25 13:19:10

7 réponses

pour Jenkins sur Windows, ouvrez jenkins.xml et modifier le noeud d'arguments

-XRS-Xmx256m-Dhudson.cycle de vie=hudson.cycle de vie.WindowsServiceLifecycle-Dmail.SMTP.starttls.enable=true-jar " %BASE% \ jenkins.de la guerre" --httpPort=8080

23
répondu kaloyan 2014-02-08 12:22:29

Office 365 nécessite en effet SMTP authentifié avec TLS. L'option SSL dans la configuration de Jenkins n'aide pas, elle n'est pas cochée. Au lieu de cela, ajoutez la propriété suivante à la Jenkins VM:

-Dmail.smtp.starttls.enable=true

pour le standalone, Jenkins l'a mis dans jenkins.xml à partir du dossier d'installation et pour Tomcat mettre à jour le script de démarrage ou utiliser l'icône de plateau sur Windows.

puis redémarrez jenkins et vous êtes prêt à partir.

12
répondu Bogdan Calmac 2014-01-17 18:30:24

J'exécute Jenkins sous Ubuntu Server 14.04 et j'ai dû adapter la réponse précédente qui s'adresse à la distribution CentOS.

tout d'abord, sous la plupart des distributions Linux, le fichier de configuration de Jenkins est situé à /etc/default/jenkins (voir ce lien). J'utilise Jenkins 2.7 et je append -Dmail.smtp.starttls.enable=true à la variable de réglage existante JAVA_ARGS. Enfin, je terminais par ceci:

JAVA_ARGS="-Djava.awt.headless=true -Dmail.smtp.starttls.enable=true"
10
répondu frozar 2016-06-06 13:12:06

voici ce qui a fonctionné pour moi en dirigeant Jenkins sur CentOS. Edit /etc/sysconfig/jenkins et ajouter l'option -Dmail.smtp.starttls.enable=trueJENKINS_JAVA_OPTIONS,

s'il y a déjà une autre variable, ajouter -Dmail.smtp.starttls.enable=true pour cela, il devrait être similaire à celui ci-dessous:

JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dmail.smtp.starttls.enable=true"

redémarrez Jenkins avec service jenkins restart et vous devriez être bon d'aller

6
répondu raj.andy1 2015-10-21 16:12:56

Merci pour les réponses, je l'ai fait réparer. Tout d'abord, le JAVA ne supporte par défaut que SSL. Ainsi, les options Java de Jenkins doivent être définies pour activer TLS. Après, commence le service Jenkins. Le problème de ce problème de permission se produit lorsque vous ne donnez pas l'adresse e-mail de L'administrateur du système dans la colonne Emplacement de Jenkins. Cela ne se produit pas pour gmail smtp. Je suppose que le bureau 365 a une haute sécurité. Ainsi, il permet seulement à l'utilisateur enregistré d'envoyer les e-mails.

1
répondu dexterous_stranger 2013-11-26 11:35:24

Pour moi, l'ajout de "-Dmail.SMTP.starttls.enable=true" to java options didn't work out of the box - Jenkins essayait de se connecter au SMTP, mais dans les logs at /var/log/maillog (CentOS 7.2) j'ai vu que la connexion est établie et après un certain temps (probablement après time out) postfix a signalé "connexion perdue après connexion à partir de {host_name}". J'ai aussi une connexion par TLS. Après quelques recherches, j'ai décidé d'essayer différentes port - 587 - au lieu de default 465 et voilà! - enfin l'e-mail test a été envoyé.

0
répondu Ivan 2016-03-03 01:02:26

SSL et TLS sont, en fait, identiques.

-5
répondu David Schwartz 2013-11-25 09:23:28