一、https+xml服务端编写
1.1 创建证书文件
1.1.1 创建服务器KeyStore
keytool -genkey -alias server_jks_cennavi -keyalg RSA -keypass 123456 -storepass 123456 -keystore server.jks -validity 3650
1.1.2 导出服务端证书
keytool -export -trustcacerts -alias server_jks_cennavi -file server.cer -keystore server.jks -storepass 123456
1.1.3 创建客户端KeyStore
keytool -genkey -alias client_p12_cennavi -keyalg RSA -keypass 123456 -storepass 123456 -keystore client.p12 -validity 3650 -storetype PKCS12
1.1.4 导出客户端Cer证书
keytool -export -trustcacerts -alias client_p12_cennavi -file client.cer -keystore client.p12 -storepass 123456 -storetype PKCS12
1.1.5 交换证书
交换导入服务端和客户端证书,作为双方信任证书。
keytool -import -trustcacerts -alias client_p12_cennavi -file client.cer -keystore server.jks
keytool -import -trustcacerts -alias server_jks_cennavi -file server.cer -keystore client.jks
1.2 tomcat https配置
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="true" sslProtocol="TLS" keystoreFile="C:\Users\hsinghsu\server.jks" keystorePass="123456"
truststoreFile="C:\Users\hsinghsu\server.jks" truststorePass="123456"/>
注:以上配置为https双向验证,若只要https服务端的单向验证,则将clientAuth="true" 和truststoreFile="C:\Users\hsinghsu\server.jks" truststorePass="123456" 配置去掉即可。
1.3 服务端java代码编写
1.3.1 编写servlet服务端代码
编写servlet代码,用于获取用户https+xml/http+xml请求,解析请求后进行相应业务为逻辑处理返回相应信息给请求方。package com.hsinghsu.test.web.servlet;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.zip.GZIPOutputStream;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class TestInterfaceServlet extends HttpServlet
{
/**
* 对外接口主入口
* 用于获取用户请求,返回用户请求使用。
*/
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException
{
HttpServletResponse httpResponse = (HttpServletResponse)response;
HttpServletRequest httprequest = (HttpServletRequest)request;
httpResponse.setContentType("text/html;charset=UTF-8");
Map<String, String> mapHeader = getHeaderMap(httprequest);// 获取http头信息
Stri