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
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
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.
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"
voici ce qui a fonctionné pour moi en dirigeant Jenkins sur CentOS. Edit /etc/sysconfig/jenkins
et ajouter l'option -Dmail.smtp.starttls.enable=true
JENKINS_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
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.
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é.