研究了有一天了,最后一博讲解https,https接口也是以后接口开发中必定会碰到的,这里只是简单介绍一下简单的java工程中的实现,在更复杂的项目中必定有更优秀的框架来实现。
第一步先创建两个秘钥库,服务的库和客户端库,我这里都用keystore文件保存。
jdk自带的keytool命令生成各自的秘钥库
keytoo -keygen -alias server -keypass 123456 -keysize 1024 -keyalg RSA -validity 720 -keystore "e:/keystore/server.keystore" -storeypass 123456 -dname "CN=localhost,OU=sf,O=cib,L=sz,ST=gd,C=cn"
keytoo -keygen -alias client -keypass 123456 -keysize 1024 -keyalg RSA -validity 720 -keystore "e:/keystore/client.keystore" -storeypass 123456 -dname "CN=localhost,OU=sf,O=cib,L=sz,ST=gd,C=cn"
导出各自秘钥并导入到对方的秘钥库中
keytool -export -alias server -keystore "e:/keystore/server.keystore" -file "e:/keystore/cer/server.cer" -storeypass 123456
keytool -export -alias client-keystore "e:/keystore/client.keystore" -file "e:/keystore/cer/client.cer" -storeypass 123456
keytool -import -alias client -file "e:/keystore/cer/client.cer" -keystore "e:/keystore/server.keystore" -storeypass 123456
keytool -import -alias server -file "e:/keystore/cer/server .cer" -keystore "e:/keystore/client.keystore" -storeypass 123456
查看秘钥库内容
keytool -list -v -keystore -keystore "e:/keystore/server.keystore" -storepass 123456
配置tomcat server.xml服务器SSL请求 clientAuth="true" 为双向认证
<Connector SSLEnabled="true"
keystoreFile="E:\keystore\httpsweb.keystore"
keystorePass="changeit"
truststoreFile="E:\keystore\httpsweb.keystore"
truststorePass="changeit" scheme="https" secure="true"
clientAuth="true" sslProtocol="SSL"
maxThreads="150" port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"/>
配置web.xml
<servlet>
<servlet-name>httpsweb</servlet-name>
<servlet-class>com.wm.core.HttpswebServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>httpsweb</servlet-name>
<url-pattern>/ssl</url-pattern>