首页云计算 正文

简述Jboss的SSL的配置

2024-11-19 5 0条评论
  1. 首页
  2. 证书相关
  3. 简述Jboss的SSL的配置

简述Jboss的SSL的配置

发布日期:2017-02-15

SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。

Jboss服务器本身是支持SSL的下面是Jboss下的SSL的配置方法:

一、1.生成keystore

开始->运行->cmd
打开控制台,输入
keytool -genkey -alias tomcat -keyalg RSA

根据提示输入对应内容,效果如下:
E:\>keytool -genkey -alias tomcat -keyalg RSA
输入keystore密码: 820709

您的名字与姓氏是什么?
[Unknown]: 域名*.trustauth.cn

您的组织单位名称是什么?
[Unknown]: test
您的组织名称是什么?
[Unknown]: test
您所在的城市或区域名称是什么?
[Unknown]: china
您所在的州或省份名称是什么?
[Unknown]: beijing
该单位的两字母国家代码是什么
[Unknown]: cn

CN=test, OU=test, O=test, L=china, ST=beijing, C=cn 正确吗?
[否]: y
输入的主密码
(如果和 keystore 密码相同,按回车):

说明:输入的密码不要带特殊字符,否则在运行JBoss时可能会出错。

二、.将产生的.keystore(默认路径在“C:\Documents and Settings\用户名”下面)放到JbossHOME\server\default\conf下,重命名为你自己想要的名称例如Raymend. Keystore

三、打开%JbossHOME%\server\default\deploy\jbossweb-tomcat55.sar\server.xml,修改如下配置:xml 代码

<</SPAN>Connector port=”8443″ address=”${jboss.bind.address}” maxThreads=”100″ strategy=”ms”maxHttpHeaderSize=”8192″ emptySessionPath=”true” scheme=”https” secure=”true” clientAuth=”false”keystoreFile=”${jboss.server.home.dir}/conf/Raymend.keystore” keystorePass=”820709″ sslProtocol =”TLS” />
这样我们可以通过访问https://trustauth.cn:8443/进行测试。
(1)打开C:\jboss-5.1.0.GA\server\default\conf\bindingservice.beans\META-INF\bindings-jboss-beans.xml文件,将所有的8080都改为80,所有的8443改为443;

(2)打开C:\jboss-5.1.0.GA\server\default\deployers\jbossweb.deployer\web.xml文件,加上:
<security-constraint> <web-resource-collection> <web-resource-name>SSLHtmlAdaptor</web-resource-name> <description> An example security config that only allows users with the role JBossAdmin to access the HTML JMX console web application </description> <url-pattern>/</url-pattern> </web-resource-collection> <user-data-constraint> <description>Protection should be CONFIDENTIAL</description> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>

注:加在此处是对jboss下所有的项目生效,若想只对每个项目生效,则只对指定项目的web.xml文件中加入上述配置信息即可;

(3)修改C:\jboss-5.1.0.GA\server\default\deploy\jbossweb.sar\server.xml文件,
配置443端口的connector,80端口的connector的redirectPort设置为443,
8009端口的connector的redirectPort设置为443;

(4)当有些页面仍需要使用http访问时:假如希望/notice.html仍可通过http访问,其它页面只能通过

https访问

在(2)步骤c配置了之后,在此web.xml中加上:

<security-constraint>

<web-resource-collection>

<web-resource-name>SSLHtmlAdaptor</web-resource-name>

<description> An  example security config that only allows users with the role

JBossAdmin to access the HTML JMX console web application

</description>

<url-pattern>/notice.html</url-pattern>

</web-resource-collection>

<user-data-constraint>

<description>Protection should be  CONFIDENTIAL</description>

<transport-guarantee>NONE</transport-guarantee>

</user-data-constraint>

</security-constraint>

 

(5)通过https访问的页面,如果出现标签的src为http开头,则浏览器会提示警告信息。因此当访问这些页

