(三)关于https的单向验证配置
讲个概念,什么是单向验证什么是双向验证,通俗从效果来说,单向认证只要求站点部署了ssl证书就行,任何用户都可以去访问(IP被限制除外等),(晚些我们也会讲的简单的ip限制如何实现,)只是服务端提供了身份认证。
而双向认证则是需要是服务端需要客户端提供身份认证,只能是服务端允许的客户能去访问,安全性相对于要高一些.
1.tomcat的配置
server.xml
<!-- keystoreFile是证书的路径,与项目中systemconfig配置文件中位置一致 -->
<Connector SSLEnabled="true" clientAuth="false" keystoreFile="D:\certificateLocation\certificate.jks" keystorePass="changeit" maxThreads="150" port="443" protocol="HTTP/1.1" scheme="https" secure="true" sslProtocol="TLS"/>
<!-- clientAuth="false" 代表ssl单向验证,即只验证服务端-->
web.xml
<!-- 屏蔽http链接,所有http访问都重定向为https访问-->
<login-config>
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
<web-resource-collection >
<web-resource-name >SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
证书的生成与公钥的导入
工具类下载(需要一分积分)
http://download.csdn.net/detail/shaguatao/9607810
当然不希望花积分的朋友我大概讲下我的工具类的思路.配置文件的工具类可以自己实现,通过把配置文件转换成map(key-value)结构读取,其实也可以使用spring中的@value读取配置文件,这个我后面会讲到.证书生成类,是利用Java中的keytool工具生成的,要利用到命令行,而导入公钥的批处理文件是只要 传入公钥地址这一参数就可以的了.
当然导入证书的时候会让你是否确认该证书,在控制台回复Y按下回车键即可.
此时,你的webservice的客户端访问的地址就应该使用https协议了.并且我这里是使用了443端口(ssl协议的默认端口,这里起到省略端口号的作用)tomcat为了区分使用了8443作为默认的ssl通讯的端口号