配证书:
Getting Tomcat SSL (https) Working
1.Create a certificate keystore containing a single self-signed certificate by executing the following
command. Specify a password value of "changeit ". Note that this command creates both the certificate and the keystore
Windows: 进到%JAVA_HOME%\bin\目录下输入:
keytool -genkey -alias tomcat -keyalg RSA -keystore tomcat.keystore
产生一个tomcat.keystore 文件
Unix: $JAVA_HOME/bin/ 输入: keytool -genkey -alias tomcat -keyalg RSA -keystore tomcat.keystore
到D:\Tomcat 5.0\conf目录下输入: keytool -genkey -alias tomcat -keyalg RSA -keystore tomcat.keystore
输入keystore密码: changeit
您的名字与姓氏是什么?
[Unknown]: localhost
您的组织单位名称是什么?
[Unknown]: huawei
您的组织名称是什么?
[Unknown]: hell
您所在的城市或区
域名称是什么?
[Unknown]: hangzhou
您所在的州或省份名称是什么?
[Unknown]: zhejiang
该单位的两字母国家代码是什么
[Unknown]: ch
CN=localhost, OU=wict, O=hell, L=wuhan, ST=hubei, C=ch 正确吗?
[否]: y
输入 <tomcat> 的主密码
(如果和 keystore 密码相同,按回车): 这里我按了回车
2. Copy the keystore file to CATALINA_HOME/conf 拷贝到tomcat的conf下
3. Uncomment the "SSL
HTTP/1.1 Connector " entry in $CATALINA_HOME/conf/server.xml. Your entry should look like:
<!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
<!---->
<Connector port="8443" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" disableUploadTimeout="true"
acceptCount="100" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile= "/conf/tomcat.keystore "
truststoreFile= "/conf/tomcat.keystore "/>
添加后保存,浏览其中输入以下地址访问tomcat首页 https://localhost:8443
4. Copy the keystore file to the default file location of the Java Applications, then run the Java Application。 拷贝到工程目录下,注意,直接再工程这级目录下面。
5、java代码:
public static void main(String[] args) throws Exception {
//serverkeys是通过keytool生成的自己的证书
System.setProperty( "javax.net.ssl.trustStore", "tomcat.keystore");
System.setProperty( "javax.net.ssl.trustStorePassword", "changeit");
//connect to https https://www.sun.com
URL url = new URL( "https://localhost:8443");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod( "POST");
connection.setDoOutput(true);
connection.setDoInput(true);
System.out.println( "1--Conected to "+ connection.toString());
DataOutputStream(connection.getOutputStream());
StringBuffer outbuff = new StringBuffer();
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
outbuff.append(line);
}
in.close();
System.out.println( "3---Test : " + outbuff.toString());
}