tomcat部署HTTPS

一:经过CA认证后会拿到两个证书文件

备注:多域名证书是指多个域名公用一个证书。

二:将证书转成jks格式的证书

1.可以使用证书转换的网站、例如https://www.trustasia.com/tools-cert-converter

2.填入信息,如下图:

备注:私钥密码可以不填入。

三:将下载的jks证书导入到tomcat中

1、将生成的.jks文件导入到tomcat/conf/下

 

2、配置tomcat-users.xml文件,开启管理员用户

3、配置server.xml文件,设置HTTPS端口

 

四、配置web.xml文件

4.1如果需要tomcat下所有应用都将HTTP转换为HTTPS时,配置tomcat下conf目录下的web.xml文件,在<web-app>下加入以下配置:

<login-config>  

    <!-- Authorization setting for SSL -->  

    <auth-method>CLIENT-CERT</auth-method>  

    <realm-name>Client Cert Users-only Area</realm-name>  

</login-config>  

<security-constraint>  

    <!-- Authorization setting for SSL -->  

    <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>

 

4.1如果需要某个应用将HTTP转换为HTTPS时,配置应用中目的web.xml文件,在<web-app>下加入以下配置:

<security-constraint>

<web-resource-collection>

<web-resource-name>OPENSSL</web-resource-name>

<url-pattern>/*</url-pattern>

</web-resource-collection>

<user-data-constraint>

<transport-guarantee>CONFIDENTIAL</transport-guarantee>

</user-data-constraint>

</security-constraint>

 

  • 访问HTTPS接口遇到的问题

访问HTTPS接口的时候(用IP访问),如果有证书验证错误,需要忽略证书验证,请使用httpClinet类时,最好使用4.2版本的,高版本忽略证书验证待处理。

使用HttpClintUtils.java工具类时使用enableSSL方法处理HttpClient对象,可以正常访问接口。

访问HTTPS接口的时候(用IP访问),会出现证书验证错误,需要忽略证书验证,请使用httpClinet类时,高版本忽略证书验证待处理。

使用HttpClintUtils.java工具类时使用enableSSL方法处理HttpClient对象,可以正常访问接口。

使用方法:

  if (url.contains("https")) {

    HttpClintUtils.enableSSL((DefaultHttpClient)httpClient);

    }

 

工具类代码:(jdk1.7+)

import java.security.cert.CertificateException;

import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.conn.ssl.X509HostnameVerifier;
import org.apache.http.impl.client.DefaultHttpClient;


public class HttpClintUtils {
    
    private static TrustManager truseAllManager = new X509TrustManager(){  
          
        public void checkClientTrusted(  
                java.security.cert.X509Certificate[] arg0, String arg1)  
                throws CertificateException {  
        }  
  
        public void checkServerTrusted(  
                java.security.cert.X509Certificate[] arg0, String arg1)  
                throws CertificateException {  
        }  
  
        public java.security.cert.X509Certificate[] getAcceptedIssuers() {  
            return null;  
        }  
        
    }; 
    
    public static void enableSSL(DefaultHttpClient httpclient){  
        //调用ssl  
         try {  
                SSLContext sslcontext = SSLContext.getInstance("TLS");  
                sslcontext.init(null, new TrustManager[] { truseAllManager }, null);  
                SSLSocketFactory sf = new SSLSocketFactory(sslcontext);
                sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
                Scheme https = new Scheme("https", sf, 443); 
                httpclient.getConnectionManager().getSchemeRegistry().register(https);  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
    }  
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值