ssl - jboss5 sending email over smtp + tls -
i'm, having problems sending emails on smtp tls enabled on port 587 on jboss5.1
the problem looks : sun.security.provider.certpath.suncertpathbuilderexception: unable find valid certification path requested target
i have tried add ca keys in jre keystor java keytool ... looks i'm missing here...any hints?
i have settings in mail-service.xml:
<property name="mail.store.protocol" value="pop3"/> <property name="mail.transport.protocol" value="smtp"/> <!-- change user receive mail --> <property name="mail.user" value="********"/> <!-- change mail server --> <property name="mail.pop3.host" value="**************"/> <!-- change smtp gateway server --> <property name="mail.smtp.host" value="************"/> <!-- mail server port --> <property name="mail.smtp.port" value="587"/> <property name="mail.smtp.auth" value="true"/> <property name="mail.smtp.starttls.enable" value="true" /> <!-- change address mail --> <property name="mail.from" value="**********"/> <!-- enable debugging output javamail classes --> <property name="mail.debug" value="true"/> and debug log:
2013-08-08 14:24:30,031 debug: javamail version 1.4ea 2013-08-08 14:24:30,031 debug: java.io.filenotfoundexception: /usr/java/jdk1.6.0_35/jre/lib/javamail.providers (no such file or directory) 2013-08-08 14:24:30,033 debug: url vfszip:/usr/share/jboss-5.1.0.ga/server/default/deploy/4pm_services-ear.ear/jboss-seam.jar/meta-inf/javamail.providers 2013-08-08 14:24:30,034 debug: bad provider entry: 2013-08-08 14:24:30,034 debug: loaded resource: vfszip:/usr/share/jboss-5.1.0.ga/server/default/deploy/4pm_services-ear.ear/jboss-seam.jar/meta-inf/javamail.providers 2013-08-08 14:24:30,034 debug: loaded resource: /meta-inf/javamail.default.providers 2013-08-08 14:24:30,034 debug: tables of loaded providers 2013-08-08 14:24:30,034 debug: providers listed class name: {com.sun.mail.smtp.smtpssltransport=javax.mail.provider[transport,smtps,com.sun.mail.smtp.smtpssltransport,sun microsystems, inc], com.sun.mail.smtp.smtptransport=javax.mail.provider[transport,smtp,com.sun.mail.smtp.smtptransport,sun microsystems, inc], com.sun.mail.imap.imapsslstore=javax.mail.provider[store,imaps,com.sun.mail.imap.imapsslstore,sun microsystems, inc], org.jboss.seam.mock.mocktransport=javax.mail.provider[transport,mock,org.jboss.seam.mock.mocktransport,jboss seam integration tests], com.sun.mail.pop3.pop3sslstore=javax.mail.provider[store,pop3s,com.sun.mail.pop3.pop3sslstore,sun microsystems, inc], com.sun.mail.imap.imapstore=javax.mail.provider[store,imap,com.sun.mail.imap.imapstore,sun microsystems, inc], com.sun.mail.pop3.pop3store=javax.mail.provider[store,pop3,com.sun.mail.pop3.pop3store,sun microsystems, inc]} 2013-08-08 14:24:30,034 debug: providers listed protocol: {imaps=javax.mail.provider[store,imaps,com.sun.mail.imap.imapsslstore,sun microsystems, inc], imap=javax.mail.provider[store,imap,com.sun.mail.imap.imapstore,sun microsystems, inc], mock=javax.mail.provider[transport,mock,org.jboss.seam.mock.mocktransport,jboss seam integration tests], smtps=javax.mail.provider[transport,smtps,com.sun.mail.smtp.smtpssltransport,sun microsystems, inc], pop3=javax.mail.provider[store,pop3,com.sun.mail.pop3.pop3store,sun microsystems, inc], pop3s=javax.mail.provider[store,pop3s,com.sun.mail.pop3.pop3sslstore,sun microsystems, inc], smtp=javax.mail.provider[transport,smtp,com.sun.mail.smtp.smtptransport,sun microsystems, inc]} 2013-08-08 14:24:30,035 debug: loaded resource: /meta-inf/javamail.default.address.map 2013-08-08 14:24:30,036 debug: !anyloaded 2013-08-08 14:24:30,036 debug: not loading resource: /meta-inf/javamail.address.map 2013-08-08 14:24:30,036 debug: java.io.filenotfoundexception: /usr/java/jdk1.6.0_35/jre/lib/javamail.address.map (no such file or directory) 2013-08-08 14:24:30,036 debug: getprovider() returning javax.mail.provider[transport,smtp,com.sun.mail.smtp.smtptransport,sun microsystems, inc] 2013-08-08 14:24:30,036 debug smtp: useehlo true, useauth true 2013-08-08 14:24:30,036 debug smtp: useehlo true, useauth true 2013-08-08 14:24:30,036 debug smtp: trying connect host "**************", port 587, isssl false 2013-08-08 14:24:30,038 220 ************** microsoft esmtp mail service ready @ thu, 8 aug 2013 14:24:29 +0200 2013-08-08 14:24:30,038 debug smtp: connected host "**************", port: 587 2013-08-08 14:24:30,039 ehlo ************** 2013-08-08 14:24:30,040 250-************** hello [**************] 250-size 10485760 250-pipelining 250-dsn 250-enhancedstatuscodes 250-starttls 250-auth gssapi ntlm 250-8bitmime 250-binarymime 250 chunking 2013-08-08 14:24:30,040 debug smtp: found extension "size", arg "10485760" 2013-08-08 14:24:30,040 debug smtp: found extension "pipelining", arg "" 2013-08-08 14:24:30,040 debug smtp: found extension "dsn", arg "" 2013-08-08 14:24:30,040 debug smtp: found extension "enhancedstatuscodes", arg "" 2013-08-08 14:24:30,040 debug smtp: found extension "starttls", arg "" 2013-08-08 14:24:30,040 debug smtp: found extension "auth", arg "gssapi ntlm" 2013-08-08 14:24:30,040 debug smtp: found extension "8bitmime", arg "" 2013-08-08 14:24:30,040 debug smtp: found extension "binarymime", arg "" 2013-08-08 14:24:30,040 debug smtp: found extension "chunking", arg "" 2013-08-08 14:24:30,040 starttls 2013-08-08 14:24:30,041 220 2.0.0 smtp server ready 2013-08-08 14:24:30,041 ehlo ************** 2013-08-08 14:24:30,048 error [si.arctur.fourpmservices.schedulejobs.emailsender.mailsender] (4pm_services_quartzscheduler_worker-3) error in transport email[1040] javax.mail.messagingexception: can't send command smtp host; nested exception is: javax.net.ssl.sslhandshakeexception: sun.security.validator.validatorexception: pkix path building failed: sun.security.provider.certpath.suncertpathbuilderexception: unable find valid certification path requested target @ com.sun.mail.smtp.smtptransport.sendcommand(smtptransport.java:1420) @ com.sun.mail.smtp.smtptransport.sendcommand(smtptransport.java:1408) @ com.sun.mail.smtp.smtptransport.ehlo(smtptransport.java:847) @ com.sun.mail.smtp.smtptransport.protocolconnect(smtptransport.java:384) @ javax.mail.service.connect(service.java:297) @ javax.mail.service.connect(service.java:156) @ javax.mail.service.connect(service.java:105) @ javax.mail.transport.send0(transport.java:168) @ javax.mail.transport.send(transport.java:98) @ si.arctur.fourpmservices.schedulejobs.emailsender.mailsender.actualsend(mailsender.java:64) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:39) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:25) @ java.lang.reflect.method.invoke(method.java:597) @ org.jboss.seam.util.reflections.invoke(reflections.java:22) @ org.jboss.seam.intercept.rootinvocationcontext.proceed(rootinvocationcontext.java:32) @ org.jboss.seam.intercept.seaminvocationcontext.proceed(seaminvocationcontext.java:56) @ org.jboss.seam.transaction.rollbackinterceptor.aroundinvoke(rollbackinterceptor.java:28) @ org.jboss.seam.intercept.seaminvocationcontext.proceed(seaminvocationcontext.java:68) @ org.jboss.seam.core.bijectioninterceptor.aroundinvoke(bijectioninterceptor.java:77) @ org.jboss.seam.intercept.seaminvocationcontext.proceed(seaminvocationcontext.java:68) @ org.jboss.seam.transaction.transactioninterceptor$1.work(transactioninterceptor.java:97) @ org.jboss.seam.util.work.workintransaction(work.java:61) @ org.jboss.seam.transaction.transactioninterceptor.aroundinvoke(transactioninterceptor.java:91) @ org.jboss.seam.intercept.seaminvocationcontext.proceed(seaminvocationcontext.java:68) @ org.jboss.seam.core.methodcontextinterceptor.aroundinvoke(methodcontextinterceptor.java:44) @ org.jboss.seam.intercept.seaminvocationcontext.proceed(seaminvocationcontext.java:68) @ org.jboss.seam.intercept.rootinterceptor.invoke(rootinterceptor.java:107) @ org.jboss.seam.intercept.javabeaninterceptor.interceptinvocation(javabeaninterceptor.java:185) @ org.jboss.seam.intercept.javabeaninterceptor.invoke(javabeaninterceptor.java:103) @ si.arctur.fourpmservices.schedulejobs.emailsender.mailsender_$$_javassist_seam_8.actualsend(mailsender_$$_javassist_seam_8.java) @ si.arctur.fourpmservices.schedulejobs.emailsender.mailchecker.checkqueue(mailchecker.java:41) @ si.arctur.fourpmservices.schedulejobs.emailsender.mailchecker.execute(mailchecker.java:22) @ si.arctur.fourpmservices.schedulejobs.quartzjobbase.executeinternal(quartzjobbase.java:94) @ si.arctur.fourpmservices.schedulejobs.quartzjobbase.schedule(quartzjobbase.java:76) @ sun.reflect.generatedmethodaccessor383.invoke(unknown source) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:25) @ java.lang.reflect.method.invoke(method.java:597) @ org.jboss.seam.util.reflections.invoke(reflections.java:22) @ org.jboss.seam.intercept.rootinvocationcontext.proceed(rootinvocationcontext.java:32) @ org.jboss.seam.intercept.seaminvocationcontext.proceed(seaminvocationcontext.java:56) @ org.jboss.seam.transaction.rollbackinterceptor.aroundinvoke(rollbackinterceptor.java:28) @ org.jboss.seam.intercept.seaminvocationcontext.proceed(seaminvocationcontext.java:68) @ org.jboss.seam.core.bijectioninterceptor.aroundinvoke(bijectioninterceptor.java:77) @ org.jboss.seam.intercept.seaminvocationcontext.proceed(seaminvocationcontext.java:68) @ org.jboss.seam.core.methodcontextinterceptor.aroundinvoke(methodcontextinterceptor.java:44) @ org.jboss.seam.intercept.seaminvocationcontext.proceed(seaminvocationcontext.java:68) @ org.jboss.seam.async.asynchronousinterceptor.aroundinvoke(asynchronousinterceptor.java:52) @ org.jboss.seam.intercept.seaminvocationcontext.proceed(seaminvocationcontext.java:68) @ org.jboss.seam.intercept.rootinterceptor.invoke(rootinterceptor.java:107) @ org.jboss.seam.intercept.javabeaninterceptor.interceptinvocation(javabeaninterceptor.java:185) @ org.jboss.seam.intercept.javabeaninterceptor.invoke(javabeaninterceptor.java:103) @ si.arctur.fourpmservices.schedulejobs.emailsender.mailchecker_$$_javassist_seam_2.schedule(mailchecker_$$_javassist_seam_2.java) @ sun.reflect.generatedmethodaccessor382.invoke(unknown source) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:25) @ java.lang.reflect.method.invoke(method.java:597) @ org.jboss.seam.util.reflections.invoke(reflections.java:22) @ org.jboss.seam.util.reflections.invokeandwrap(reflections.java:144) @ org.jboss.seam.async.asynchronousinvocation$1.process(asynchronousinvocation.java:62) @ org.jboss.seam.async.asynchronous$contextualasynchronousrequest.run(asynchronous.java:80) @ org.jboss.seam.async.asynchronousinvocation.execute(asynchronousinvocation.java:44) @ org.jboss.seam.async.quartzdispatcher$quartzjob.execute(quartzdispatcher.java:243) @ org.quartz.core.jobrunshell.run(jobrunshell.java:202) @ org.quartz.simpl.simplethreadpool$workerthread.run(simplethreadpool.java:529) caused by: javax.net.ssl.sslhandshakeexception: sun.security.validator.validatorexception: pkix path building failed: sun.security.provider.certpath.suncertpathbuilderexception: unable find valid certification path requested target @ com.sun.net.ssl.internal.ssl.alerts.getsslexception(alerts.java:174) @ com.sun.net.ssl.internal.ssl.sslsocketimpl.fatal(sslsocketimpl.java:1764) @ com.sun.net.ssl.internal.ssl.handshaker.fatalse(handshaker.java:241) @ com.sun.net.ssl.internal.ssl.handshaker.fatalse(handshaker.java:235) @ com.sun.net.ssl.internal.ssl.clienthandshaker.servercertificate(clienthandshaker.java:1206) @ com.sun.net.ssl.internal.ssl.clienthandshaker.processmessage(clienthandshaker.java:136) @ com.sun.net.ssl.internal.ssl.handshaker.processloop(handshaker.java:593) @ com.sun.net.ssl.internal.ssl.handshaker.process_record(handshaker.java:529) @ com.sun.net.ssl.internal.ssl.sslsocketimpl.readrecord(sslsocketimpl.java:958) @ com.sun.net.ssl.internal.ssl.sslsocketimpl.performinitialhandshake(sslsocketimpl.java:1203) @ com.sun.net.ssl.internal.ssl.sslsocketimpl.writerecord(sslsocketimpl.java:654) @ com.sun.net.ssl.internal.ssl.appoutputstream.write(appoutputstream.java:100) @ com.sun.mail.util.traceoutputstream.write(traceoutputstream.java:101) @ java.io.bufferedoutputstream.flushbuffer(bufferedoutputstream.java:65) @ java.io.bufferedoutputstream.flush(bufferedoutputstream.java:123) @ com.sun.mail.smtp.smtptransport.sendcommand(smtptransport.java:1418) ... 63 more caused by: sun.security.validator.validatorexception: pkix path building failed: sun.security.provider.certpath.suncertpathbuilderexception: unable find valid certification path requested target @ sun.security.validator.pkixvalidator.dobuild(pkixvalidator.java:323) @ sun.security.validator.pkixvalidator.enginevalidate(pkixvalidator.java:217) @ sun.security.validator.validator.validate(validator.java:218) @ com.sun.net.ssl.internal.ssl.x509trustmanagerimpl.validate(x509trustmanagerimpl.java:126) @ com.sun.net.ssl.internal.ssl.x509trustmanagerimpl.checkservertrusted(x509trustmanagerimpl.java:209) @ com.sun.net.ssl.internal.ssl.x509trustmanagerimpl.checkservertrusted(x509trustmanagerimpl.java:249) @ com.sun.net.ssl.internal.ssl.clienthandshaker.servercertificate(clienthandshaker.java:1185) ... 74 more caused by: sun.security.provider.certpath.suncertpathbuilderexception: unable find valid certification path requested target @ sun.security.provider.certpath.suncertpathbuilder.enginebuild(suncertpathbuilder.java:174) @ java.security.cert.certpathbuilder.build(certpathbuilder.java:238) @ sun.security.validator.pkixvalidator.dobuild(pkixvalidator.java:318) ... 80 more
i had enter in keystore certificate of mail server, got certificate via
openssl s_client -connect mail.server.com:587 -starttls smtp and extracted key response , added in jre keytore
Comments
Post a Comment