tomcat配置HTTPS方式(单向)

一、生成数字证书

1、进入到jdk下的bin目录

2、输入如下指令

keytool -v -genkey -alias tomcat -keyalg RSA -keystore f:/server.keystore  -validity 3650

备注:

d:/tomcat.keystore是将生成的tomcat.keystore放到d盘根目录下。

"-validity 36500”含义是证书有效期,36500表示100年,默认值是90天

注意若要放到c盘,在win7系统下,需要以管理员身份进入到命令行中进行操作,否则是无法创建tomcat.keystore的。本例放到d盘下。 
如何以管理员身份进入到命令行下呢?开始->搜索框中输入cmd->等待(注意不回车)->出现cmd.exe->右键“以管理员身份运行”即可。

 3、输入keystore密码

密码任意,此处以winchampion为例,要记住这个密码,之后在进行server.xml配置时需要使用。

4、输入名字、组织单位、组织、市、省、国家等信息

注意事项:

A、Enter keystore password:此处需要输入大于6个字符的字符串

B、“What is your first and last name?”这是必填项,并且必须是TOMCAT部署主机的域名或者IP[如:gbcom.com 或者 10.1.25.251],就是你将来要在浏览器中输入的访问地址

C、“What is the name of your organizational unit?”、“What is the name of your organization?”、“What is the name of your City or Locality?”、“What is the name of your State or Province?”、“What is the two-letter country code for this unit?”可以按照需要填写也可以不填写直接回车,在系统询问“correct?”时,对照输入信息,如果符合要求则使用键盘输入字母“y”,否则输入“n”重新填写上面的信息

D、Enter key password for <tomcat>,这项较为重要,会在tomcat配置文件中使用,建议输入与keystore的密码一致,设置其它密码也可以

l  完成上述输入后,直接回车则在你在第二步中定义的位置找到生成的文件

5、输入之后会出现确认的提示

此时输入y,并回车。此时创建完成keystore。 
进入到D盘根目录下可以看到已经生成的tomcat.xml

6、进入tomcat文件夹 
找到conf目录下的sever.xml并进行编辑

7、编辑 

Windows:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" 
     maxThreads="150" scheme="https" secure="true" 
     clientAuth="false" keystoreFile="d:/tomcat.keystore" 
     keystorePass="deleiguo" sslProtocol="TLS" />

Linux:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               keystoreFile="/usr/local/tomcat8080/.keystore"
               keystorePass="winchampion" clientAuth="false" sslProtocol="TLS" />

注: 
方框中的keystore的密码,就是刚才我们设置的“winchampion”.

编辑完成后关闭并保存sever.xml

8、Tomcat启动成功后,使用https://127.0.0.1:8443 访问页面

页面成功打开即tomcat下的https配置成功。

9、应用程序HTTP自动跳转到HTTPS

在应用程序中web.xml中加入:

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

10、生成安全证书文件

keytool -export -alias tomcat -file F:/file.cer -keystore F:/server.keystore -validity 3650

然后输入d:/tomcat.keystore中的keystore密码

-file F:/file.cer 即为生成的cer文件,可直接点击安装

11、注意事项:

(1)    生成证书的时间,如果IE客户端所在机器的时间早于证书生效时间,或者晚于有效时间,IE会提示“该安全证书已到期或还未生效”

(2)    如果IE提示“安全证书上的名称无效或者与站点名称不匹配”,则是由生成证书时填写的服务器所在主机的域名“您的名字与姓氏是什么?”/“What is your first and last name?”不正确引起的

 

12、遗留问题:

(1)如果AC主机不能通过域名查找,必须使用IP,但是这个IP只有在配置后才能确定,这样证书就必须在AC确定IP地址后才能生成

(2)证书文件只能绑定一个IP地址,假设有10.1.25.250 和 192.168.1.250 两个IP地址,在证书生成文件时,如使用了10.1.25.250,通过IE就只能使用10.1.25.250 来访问AC-WEB,192.168.1.250是无法访问AC-WEB的。

二、导入公钥

 1、输入命令

keytool -import -file D:/file.cer –keystore F:/cacerts;

2、然后将cacerts文件复制到客户端JAVA_HOME的jre\lib\security目录下

三、客户端调用代码

package com.winchampion.taozhugong.ws;

import java.net.URL;

import javax.xml.namespace.QName;
import javax.xml.ws.Service;


public class TestCompanyService {
	static {
	    //for localhost testing only
	    javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(
	    new javax.net.ssl.HostnameVerifier(){
 
	        public boolean verify(String hostname,
	                javax.net.ssl.SSLSession sslSession) {
	        	System.out.println(hostname);
	            if (hostname.equals("localhost")) {
	                return true;
	            }
	            return false;
	        }
	    });
	}
	
	public static void main(String[] args) {
		/*CompanyServiceImplService service=new CompanyServiceImplService();
		System.out.println(service);
		com.winchampion.taozhugong.ws.client.CompanyService client= service.getCompanyServiceImplPort();
		//System.out.println(client.getCompanyInfo("上海通慧塑料厂", "310115000650043", "上海市浦东新区唐镇红星路598号","徐龙德","310224195607096617"));
		System.out.println(client.getCompanyInfo("上海通慧塑料厂", "310115000650043", "", "", ""));
		*/
		
		try {
		
			URL url = new URL("https://localhost:8443/CompanyPro/CompanyService?wsdl");
			
	        
			QName qname = new QName("http://ws.taozhugong.winchampion.com/", "CompanyServiceImplService");
			Service service = Service.create(url, qname);
			CompanyService client = service.getPort(CompanyService.class);
	        System.out.println(client.getCompanyInfo("上海通慧塑料厂", "310115000650043", "", "", ""));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wwwzhouzy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值