1.生成密钥:
a.)首先生成一个pica.keystore(keystore密钥库)
备注:生产密钥库的路径最好在server服务器下。(如:jetty路径为${jetty.home}/etc/)
keytool -genkey -alias pica -keyalg RSA -dname "cn=localhost,ou=pica,o=wingware,l=china,st=beijing,c=cn" -keypass 123456 -storepass 123456 -keystore pica.keystore -validity 3600
此时会得到pica.keystore文件,[-keypass]是密钥的密码,[-storepass]是密钥库的密码,cn是域名,必须与cas服务器的域名相同(本地测试用localhost).
b.)从密钥库(pica.keystore)中导出证书pica.cer
keytool -export -trustcacerts -alias pica -file pica.cer -keystore pica.keystore -storepass 123456
c.)将证书(pica.cer)导入JDK的cacerts
keytool -import -trustcacerts -alias pica -file pica.cer -keystore “%JAVA_HOME%/jre/lib/security/cacerts” -storepass changeit
java中cacerts证书库默认密码为changeit
可以写一个批处理文件来执行上述命令。
2.配置jetty的ssl
jetty的配置修改/etc/ jetty-ssl.xml文件。
<Configure id="Server" class="org.eclipse.jetty.server.Server">
<!-- if NIO is not available, use org.eclipse.jetty.server.ssl.SslSocketConnector -->
<Call name="addConnector">
<Arg>
<New class="org.eclipse.jetty.server.ssl.SslSelectChannelConnector">
<Set name="Port">8443</Set>
<Set name="maxIdleTime">30000</Set>
<Set name="Acceptors">2</Set>
<Set name="AcceptQueueSize">100</Set>
<Set name="Keystore"><SystemProperty name="jetty.home" default="." />/etc/pica.keystore</Set>
<Set name="Password">123456</Set>
<Set name="KeyPassword">123456</Set>
<Set name="truststore"><SystemProperty name="jetty.home" default="." />/etc/pica.keystore</Set>
<Set name="trustPassword">123456</Set>
</New>
</Arg>
</Call>
</Configure>
备注:
<Set name="truststore"><SystemProperty name="jetty.home" default="." />/etc/keystore</Set>
<Set name="trustPassword">123456 </Set>
可以不设置,默认会取${JAVA_HOME}/lib/secutity/cacerts这个文件夹
3.启动jetty
java -jar start.jar etc/jetty.xml etc/jetty-ssl.xml
4.配置tomcat的ssl
连接器添加到server.xml文件中。
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="D:\Tomcat 6.0\bin\server.keystore"
keystorePass="123456" />
备注:keystoreFile为密钥库路径,keystorePass为密钥库的密码.
如果你希望客户端没有提供证书的时候SSL链接也能成功,也可以把clientAuth设置成want。
启动tomcat,访问 https://localhost:8443/,弹出一个安全警告的页面就OK了。
本地java访问https报错。
1.首先把lib\dynamic.12306.cn.crt证书导入到jdk的密钥库中
keytool -import -alias dukecert -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -file icq.net.crt -storepass changeit
-keystore密钥库路径
-storepass密钥库密码
输入keystore密码:changeit