??xml version="1.0" encoding="utf-8" standalone="yes"?>
1Qhttp非常单,以纯文本(文?形式~码的请求和响应l成
2Qhttp是无状态的。一旦发送了一个httphQ客户和服务器之间的q接信息׃(x)被释放,有利于减服务器资源的消耗?br /> 3Qhttp的运行端?0Q在大多数防火墙上是公开?br /> 4Q行业认可?br /> 但是Http的缺点:(x)
1Q缺对异步消息的支?br /> 2Q消息传输的不可靠?br />
1.接口中实现的Ҏ(gu)和要求参C目了?/p>
2.不用担心大小写问?/p>
3.不用担心中文urlencode问题
4.代码中不用多ơ声明认?账号,密码)参数
5.传递参数可以ؓ(f)数组Q对象等...SSL协议基础
SSL协议位于TCP/IP协议与各U应用层协议之间Q本w又分ؓ(f)两层Q?/p>
SSL记录协议(SSL Record Protocol)Q徏立在可靠传输层协?TCP)之上Qؓ(f)上层协议提供数据装、压~、加密等基本功能?/p>
SSL握手协议(SSL Handshake Procotol)Q在SSL记录协议之上Q用于实际数据传输前Q通讯双方q行w䆾认证、协商加密算法、交换加密密钥等?/p>
在tomcat\conf\web.xml中的</welcome-file-list>后面加上以下配置:
2.单个应用强制https讉K
WEB-INF/web.xml?lt;/welcome-file-list>后面加上以下配置:
<login-config>要记录主要步骤备?/p>
1、进入到jdk下的bin目录
2、输入如下指?/strong>
keytool -v -genkey -alias tomcat -keyalg RSA -keystore d:/tomcat.keystore -validity 36500
附:(x)
d:/tomcat.keystore是将生成的tomcat.keystore攑ֈd盘根目录下?/p>
"-validity 36500”含义是证书有效期Q?/span>36500表示100q_(d)默认值是90?/span>
注意若要攑ֈc盘,在win7pȝ下,需要以理员n份进入到命o(h)行中q行操作Q否则是无法创徏tomcat.keystore的。本例放到d盘下?
如何以管理员w䆾q入到命令行下呢Q开?>搜烦框中输入cmd->{待Q注意不回RQ?>出现cmd.exe->右键“以管理员w䆾q行”卛_?
3、输入keystore密码
密码LQ此处以123456ZQ要Cq个密码Q之后在q行server.xml配置旉要用?
4、输入名字、组l单位、组l、市、省、国家等信息
5、输入之后会(x)出现认的提C?
此时输入yQƈ回R。此时创建完成keystore?
q入到D盘根目录下可以看到已l生成的tomcat.xml
6、进入tomcat文g?
扑ֈconf目录下的sever.xmlq进行编?
7、编?
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" keystoreFile="D:/AppServer/Tomcat/apache-tomcat-6.0.32/conf/tomcat.keystore"
keystorePass="deleiguo" sslProtocol="TLS" />
注:(x)
Ҏ(gu)中的keystore的密码,是刚才我们讄?#8220;123456”.
~辑完成后关闭ƈ保存sever.xml
8、Tomcat启动成功后,使用https://127.0.0.1:8443 讉K面
面成功打开即tomcat下的https配置成功?
9、应用程序HTTP自动跌{到HTTPS
在应用程序中web.xml中加入:(x)
单项SSLq接Q也是只是客户端验证服务器证书。tomcat中clientAuth="false"的时候,HTTPS单向验证如下Q?br />
单项认证Ӟ只需要设|客L(fng)信Q的证书库p。但是当是双向认证时Q还需要设|客L(fng)密钥库密码?/p>
HTTPS双向验证代码如下Q?br />
下面来说说可能会(x)遇到的异常:(x)
1. java.security.NoSuchAlgorithmException
一般来说是密钥库类型不对,如上面的sslKeyStoreType = "JKS" 却写成PKCS12?/p>
也有可能是证书的问题?/p>
2. java.net.UnknownHostException
服务端地址不对?/p>
3.java.net.SocketException: Unexpected end of file from server
q个异常和客L(fng)没有关系Q说明已l发送成功。是服务端的问题。有可能是防火墙的原因,也可能是服务端没处理客户端的响应?/p>
另外有h说当URLq长时也?x)发生此错误Q当使用URL发送数据时Q可以参考此意见?/p>
4.java.io.IOException:server returned HTTP response code :500
q个异常是服务端代码的问题。服务端相应代码执行时抛Z异常?/p>
最?如果q回的状态码?00 Q表C成功?/p>
pȝ需求:(x)
1?nbsp;
2?nbsp;
3?nbsp;
W一步:(x)为服务器生成证书
1?nbsp;
keytool -genkey -v -alias tomcat -keyalg RSA -keystore D:\home\tomcat.keystore -validity 36500
(参数要说明:(x)“D:\home\tomcat.keystore”含义是将证书文g的保存\径,证书文g名称是tomcat.keystore Q?#8220;-validity 36500”含义是证书有效期Q?6500表示100q_(d)默认值是90?
A、输入keystore密码Q此处需要输入大?个字W的字符?/span>
B?#8220;(zhn)的名字与姓氏是什么?”q是必填,q且必须是TOMCAT部vL的域名或者IP[如:(x)gbcom.com 或?10.1.25.251]Q就是你来要在览器中输入的访问地址Q,否则览器会(x)弹出警告H口Q提C用戯书与所在域不匹配。在本地做开发测试时Q应填入“localhost”
C?#8220;你的l织单位名称是什么?”?#8220;(zhn)的l织名称是什么?”?#8220;(zhn)所在城市或区域名称是什么?”?#8220;(zhn)所在的州或者省份名U是什么?”?#8220;该单位的两字母国家代码是什么?”可以按照需要填写也可以不填写直接回车,在系l询?#8220;正确吗?”Ӟ对照输入信息Q如果符合要求则使用键盘输入字母“y”Q否则输?#8220;n”重新填写上面的信?/span>
D、输?lt;tomcat>的主密码Q这较为重要,?x)在tomcat配置文g中用,输入与keystore的密码一_(d)讄其它密码也可?/span>
2?nbsp;
./keytool -genkey -alias tomcat -keyalg RSA -keystore /usr/local/ac/web/tomcat.keystore -validity 36500
(参数要说明:(x)“/etc/tomcat.keystore”含义是将证书文g保存在\?usr/local/ac/web/下,证书文g名称是tomcat.keystore Q?#8220;-validity 36500”含义是证书有效期Q?6500表示100q_(d)默认值是90?
A、Enter keystore passwordQ此处需要输入大?个字W的字符?/span>
B?#8220;What is your first and last name?”q是必填,q且必须是TOMCAT部vL的域名或者IP[如:(x)gbcom.com 或?10.1.25.251]Q就是你来要在览器中输入的访问地址
C?#8220;What is the name of your organizational unit?”?#8220;What is the name of your organization?”?#8220;What is the name of your City or Locality?”?#8220;What is the name of your State or Province?”?#8220;What is the two-letter country code for this unit?”可以按照需要填写也可以不填写直接回车,在系l询?#8220;correct?”Ӟ对照输入信息Q如果符合要求则使用键盘输入字母“y”Q否则输?#8220;n”重新填写上面的信?/span>
D、Enter key password for <tomcat>Q这较为重要,?x)在tomcat配置文g中用,输入与keystore的密码一_(d)讄其它密码也可?/span>
W二步:(x)为客L(fng)生成证书
keytool -genkey -v -alias mykey -keyalg RSA -storetype PKCS12 -keystore D:\home\mykey.p12
对应的证书库存放?#8220;D:\home\mykey.p12”Q客L(fng)的CN可以是Q意倹{双击mykey.p12文gQ即可将证书导入x览器Q客L(fng)Q?/span>
W三步:(x)让服务器信Q客户端证?/strong>
keytool -export -alias mykey -keystore D:\home\mykey.p12 -storetype PKCS12 -storepass password -rfc -file D:\home\mykey.cer
keytool -import -v -file D:\home\mykey.cer -keystore D:\home\tomcat.keystore
keytool -list -keystore D:\home\tomcat.keystore
W四步:(x)让客L(fng)信Q服务器证?/strong>
keytool -keystore D:\home\tomcat.keystore -export -alias tomcat -file D:\home\tomcat.cer
W四步:(x)配置Tomcat服务?/strong>
打开Tomcat根目录下?conf/server.xmlQ找到如下配|段Q修改如下:(x)
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true" maxThreads="150" scheme="https"
secure="true" clientAuth="true" sslProtocol="TLS"
keystoreFile="D:\\home\\test.keystore" keystorePass="123456"
truststoreFile="D:\\home\\test.keystore" truststorePass="123456" />
属性说明:(x)
W五步:(x)试
在浏览器中输?https://localhost:8443/Q会(x)弹出选择客户端证书界面,点击“定”Q会(x)q入tomcat主页Q地址栏后?x)?#8220;?#8221;图标Q表C本ơ会(x)话已l通过HTTPS双向验证Q接下来的会(x)话过E中所传输的信息都已经qSSL信息加密?br />
注意事项Q貌似导入证书的时候,最好导入到“个h”那一栏里面,貌似客户端的用户名不填写也是可以的,或者随便填写?br />
http://licg1234.blog.163.com/blog/static/13908233320121165356868/