tomcat上已经配置好了axis,通过http访问soap消息是没有问题了。但是还没有配置https,所以按着官方文档开始干活了。首先用keytool生成服务器段的keystore:
keytool
-genkey -alias tomcat -keystore ktomcat.keystore
注意,alias的密码要与keystore的密码一致,tomcat文档上是这么说的。接着是修改了server.xml:
port="8443"
protocol="HTTP/1.1" minSpareThreads="5" maxSpareThreads="75"
enableLookups="true"
disableUploadTimeout="true"
acceptCount="100" maxThreads="200"
scheme="https"
secure="true" SSLEnabled="true"
keystoreFile="ktomcat.keystore"
keystorePass="changeit"
clientAuth="false"
sslProtocol="TLS"/>
重启tomcat之后,输入https://localhost:8443进行验证(注意是8443哦,我一开始居然傻乎乎的输入8080^_^)
接着设置客户端的trustStore,jmeter需要它来信任tomcat服务器段的证书
keytool
-export -alias tomcat -keystore ktomcat.keystore -file
tomcat.crt
keytool -import -alias tomcat -file tomcat.crt -keystore
tclient.keystore
tomcat上的https配置成功之后,就开始jmeter的配置了,默认情况下用jmeter是不可以访问我们配置的https应用的,不过却可以访问像google等网站上的https应用,原因很简单,我们自己生成的证书是不被信任的。jmeter的官方网站有一个很大的陷阱,上面说只要修改jmeter.properties参数,将SSL
Configuration部分内的注释去掉就可以了,如下
#---------------------------------------------------------------------------
# SSL configuration
#---------------------------------------------------------------------------
#Classname
of the ssl provider to be used (to enable testing of https
urls)
#And the package name where Stream Handlers can be found
#These provided defaults can be uncommented, and they will work if
you are using
#Sun's JSSE implementation.
ssl.provider=com.sun.net.ssl.internal.ssl.Provider
ssl.pkgs=com.sun.net.ssl.internal.www.protocol
#The
location of the truststore (trusted certificates) and keystore ( if
other than the default.
#you can uncomment this and change the path to the correct
location.
javax.net.ssl.trustStore=/home/flyerhzm/software/jakarta-jmeter-2.2/tclient.keystore
javax.net.ssl.keyStore=/home/flyerhzm/software/jakarta-jmeter-2.2/kclient.keystore
#The
password to your keystore
javax.net.ssl.keyStorePassword=changeit
不过结果还是失败,尝试了好多次,总是报SSLHandshakeException。如果是通过浏览器访问的话,浏览器都会提醒你对方的证书不合法,是否要信任它,但是java是不会询问你,而是直接抛出异常。但是如果设置了trustStore的话,就会信任对方的证书啦,太奇怪了。
google了一下有关SSLHandshakeException,网上有说可以用-D方式添加应用参数,于是打开了jmter启动文件,修改最后一句话为:
java $JVM_ARGS $ARGS -jar `dirname $0`/ApacheJMeter.jar-Djavax.net.ssl.trustStore=/home/flyerhzm/software/jakarta-jmeter-2.2/tclient.keystore
-Djavx.net.ssl.trustStorePassword=changeit"$@"
居然成功了,呵呵。可恶,配置文件jmeter.properties居然不起作用,害我辛苦到现在。