https tomat

https相对安全的链接。

1.生成keystore:

命令行中C:\Java\jdk1.5.0_09\bin>

keytool -genkey -alias tomcat -keyalg RSA -validity 365

注:-alias tomcat 设定别名; -validity 365 证书有效期设为365天;

在输入国家之后,会问输入是否正确,键入: "Y" 表示确定。

生成证书过程中,提示设定<tomcat>的密码时,使用和keystore相同的密码。默认回车就可以了

生成的证书默认是放在当前系统用户的主目录下(C:\Documents and Settings\Administrator),复制至Tomcat的主目录以便于下一步中的server.xml的keystoreFile的值设定

将.keystore重命名为tomcat.keystore,并复制到tomato的根目录下

2.编辑tomcat的配置文件server.xml,去掉下面SSL Connector的注释,修改为如下:

1 <!-- Define an SSL HTTP/1.1 Connector on port 8443 -->
2 
3 <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
4 maxThreads="150" scheme="https" secure="true"
5 clientAuth="false" sslProtocol="TLS" 
6 keystoreFile="tomcat.keystore" keystorePass="mozilla"
7 />

这样就开放了8443端口。注意protocol。

这样就ok了。

java代码中,由于我们diy的证书是非法的,所以直接用URL =new URL("https://localhost:8443");是不可达的。

因此借助httpcomponents-client-4.1.3-bin.zip

 1 String msg="需要发送的消息";
 2 
 3 String result = "";
 4 try {
 5 // First create a trust manager that won't care.
 6 X509TrustManager trustManager = new X509TrustManager() {
 7 public void checkClientTrusted(X509Certificate[] chain,
 8 String authType) throws CertificateException {
 9 }
10 public void checkServerTrusted(X509Certificate[] chain,
11 String authType) throws CertificateException {
12 }
13 public X509Certificate[] getAcceptedIssuers() {
14 return null;
15 }
16 };
17 // Now put the trust manager into an SSLContext.
18 SSLContext sslcontext = SSLContext.getInstance("SSL");
19 sslcontext.init(null, new TrustManager[] { trustManager }, null);
20 // Use the above SSLContext to create your socket factory
21 // (I found trying to extend the factory a bit difficult due to a
22 // call to createSocket with no arguments, a method which doesn't
23 // exist anywhere I can find, but hey-ho).
24 SSLSocketFactory sf = new SSLSocketFactory(sslcontext,SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
25 DefaultHttpClient httpclient = new DefaultHttpClient();
26 httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 1*1000);
27 httpclient.getConnectionManager().getSchemeRegistry().register(new Scheme("https",443 , sf));
28 HttpPost httpPost = new HttpPost("https://localhost:8443");
29 // Execute HTTP request
30 httpPost.setHeader("Authorization", "basic "+ "dGNsb3VkYWRtaW46dGNsb3VkMTIz");
31 httpPost.setHeader("Content-type", "application/xml");
32 httpPost.setEntity(new StringEntity(msg));
33 HttpResponse response = httpclient.execute(httpPost);
34 HttpEntity resEntity = response.getEntity();
35 InputStreamReader reader = new InputStreamReader(resEntity.getContent());
36 char[] buff = new char[1024];
37 int length = 0;
38 while ((length = reader.read(buff)) != -1) {
39 result += new String(buff, 0, length);
40 }
41 httpclient.getConnectionManager().shutdown();
42 } catch (Exception e) {
43 e.printStackTrace();
44 log.error("when send msg throw an exception:"+e);
45 }

我们还可以为tomcat指定java环境,编辑bin目录中catalina.sh文件在 #!/bin/sh的下一行添加

export JAVA_HOME=/usr/local/java/jdk1.6.0
export JRE_HOME=/usr/local/java/jdk1.6.0/jre

转载于:https://www.cnblogs.com/lansor/archive/2012/06/06/2537853.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值