面时,希望仍自动跳转http,从此页面跳转到其它页面时,希望又能自动跳转https。而步骤(3)、

(4)只能保证访问http能自动跳转到https,不能保证https自动切换到http。为了达到此种效果,我

省略了(3)和(4),在项目中加入了一个过滤器。此过滤器保证,当访问需要https访问的页面时,

若访问协议为http,则重定向为https访问,反之亦然。

 

(6)https与http的session共享问题:https与http相互切换时,相当于打开新的浏览器访问,session是

不会共享的。但现在的浏览器,当在一个窗口中访问某个主机的页面,然后访问另外一个主机的页面,

再返回第一个主机的页面,登录状态仍不会改变。因此,容易给开发者造成误会,http与https的切换

sessionId不会改变,即不需要考虑session不共享的情况。在多数情况下是这样,但也会经常出现不

共享的情况,因此我们需要进行改变:

 

通过本人自己写的代码测试发现,https与http进行切换时,若保证它们的sessionId一致,则

能达到共享session的目的。(开始时我以为http与https切换,就相当于从一台主机跳到另外一台主机

,即使它们的sessionId一致,也不能达到共享的目的,因为它们的session各在不同的session池中,

测试结果证明这种想法是错误的)

 

在步骤(5)中,http与https切换会重定向访问,此时给重定向的response添加一个Cookie,

Cookie名字为JSESSIONID,值为当前的sessionId即可。当重定向访问时有JSESSIONID值的Cookie

就会被传到服务器端,因此sessionId就和重定向之前的sessionId一致,达到session共享的目的。次

处只贴https重定向http时的部分代码,反向同理:

String uri = request.getRequestURI().toString();

if(request.getScheme().equals(“https”)){

for(String  str  :   unSSLUrlList){           //unSSLUrlList为需要通过http进行访问的页面地址集合

if(uri .endsWith(str)){

Cookie[] cookies = req.getCookies();

if(cookies != null){

for(Cookie c : cookies){

if(c.getName().equalsIgnoreCase(“JSESSIONID”)){

response.addCookie(c);

}

}

}

response.sendRedirect(“http://” + req.getServerName() + uri);

return;

}

}

}

此种方式只能使用在访问同一台主机的情况下,若访问不同的主机,重定向是不会把添加的Cookie传

过去的,此时基本上达到session共享的目的,但偶尔还是会出现不共享的情况,但比没有这一步骤强

很多。

此外还有一种方式,就是重定向时,把sessionId以参数的形式传递过去,即:

response.sendRedirect(“http://” + req.getServerName() + uri + “?sessionId=” + JSESSIONID);

再在过滤器的最前面加入以下代码:

String sessionId = request.getParameter(“sessionId”);

if(sessionId != null && sessionId.length()>0){

Cookie cookie = new Cookie(“JSESSIONID”, sessionId);

cookie.setMaxAge(-1);

response.addCookie(cookie);

response.sendRedirect(request.getScheme() + “://” + req.getServerName() + uri);

return;

}

相关搜索

  • jboss ssl配置
  • linux jboss ssl
  • jboss nginx配置ssl
  • jboss
  • jboss 部署
  • jboss下载
  • jboss tomcat
  • jboss tools
  • jboss官网

上一篇:PPTP,L2TP和SSL VPN的区别

下一篇:简述SSO,CAS,SSl的基本部署

相关新闻

  • SSL证书对网站访问速度有影响吗
  • 个人隐私数据泄露有哪些危害?如何预防?
  • 部署SSL证书有哪些常见的错误
  • 国际证书、国产证书和国密证书
  • 游戏开发为什么离不开代码签名?
  • 僵尸网络攻击手法与防范方式
  • SSL证书助力保障网络数据安全
  • 网站加密与不加密区别
  • SSL证书有哪些类型和价格差异
  • ca机构颁发的证书包括那些内容呢?
文章版权及转载声明

本文作者:admin 网址:http://news.edns.com/post/112369.html 发布于 2024-11-19
文章转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码