1.
OnWindows:
C:\>set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_16
C:\>set PATH=%JAVA_HOME%\bin;%PATH%
On Linux:
# exportJAVA_HOME=/usr/java/latest
# exportPATH=$JAVA_HOME/bin:$PATH
2.
打开命令行窗口,运行:
Keytool
应该能看到相关的帮助文本,否则检查你的java运行环境是否正确。
键入以下命令来生成一个自签名的服务器证书
keytool -genkeypair -alias tomcat -keyalgRSA -keysize 1024 -dname "CN=localhost, OU=Organization, O=CompanyName, L=City, S=State, C=US" -validity 365 -keystore keystore<eg: D:\tomcat.keystore>
Enter keystore password:<eg:tomcat>
这样就生成了证书,将证书放到合适的地方(任意地方都可以)。
Keytool –genkey–alias (证书名eg:
keytool -genkeypair-alias tomcat -keyalg RSA -keysize 1024 -dname "CN=localhost,OU=Organization, O=Company Name, L=City, S=State, C=US" -validity365 -keystore
keytool -genkey -alias tomcat -keyalg RSA-keystoree:/tomcat.keystore -validity 36500
keytool -genkey -alias lenny -keyalg RSA -keystoreC:\lenny -validity 36500 -keysize 512
其中lenny是别名,可以随便取;-keyalg RSA是加密算法;-keystore C:\lenny是生成的文件(在C盘下);
( 注意:填写具体信息时,"名字和姓氏"一定是你的域名或IP地址,比如我在实验室没有域名,IP地址为192.168.2.101,所以我的"名字和姓氏"填写的是192.168.2.101,所以实验室的其他电脑也可以使用https访问我的Web应用程序
3.使用方式:
有两种使用方式,一个是对tomcat的全局应用,一种是基于单个应用
1.》基于tomcat的全局应用:
修改%tomcat_home%\conf的web.xml,指定想要采用的url,下面为对/login采样https访问
- <login-config>
- <auth-method>CLIENT-CERT</auth-method>
- <realm-name>Client Cert Users-only Area</realm-name>
- </login-config>
- <security-constraint>
- <web-resource-collection >
- <web-resource-name >SSL</web-resource-name>
- <url-pattern>/login/*</url-pattern>
- </web-resource-collection>
- <user-data-constraint>
- <transport-guarantee>CONFIDENTIAL</transport-guarantee>
- </user-data-constraint>
- </security-constraint>
也就是会匹配所有的/login/*的请求
<!--
<Connector port="8443" protocol="HTTP/1.1"
SSLEnabled="true" maxThreads="150" scheme="https"
secure="true" clientAuth="false" sslProtocol="TLS"/>
-->
去掉ssl相关段的注释。
添加keystoreFile = “D:\tomcat.keystore”
添加keystorePass = “tomcat”
2》基于单个应用
修改%app_project%\WEB-INF的web.xml,指定想要采用的url,下面为对/ab/*采样https访问
注意:
- 采样https的端口默认是8443,如果需要路由需要单独配置
注意:
强制https访问
在tomcat\conf\web.xml中的</welcome-file-list>后面加上以下配置:
<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>
这样输入http://ip:8080/webproject会强制转到https://ip:8443/webproject
若https端口配置为其它端口了记得把http转接端口一起改了
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="<span style="color:#FF0000;">8443</span>" URIEncoding="UTF-8" />
4.
5.
6.
<!—
Require HTTPS for everything except /img(favicon) and /css.
-->
<security-constraint>
</security-constraint>
<security-constraint>
</security-constraint>
配置指定内容访问需要HTTPS
<!--定义哪些页面需要使用https,只需要后台使用即可。-->
<security-constraint>
</security-constraint>
7.
keytool -certreq -keyalg RSA -alias tomcat -fileserver.csr
-keystore<your_keystore_filename>
keytool -certreq -keyalg RSA -alias tomcat -fileserver.csr -keystore e:/tomcat.keystore
8.
openssl req -new-x509 -keyout ca.key -out ca.crt
*这一步可能提示什么无法签证什么的,忽略不计。
9.
Openssl ca -inserver.csr -out server.crt -cert ca.crt -keyfile ca.key.
10.
keytool -import -alias root -keystore<your_keystore_filename>
-trustcacerts -file<filename_of_the_chain_certificate>
keytool -import -alias root -keystore tomcat.keystore-trustcacerts -file
11.
keytool -import -alias tomcat -keystore<your_keystore_filename>
-file<your_certificate_filename>
导入证书时,可能会报der 错误,需要将server.crt 转换成 server.der文件
openssl x509 -in G:\SSL\server.crt -outG:\SSL\server.der - outform DER
12.
1.
2.
13.
进入$JAVA_HOME\jre6\lib\security中,运行:
keytool -import -alias jhkj -keystorecacerts -file<filename_of_the_chain_certificate>-trustcacerts
cacerts证书库的默认密码是:changeit
1.
keytool -list -keystore cacerts
2.
keytool -delete -alias jhkj -keystorecacerts
14.
15.
16.
17.
18.
New add
如果启动tomcate 无法加载或识别证书,删除 tomcate
上述红色部分是必须按顺序执行的。
删除证书:
keytool -delete -aliastomcat -keystore e:\tomcat.keystore -storepass tomcat