求大神帮忙p图大神,把这张图p成超清图,而且尺寸也很大,尺寸是1024×768

君,已阅读到文档的结尾了呢~~
tomcat双向ssl tomcat 认证 ssl双向认证 tomcat apache tomcat 双向认证 机顶盒双向认证 tomcat下载 tomcat配置 eclipse tomcat
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
Tomcat双向认证
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口23691人阅读
网络安全(4)
Linux/UNIX(6)
本文将介绍如何利用Tomcat的HTTPS功能,和一个自己创建的CA,来构建WEB服务器证书和个人数字证书,最终建成一个HTTPS双向认证环境(可以用于测试目的)。本文构建HTTPS双向认证的业务流程大致如下:& 1. 创建WEB服务器公钥密钥,并生成服务器证书请求。& 2. 利用自建的CA,根据服务器证书请求为服务器签发服务器证书。然后把服务器证书导回WEB服务器中。& 3. 利用openssl生成客户端(IE)使用的个人数字证书,也由同样的CA签发个人证书。& 4. 将个人数字证书(PKCS12格式,包含密钥)导入到浏览器(IE/Firefox)后,就可以进行HTTPS测试了。& 一. 选择HTTPS WEB服务器这里我们选择了Tomcat。当然还有其它方法,如Apache+Tomcat,让Apache配置成HTTPS模式,而Tomcat只做HTTP业务处理,这样有利于提高性能,但本文只建造一个简单的HTTPS测试环境,只用Tomcat自带的HTTPS功能。(当然,我以后会考虑研究一下Apache+Tomcat模式,到时再和大家一起分享经验)& 二. 创建一个自己的CA创建一个自己的CA来模拟HTTPS构建环境(利用CA签发证书),不仅有利于了解PKI概念,而且有利于了解真正应用的业务流程。关于如何创建一个简单的测试用CA我已在本博客发文,题目为,请参考 这里就不再重述了。&另外,如果你真的觉得建一个CA比较麻烦,且只使用几个个人数字证书的话,当然也可以不建CA,下面章节也会提到不用CA如何构建双向认证。& 三. 创建服务器公钥密钥及颁发服务器证书实际上有两种方法生成服务器证书,一种是用JDK带的keytool,另一种是用openssl命令生成pkcs12格式的证书。个人更喜欢第二种,因为用openssl生成的pkcs12格式服务器证书可以导出明文的服务器密钥,便于用wireshark(ethereal的新名字)查看HTTPS里被加密过的HTTP消息。keytool生成的keystore也有办法导出密钥,但还要编程去弄,太麻烦了。&方法一,用keytool创建服务器公钥密钥并用CA签发服务器证书:keytool是JDK自带的工具程序,确保keytool已在PATH路径里(或在以下命令里指明keytool的全路径,如$JAVA_HOME/bin/keytool)。&1. 用keytool生成服务器公钥密钥:在TOMCAT的conf目录里执行以下命令(假设conf目录路径为$TOMCAT_HOME/conf/):keytool -keystore tomcat.jks -keypass 222222 -storepass 222222 -alias tomcat -genkey -keyalg RSA -dname &CN=servername, OU=servers, O=ABCom&&注:其中DN(证书的唯一取别名)里的CN最好是服务器的域名地址或IP地址(因为浏览器在发现服务器证书的CN与访问服务器的域名或IP不符时,会报一个警告,不过这个问题不大)。&2. 生成服务器证书请求,并让测试CA签发服务器证书实际上本步骤也可以省略,唯一不好的结果是用户在开始访问服务器HTTPS服务时,会跳一个窗口警告用户,用户可以在该窗口里看到服务器证书是一个自签名的证书(用服务器私钥自己给自己签发的证书,keytool生成公钥密钥时自动生成这种证书)。但只要用户选择&信任该证书&,也照样可以与服务器建立HTTPS连接。但正规的HTTPS服务器,还是应该申请一个服务器证书比较好。&2.1 生成服务器证书请求:keytool -keystore tomcat.jks -keypass 222222 -storepass 222222 -alias tomcat -certreq -file serverreq.pem&以下命令可以查看一下证书请求的内容:openssl req -in serverreq.pem -text -noout&2.2 用测试CA签署服务器证书:把serverreq.pem拷贝到CA的某目录下,我们就可以按照里的&CA的日常操作&的&1. 根据证书申请请求签发证书&章节进行证书签发了:openssl ca -in serverreq.pem -out servercert.pem -config &$HOME/testca/conf/testca.conf&执行过程中需要输入CA私钥的保护密码。&2.3 把服务器证书导回到服务器的keystore里:前面命令里生成的servercert.pem即为服务器证书。从CA处把该文件及CA的证书($HOME/testca/cacert.pem)拿来,一起放到Tomcat的conf目录里。另外导入前,还有一个工作需要做,需要手工编辑servercert.pem证书文件,把&-----BEGIN CERTIFICATE-----&该行前的所有内容都删掉,因为keytool不认得这些说明性的内容。导入前也可以执行命令查看一下证书内容:keytool -printcert -file servercert.pem&导入服务器证书:先导入CA的证书:keytool -keystore tomcat.jks -keypass 222222 -storepass 222222 -alias ca -import -trustcacerts -file cacert.pem&再导入服务器证书:keytool -keystore tomcat.jks -keypass 222222 -storepass 222222 -alias tomcat -import -file servercert.pem&导入后可以用以下命令查看一下keystore里的内容:keytool -keystore tomcat.jks -keypass 222222 -storepass 222222 -list -v&3. 创建服务器信任的客户端CA证书库:用keytool创建一个证书库,里面存放服务器信任的CA证书,也就是只有这些CA签发的客户端个人证书才被服务器信任,才能通过HTTPS访问服务器。这就是&HTTPS服务器验证客户端证书&的关键配置。注:如果只是测试目的,为了简单期间,也可以直接把客户端未经CA签发的自签名证书直接导入信任证书库里。&这里,我们假设客户端个人证书(后续章节介绍如何生成客户端个人证书)也是由测试CA签发的,所以我们要把cacert.pem证书导入信任证书库:keytool -keystore truststore.jks -keypass 222222 -storepass 222222 -alias ca -import -trustcacerts -file cacert.pem&可以用以下命令查看信任证书库内容:keytool -keystore truststore.jks -keypass 222222 -storepass 222222 -list -v&4. 配置Tomcat支持HTTPS双向认证(服务器将认证客户端证书):修改tomcat的conf目录里的server.xml文件($TOMCAT_HOME/conf/server.xml),找到类似下面内容的配置处,添加配置如下:&&& &Connector port=&8443&&&&&&&&&&&&&&& maxThreads=&150& minSpareThreads=&25& maxSpareThreads=&75&&&&&&&&&&&&&&& enableLookups=&false& disableUploadTimeout=&true&&&&&&&&&&&&&&& acceptCount=&100& debug=&0& scheme=&https& secure=&true&&&&&&&&&&&&&&& clientAuth=&true& sslProtocol=&TLS&&&&&&&&&&&&&&& keystoreFile=&conf/tomcat.jks& keystorePass=&222222& keystoreType=&JKS& &&&&& truststoreFile=&conf/truststore.jks& truststorePass=&222222& truststoreType=&JKS& /&&(题外话:其实HTTPS单向和双向认证配置的唯一区别是,把clientAuth改为false,去掉truststore的相关配置,就是单向HTTPS认证了,单向HTTPS用的可能更多,它主要在浏览器与f服务器交互的HTTP需要加密,而不需要验证客户端证书时使用。)&经以上配置后,重启tomcat,服务器就支持HTTPS双向认证了。&&方法二,用openssl创建服务器公钥密钥并用CA签发服务器证书:前面已经提到过,这种方式的好处是有利于抓包查看服务器与浏览器HTTPS交互里的HTTP信息。其实,这种方法与里提到的制作个人数字证书方法很类似(请参考的&三. 自己生成公钥密钥,并用测试CA签发数字证书&章节)。&1. 制作服务器证书(最终形成一个pkcs12文件,包含服务器密钥、证书和CA的证书)假设我们把服务器相关的东西生成到CA的$HOME/testca/test/server目录里:mkdir -p &$HOME/testca/test/server&cd &$HOME/testca/test/server&&2.1 创建服务器公钥密钥,并同时生成一个服务器证书请求:openssl req -newkey rsa:1024 -keyout serverkey.pem -keyform PEM -out serverreq.pem /&&&&&&&&&&& &&-outform PEM& -subj &/O=ABCom/OU=servers/CN=servername&执行命令过程中输入密钥保护密码222222。&执行后可以用以下命令查看请求内容:openssl req -in serverreq.pem -text -noout&2.2 用测试CA签署服务器证书:把serverreq.pem拷贝到CA的某目录下,我们就可以按照里的&CA的日常操作&的&1. 根据证书申请请求签发证书&章节进行证书签发了:openssl ca -in serverreq.pem -out servercert.pem -config &$HOME/testca/conf/testca.conf&执行过程中需要输入CA私钥的保护密码。&执行完后可以用以下命令查看证书内容:openssl x509 -in servercert.pem -text -noout&2.3 制作服务器pkcs12文件(包含服务器密钥、证书和CA的证书)openssl pkcs12 -export -in servercert.pem -inkey serverkey.pem /&&&&&&&&&&&&&&&&&&&&&&& -out tomcat.p12 -name tomcat -CAfile &$HOME/testca/cacert.pem& /&&&&&&&&&&&&&&&&&&&&&&& -caname root -chain执行过程中要输入服务器密钥的保护密码(serverkey.pem)和新生成的tomcat.p12的保护密码,我们都输入222222。创建完成后,把pkcs12文件拷贝到tomcat的conf目录下。&3. 创建服务器信任的客户端CA证书库:同方法一的对应章节,这里,我们假设客户端个人证书(后续章节介绍如何生成客户端个人证书)也是由测试CA签发的,所以我们要把cacert.pem证书导入信任证书库:keytool -keystore truststore.jks -keypass 222222 -storepass 222222 -alias ca -import -trustcacerts -file cacert.pem&可以用以下命令查看信任证书库内容:keytool -keystore truststore.jks -keypass 222222 -storepass 222222 -list -v&4. 配置Tomcat支持HTTPS双向认证(服务器将认证客户端证书):修改tomcat的conf目录里的server.xml文件($TOMCAT_HOME/conf/server.xml),找到类似下面内容的配置处,添加配置如下:&&& &Connector port=&8443&&&&&&&&&&&&&&& maxThreads=&150& minSpareThreads=&25& maxSpareThreads=&75&&&&&&&&&&&&&&& enableLookups=&false& disableUploadTimeout=&true&&&&&&&&&&&&&&& acceptCount=&100& debug=&0& scheme=&https& secure=&true&&&&&&&&&&&&&&& clientAuth=&true& sslProtocol=&TLS&&&&&&&&&&&&&&& keystoreFile=&conf/tomcat.p12& keystorePass=&222222& keystoreType=&PKCS12&&&&&&&&&&&&&&&& truststoreFile=&conf/truststore.jks& truststorePass=&222222& truststoreType=&JKS& /&&注意:其中keystore的keystoreType与方法一的配置不同。经以上配置后,重启tomcat,服务器就支持HTTPS双向认证了。
四. 创建用于客户端(浏览器)测试的个人数字证书(pkcs12格式)完全按照里提到的制作个人数字证书方法来进行,请参考的&三. 自己生成公钥密钥,并用测试CA签发数字证书&章节。&1. 创建个人密钥和证书请求(证书请求里包含了公钥)创建$HOME/testuser1目录并执行命令:(证书等都放到这个目录)mkdir $HOME/testuser1cd $HOME/testuser1openssl req -newkey rsa:1024 -keyout testkey.pem -keyform PEM -out testreq.pem -outform PEM -subj &/O=TestCom/OU=TestOU/CN=testuser1& 执行过程中需要输入私钥的保护密码,假设我们输入密码: 222222&执行完后,testkey.pem即为用户的密钥,而testreq.pem即为证书请求。可以用openssl req -in testreq.pem -text -noout查看证书请求的内容。&2. 用CA为testuser1签发个人证书同样还在$HOME/testuser1目录下执行命令:openssl ca -in testreq.pem -out testcert.pem -config &$HOME/testca/conf/testca.conf&执行过程中需要输入CA的密钥保护密码(刚才设置的888888),并且最后询问你是否要给该用户签发证书时要选y。执行完后,testcert.pem即为证书,可以用命令openssl x509 -in testcert.pem -text -noout查看证书内容。&3. 制作PKCS12文件(个人数字证书)我们制作的这个PKCS#12文件将包含密钥、证书和颁发该证书的CA证书。把前几步生成的密钥和证书制作成一个pkcs12文件的方法执行命令:openssl pkcs12 -export -in testcert.pem -inkey testkey.pem -out testuser1.p12 -name testuser1 -chain -CAfile &$HOME/testca/cacert.pem&执行过程中需要输入保护密钥的密码(222222),以及新的保护pkcs12文件的密码(222222)。&执行完后,若要查看testuser1.p12的内容可以用命令openssl pkcs12 -in testuser1.p12该testuser1.p12即为pkcs12文件。你可以直接拷贝到windows下,作为个人数字证书,双击导入IE后就可以使用了。&五. 用一个简单webapp来测试HTTPS服务器证书和个人证书都准备好了,我们可以写一个简单的webapp,里面只有一个jsp,用于查看https客户端验证是否起效了。&1. 创建webapp用于测试https:在$TOMCAT_HOME/webapps/里创建一个目录testhttps,并在testhttps目录里创建WEB-INF目录,并在该目录里创建web.xml文件如下:文件:$TOMCAT_HOME/webapps/WEB-INF/web.xml&?xml version=&1.0& encoding=&ISO-8859-1&?&&web-app xmlns=&&&&& xmlns:xsi=&&&&& xsi:schemaLocation=& &&&& version=&2.4&&& &display-name&Test HTTPS App&/display-name&&/web-app&&2. 创建一个显示客户端证书信息的JSP:在testhttps目录创建文件seecert.jsp文件:$TOMCAT_HOME/webapps/WEB-INF/seecert.jsp&%@ page& import=&java.security.cert.X509Certificate& contentType=&text/ charset=GB2312& %&&pre&&%&&& java.security.cert.X509Certificate[] certs=&&& try{&&&&&&&&&&& certs=(X509Certificate[])request.getAttribute(&javax.servlet.request.X509Certificate&);
&&&&&&&&&&&&&&& if (certs == null) {&&&&&&&&&&&&&&&&&&&&&&& out.println(&No certificates&);&&&&&&&&&&&&&&& } else if (certs.length == 0) {&&&&&&&&&&&&&&&&&&&&&&& out.println(&Certificates length is 0&);&&&&&&&&&&&&&&& } else {&&&&&&&&&&&&&&&&&&&&&&& java.security.cert.X509Certificate cert = certs[0];&&&&&&&&&&&&&&&&&&&&&&& String dn = cert.getSubjectX500Principal().toString();&&&&&&&&&&&&&&&&&&&&&&& out.println(&SubjectDN: & + dn);&&&&&&&&&&&&&&&&&&&&&&& out.println();&&&&&&&&&&&&&&&&&&&&&&& out.println(&------------------certification detail--------------------&);&&&&&&&&&&&&&&&&&&&&&&& out.println(cert);&&&&&&&&&&&&&&&&&&&&&&& out.println(&----------------------------------------------------------&);&&&&&&&&&&&&&&& }&&& } catch(Exception e){&&&&&&&&&&&&&&& out.println(&Exception=& + e.getMessage());&&& }%&&/pre&&3. 测试HTTPS并查看客户端证书信息:访问URL:在用浏览器访问该URL时,浏览器可能会跳出窗口让你选择用哪个客户端个人证书。页面打开后,你将看到客户端证书的信息。&六. 使用wireshark(ethereal的新名称)查看HTTPS里加密的HTTP消息:用wireshark抓包后,你可以看到HTTPS服务器与浏览器之间的HTTPS协商过程,但是HTTPS成功建立后,后续消息是加密的,如何查看加密的HTTP消息呢?你需要借助服务器的密钥(私钥)明文。假设需要从上面提到的openssl生成的服务器证书tomcat.p12文件里导出密钥明文,生成密钥明文文件方法:openssl pkcs12 -in tomcat.p12 -out clearserverkey.pem -nodes然后在wireshark的协议定义里找到SSL,并在&RSA keys list&里配置如下内容:&&& &server_ip&,8443,http,&path_to_clearserverkey.pem&&其中:&& &server_ip&&&为HTTPS服务器的IP;&& 8443&&为HTTPS(SSL)的端口;&& http&&表示SSL里加密的是HTTP协议;&& &path_to_clearserverkey.pem&&&指上一步生成的clearserverkey.pem文件的本地路径。这样,你就能看到wireshark里的SSL协议被解密,且里面的HTTP消息也看到了。
七. 客户端证书在Tomcat里的CRL检查
请参考()。&
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:216225次
积分:2155
积分:2155
排名:第14756名
原创:21篇
评论:62条
(5)(1)(1)(1)(4)(1)(8)Tomcat6配置使用SSL双向认证 - 测试天堂 - 51Testing软件测试网 51Testing软件测试网-中国软件测试人的精神家园
Tomcat6配置使用SSL双向认证
& 01:04:04
/ 个人分类:
&Tomcat6配置使用SSL双向认证最近要做一个登录时数字证书验证的功能,在用户登录时除了效验用户名密码,还需验证其数字证书。相关资源: developerWroks中国中的,中的与中的异同:jdk1.4中已经包含JSSE。与中的异同:tomcat6配置文件多了SSLEnabled="true"属性。1.生成CA证书。目前不使用第三方权威机构的CA来认证,自己充当CA的角色。1.创建私钥 :C:\OpenSSL\apps&openssl genrsa -out root/root-key.pem 10242.创建证书请求 :C:\OpenSSL\apps&openssl req -new -out root/root-req.csr -key root/root-key.pem3.自签署证书 :C:\OpenSSL\apps&openssl x509 -req -in root/root-req.csr -out root/root-cert.pem -signkeyroot/root-key.pem -days 36504.将证书导出成浏览器支持的.p12格式 :C:\OpenSSL\apps&openssl pkcs12 -export -clcerts -in root/root-cert.pem -inkeyroot/root-key.pem -out root/root.p122.生成server证书。1.创建私钥 :C:\OpenSSL\apps&openssl genrsa -out server/server-key.pem 10242.创建证书请求 :C:\OpenSSL\apps&openssl req -new -out server/server-req.csr -key server/server-key.pem3.自签署证书 :C:\OpenSSL\apps&openssl x509 -req -in server/server-req.csr -out server/server-cert.pem -signkeyserver/server-key.pem -CA root/root-cert.pem -CAkey root/root-key.pem -CAcreateserial -days 36504.将证书导出成浏览器支持的.p12格式 :C:\OpenSSL\apps&openssl pkcs12 -export -clcerts -in server/server-cert.pem -inkeyserver/server-key.pem -out server/server.p123.生成client证书。1.创建私钥 :C:\OpenSSL\apps&openssl genrsa -out client/client-key.pem 10242.创建证书请求 :C:\OpenSSL\apps&openssl req -new -out client/client-req.csr -key client/client-key.pem3.自签署证书 :C:\OpenSSL\apps&openssl x509 -req -in client/client-req.csr -out client/client-cert.pem -signkeyclient/client-key.pem -CA root/root-cert.pem -CAkey root/root-key.pem -CAcreateserial -days 36504.将证书导出成浏览器支持的.p12格式 :C:\OpenSSL\apps&openssl pkcs12 -export -clcerts -in client/client-cert.pem -inkeyclient/client-key.pem -out client/client.p124.根据root证书生成jks文件C:\OpenSSL\apps\root&keytool -import -v -trustcacerts -storepass password -alias root -file root-cert.pem-keystore root.jks5.配置tomcat ssl,修改conf/server.xml。tomcat6中多了SSLEnabled="true"属性。keystorefile, truststorefile设置为你正确的相关路径xml 代码&&secure="true"&scheme="https"&protocol="HTTP/1.1"&port="8443"&&&&&&sslenabled="true"&maxhttpheadersize="8192"&maxthreads="150"&&&&&&minsparethreads="25"&maxsparethreads="75"&enablelookups="false"&&&&&&disableuploadtimeout="true"&acceptcount="100"&sslprotocol="TLS"&&&&&&clientauth="true"&keystorefile="d:/path/bin/x509/server.p12"&&&&&&keystoretype="PKCS12"&keystorepass="123456"&truststorefile="d:/path/bin/x509/root.jks"&&&&truststoretype="JKS"&truststorepass="123456"&&&&6.将root.p12,client.p12分别导入到IE中去(打开IE-&;Internet选项-&内容-&证书)。root.p12导入至受信任的根证书颁发机构,client.p12导入至个人7.访问你的应用,如果配置正确的话会出现请求你数字证书的对话框。8.在jsp中取得符合x.509格式的证书 代码&&%&&&&&&&&&&&&&&&&&&&&&&&&X509Certificate[]&ca=(X509Certificate[])request.getAttribute("javax.servlet.request.X509Certificate");&&&&&&&&&&&if(ca==null)&&&&&&&&&&&{&&&&&&&&&&&&&out.println("No&cert&info!");&&&&&&&&&&&}&else&{&&&&&&&&&&&&&String&&serial=ca[0].getSerialNumber().toString();&&&&&&&&&&&&&String&DN=ca[0].getSubjectDN().toString();&&&&&&&&&&&&&}&&&&&&&&&&&%&&&&用Keytool和OpenSSL生成和签发数字证书转自: /blog/136943生成server端证书1)生成KeyPair生成密钥对keytool -genkey -alias tomcat_server -validity 365 -keyalg RSA -keysize 1024 -keypass 123456& -storepass 123456 -keystore server_keystore输入common name时,要和服务器的域名保持一致。2)生成证书签名请求keytool -certreq -alias tomcat_server -sigalg MD5withRSA -file tomcat_server.csr -keypass 123456 -storepass 123456 -keystore server_keystore3)用CA私钥进行签名,也可以到权威机构申请CA签名。&& openssl ca -in tomcat_server.csr -out tomcat_server.crt -cert ca.crt -keyfile ca.key -notext -f& 其中-notext表示不要把证书文件的明文内容输出到文件中去,否则在后面用keytool导入到keystore时会出错。4)导入信任的CA根证书到keystore&& keytool -import -v -trustcacerts& -alias my_ca_root -file ca.crt -storepass 123456 -keystore server_keystore5)把CA签名后的server端证书导入keystorekeytool -import -v -alias tomcat_server -file tomcat_server.crt -storepass 123456 -keystore server_keystore6)查看server端证书&& keytool -list -v -keystore server_keystore&可以看到tomcat_server的证书链长度是2生成client端证书1)生成客户端CSR&& openssl genrsa -des3 -out tomcat_client.key 1024openssl req -new -key tomcat_client.key -out tomcat_client.csr -f2)用CA私钥进行签名,也可以到权威机构申请CA签名openssl ca -in tomcat_client.csr -out tomcat_client.crt -cert ca.crt -keyfile ca.key -notext -f3)生成PKCS12格式证书openssl pkcs12 -export -inkey tomcat_client.key -in tomcat_client.crt -out& tomcat_client.p124)使用Keytool列出pkcs12证书的内容:&& keytool -rfc -list -keystore tomcat_client.p12 -storetype pkcs12&--------------------------------keytool可以导出.p12后缀名的个人证书吗?好像不行,keytool产生的证书是JKS编码的除了keytool,还有很多方法可以完成对keystore里面证书的操作!比如1、用KeyTool结合pkeytool导出私钥和证书,然后用openssl将私钥和证书合并成p12格式,具体命令请参考pkeytool和openssl帮助2、图形工具portecle,直接导出p12格式3、KeyTool GUI 1.6,图形界面4、keystore explorer,需要付费etc.--------------------------------------------如何用Tomcat和Openssl构建HTTPS双向认证环境(HTTPS客户端认证)出处:&--------------------------------------------[OpenSSL示例]HTTPS中间人攻击&--------------------------------------------<SPAN class=javascript.
测试https应用 12:01:19&&& 公司需要一个https加密的网站,可以用Jmeter进行测试的时候,查看执行结果树的时候,总是出现重定向错误,于是上网搜索资料,查询到如下的一篇文章,根据里面的说明,修改jmeter的启动文件,居然成功了,于是转载在这里&&& 实验室的项目是做关于 service的security产品,主要是对soap消息进行加密签名。上一次的是将单纯调用web service和应用我们的security产品后的web service进行对比,然而差距还是相当明显的,尤其是在高并发的时候,毕竟中间的加密和签名过程是相当消耗时间的。上次review的时候,老师就说性能有很大的程度可以提高,我本来想说基本没太多的空间可以优化(除了之后会加入的线程池,应该会有小幅度性能提升),但是苦于没有数据支持。正好这两天为了准备开题,一直在看一些文章,看到网上有人提到,SSL + WS-Security = Web Service安全保障,主张用https的方式来传输soap消息。虽然不是什么很好的方法,不过不是正好拿来作为产品测试对比的对象嘛。&&& tomcat上已经配置好了axis,通过http访问soap消息是没有问题了。但是还没有配置https,所以按着官方文档开始干活了。首先用keytool生成服务器段的keystore:keytool -genkey -alias tomcat -keystore ktomcat.keystore&&& 注意,alias的密码要与keystore的密码一致,tomcat文档上是这么说的。接着是修改了server.xml:&Connector&&&&&&&&&& 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之后,输入进行验证(注意是8443哦,我一开始居然傻乎乎的输入8080^_^)&&& 接着设置客户端的trustStore,jmeter需要它来信任tomcat服务器段的证书keytool -export -alias tomcat -keystore ktomcat.keystore -file tomcat.crtkeytool -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.Providerssl.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.keystorejavax.net.ssl.keyStore=/home/flyerhzm/software/jakarta-jmeter-2.2/kclient.keystore#The password to your keystorejavax.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居然不起作用,害我辛苦到现在。&&& 趁热打铁,测试了一下通过https访问web service,果然比应用我们的security产品要多消耗1倍多的时间,赞,终于有数据可以说服老师了,哈哈。&

我要回帖

更多关于 大神p图案例 的文章

 

随机推荐