您的位置:首页 > 理论基础 > 计算机网络

Glassfish4.1和Tomcat配置Https访问

2015-12-31 20:14 591 查看

一、Glassfish4.1配置Https

1. 证书配置

切换到目录“/root/glassfish-4.1/glassfish/domains/domain1/config”进行如下操作,注意上述目录需根据自己的Glassfish安装目录调整。

1、首先删除系统默认的s1as(注意s1as中间的是数字1而不是字母l;以下密码统一为changeit

keytool -delete -alias s1as -keystore keystore.jks -storepass changeit


2、生成新的keystore.jks

keytool -genkeypair -keyalg RSA -keysize 1024 -keystore keystore.jks -validity 18760 -alias s1as


运行上述命令后,需要输入一系列数据,如下图所示。特别注意的是“first and last name”(等同于common name等同于CN)必须是自己的域名,否则在java client发送请求时会出错,详见Java 使用访问https站点(自定义证书)



3、生成需要CA认证的CSR文件(非必须)

keytool -certreq -alias s1as -file s1as.csr -keystore keystore.jks -storepass changeit


4、生成证书,如果使用第三方的CA认证这一步不需操作。

keytool -export -alias s1as -keystore keystore.jks -file s1as.cer -storepass changeit


5、删除cacerts.jks,通过证书生成新的cacerts.jks

keytool -import -v -trustcacerts -alias s1as -file s1as.cer -keystore cacerts.jks -keypass changeit


欲了解上述步骤的详情,可参照官网文档GlassFish Server Open Source Edition Security Guide 的“To Generate a Certificate by Using keytool”小节进行。

2. Glassfish管理端配置(非必须)

在Glassfish的Web终端,找到Configuration ➤ Network Config- ➤ Network Listeners ➤ http-listener-2,选择SSL。输入步骤1得到的证书alias及keystore名称即可。

3. 重启Glassfish

进行上述配置,重启Glassfish并进入Web控制端后,即使输入正确的密码也不能进入。按Glassfish4.1安装及配置–远程访问出错的解决办法操作后再次重启即可。

二、Tomcat配置Https

相比较与Glassfish,Tomcat配置Https要简单点,原理也大致相同。

1. 生成证书

keytool -genkey -v -alias server -keyalg RSA -keystore test.keystore -storepass 123456


同样地,CN要配置成自己的域名。

2. 配置tomcat/conf/server.xml

打开注释或加入以下配置 ,

<Connector protocol="org.apache.coyote.http11.Http11NioProtocol"
port="8443" minSpareThreads="5" maxSpareThreads="75"
enableLookups="true" disableUploadTimeout="true"
acceptCount="100"  maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="D:/lib/server.keystore"
keystorePass="123456"/>


一般需要增加keystoreFile和keystorePass两个属性,指定你存放证书的路径(如:keystoreFile=”/home/asin/test.keystore”)和刚才设置的密码(如:keystorePass=”123456”)。关于其它各种选项的详细信息,可查阅Server Configuration Reference。

3. 重启tomcat

重启后,通过“https://localhost:8443”访问服务端。

三、配置应用使用 SSL

使用上述方式对Glassfish或Tomcat进行Https访问的配置以后,此时客户端访问应用既可以采用Https方式,也可使用Http方式,若想只使用Https方式,可做如下设置:

打开应用的 web.xml 文件,增加配置如下:

<security-constraint>
<web-resource-collection>
<web-resource-name>securedapp</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>


将 URL 映射设为 /* ,表示所有应用都要求 HTTPS 访问,而 transport-guarantee 标签设置为 CONFIDENTIAL 以便使应用支持 SSL。

进行以上设置,若仍使用命令
curl http://test.com:8080/App-Https/test[/code]采用http的方式访问,会报错如下,意为所请求资源已被重定向到” href="https://test.com:8181/App-Https/test" target=_blank>https://test.com:8181/App-Https/test“。

HTTP/1.1 302 Found
Server: GlassFish Server Open Source Edition  4.1
X-Powered-By: Servlet/3.1 JSP/2.3 (GlassFish Server Open Source Edition  4.1  Java/Oracle Corporation/1.8)
Location: https://test.com:8181/App-Https/test Content-Language: en-US


如果希望关闭 SSL ,只需将 CONFIDENTIAL 改为 NONE 即可。

若想了解上述步骤的详情,请查看官网文档SSL/TLS Configuration HOW-TO

参考文章

1.GlassFish3 配置https登录

2.Java安全通信:HTTPS与SSL

3.数字证书及安全加密(一)数字证书基本知识

4.数字证书及安全加密(二)tomcat单向SSL验证及服务调用

5.数字证书及安全加密(三)tomcat双向SSL验证及服务调用

6.数字证书及安全加密(四)使用CA签发的证书并验证证书链
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: