JMeter SMTP采样器中的SSL握手异常

JMeter SMTP采样器中的SSL握手异常,jmeter,Jmeter,我在尝试使用Apache JMeter 5.3中的SMTP采样器时遇到此错误: avax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 465 at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1961) ~[mail-1.5.0-b01.jar:1.5.0-b01] at com.sun.mail.smtp.SMT

我在尝试使用Apache JMeter 5.3中的SMTP采样器时遇到此错误:

avax.mail.MessagingException: Could not connect to SMTP host: localhost, port: 465
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1961) ~[mail-1.5.0-b01.jar:1.5.0-b01]
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:654) ~[mail-1.5.0-b01.jar:1.5.0-b01]
at javax.mail.Service.connect(Service.java:295) ~[mail-1.5.0-b01.jar:1.5.0-b01]
at javax.mail.Service.connect(Service.java:176) ~[mail-1.5.0-b01.jar:1.5.0-b01]
at org.apache.jmeter.protocol.smtp.sampler.protocol.SendMailCommand.execute(SendMailCommand.java:323) ~[ApacheJMeter_mail.jar:5.3]
at org.apache.jmeter.protocol.smtp.sampler.SmtpSampler.executeMessage(SmtpSampler.java:169) [ApacheJMeter_mail.jar:5.3]
at org.apache.jmeter.protocol.smtp.sampler.SmtpSampler.sample(SmtpSampler.java:146) [ApacheJMeter_mail.jar:5.3]
at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:630) [ApacheJMeter_core.jar:5.3]
at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:558) [ApacheJMeter_core.jar:5.3]
at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:489) [ApacheJMeter_core.jar:5.3]
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256) [ApacheJMeter_core.jar:5.3]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_271]

Caused by: javax.net.ssl.SSLHandshakeException: A potential protocol version downgrade attack
at sun.security.ssl.Alert.createSSLException(Unknown Source) ~[?:1.8.0_271]
at sun.security.ssl.Alert.createSSLException(Unknown Source) ~[?:1.8.0_271]
at sun.security.ssl.TransportContext.fatal(Unknown Source) ~[?:1.8.0_271]
at sun.security.ssl.TransportContext.fatal(Unknown Source) ~[?:1.8.0_271]
at sun.security.ssl.TransportContext.fatal(Unknown Source) ~[?:1.8.0_271]
at sun.security.ssl.ServerHello$ServerHelloConsumer.onServerHello(Unknown Source) ~[?:1.8.0_271]
at sun.security.ssl.ServerHello$ServerHelloConsumer.consume(Unknown Source) ~[?:1.8.0_271]
at sun.security.ssl.SSLHandshake.consume(Unknown Source) ~[?:1.8.0_271]
at sun.security.ssl.HandshakeContext.dispatch(Unknown Source) ~[?:1.8.0_271]
at sun.security.ssl.HandshakeContext.dispatch(Unknown Source) ~[?:1.8.0_271]
at sun.security.ssl.TransportContext.dispatch(Unknown Source) ~[?:1.8.0_271]
at sun.security.ssl.SSLTransport.decode(Unknown Source) ~[?:1.8.0_271]
at sun.security.ssl.SSLSocketImpl.decode(Unknown Source) ~[?:1.8.0_271]
at sun.security.ssl.SSLSocketImpl.readHandshakeRecord(Unknown Source) ~[?:1.8.0_271]
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) ~[?:1.8.0_271]
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) ~[?:1.8.0_271]
at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:527) ~[mail-1.5.0-b01.jar:1.5.0-b01]
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:332) ~[mail-1.5.0-b01.jar:1.5.0-b01]
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:234) ~[mail-1.5.0-b01.jar:1.5.0-b01]
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1927) ~[mail-1.5.0-b01.jar:1.5.0-b01]
... 11 more
  • 我已经更新到Java和ApacheJMeter的最新版本
  • 我尝试在
    jmeter.properties
    中设置属性:
    https.default.protocol=TLSv1.2
    ,没有任何更改

  • 有什么建议吗?

    问题不包含全部细节,因此我只能假设您的电子邮件服务器和JMeter SSL协议之间存在不匹配,而且JMeter很可能正在尝试使用低于服务器使用的协议版本建立连接

    您可以将下一行添加到system.properties文件:

    它应该让你对问题的原因有更多的了解,一旦你缩小范围,就更容易找到解决方案

    解决方法之一是将下一行添加到前面提到的system.properties文件中:

    如果我的假设是错误的,而且JMeter使用的协议太新,那么您可以尝试降级JDK版本,JMeter 5.3的最低要求是Java 8

    更多信息:


    我找到了与Dmitri T建议非常接近的解决方案。 我必须将TLSv1.3添加到列表中,并在Java控制面板中启用TLSv1.3

    我也尝试了其他设置,但这是我发现唯一有效的模式


    完整的JMeter配置字符串:
    jdk.tls.client.protocols=“TLSv1,TLSv1.1,TLSv1.2,TLSv1.3”

    Hi其他调试信息没有提供有关错误的更多信息,也没有更改结果以添加协议定义行。所以我必须看看你提供的链接。我可以提供更多的信息,以便您能够更好地帮助我吗?
    javax.net.debug=all
    
    jdk.tls.client.protocols="TLSv1,TLSv1.1,TLSv1.2"