jboss ejb

加密客户端和服务器之间的通信可为您的系统提供改进的安全性和隐私保护。 这可能是客户的一项重要要求,尤其是在客户端或服务器需要在不受保护的网络中工作时。

本文向您展示了如何在JBoss AS 7中设置SSL加密的EJB调用。

服务器

在服务器端只需完成两件事:

  1. 使用专用/公用密钥对创建密钥库以进行加密和
  2. 在服务器配置中引用密钥库。

无论是否加密,应用程序的源代码都保持不变。

创建密钥

Java提供了工具keytool ,我们将使用它来管理密钥库和创建​​私钥/公钥对。 下面的示例使用RSA算法创建一对1024位密钥,并将它们添加到密钥存储server.keystore中 。 如果密钥库不存在,则将创建它。

keytool -genkey -alias jboss -keyalg RSA -keysize 1024 -keystore server.keystore -validity 365 -keypass 123456 -storepass 123456 -dname "CN=localhost, O=thoughts-on-java.org"

我们将需要将此密钥存储提供给JBoss应用服务器。 因此,我更喜欢将其存储在JBoss配置目录中。 但是,只要JBoss服务器可以访问它,就可以将其存储在所需的任何位置。

服务器配置

现在,我们必须在JBoss配置中引用密钥库。 因此,我们在应用程序领域的安全领域配置中添加了一个服务器标识元素。

以下代码片段显示了使用标准ApplicationRealm配置和位于JBoss配置目录中的server.keystore文件的示例配置:

<management><security-realms><security-realm name="ManagementRealm"><authentication><properties path="mgmt-users.properties" relative-to="jboss.server.config.dir"/></authentication></security-realm><security-realm name="ApplicationRealm"><server-identities><ssl><keystore path="server.keystore" relative-to="jboss.server.config.dir" password="123456"/></ssl></server-identities><authentication><properties path="application-users.properties" relative-to="jboss.server.config.dir"/></authentication></security-realm></security-realms>...

这就是需要在服务器端完成的所有工作。

客户

在客户端,我们需要执行以下操作:

  1. 将服务器的公钥导入客户端密钥库,
  2. 在EJBClientProperties中定义SSL加密,并
  3. 提供带有公用密钥JVM参数的密钥存储区的位置和密码。

导入密钥

首先,我们需要导出添加到服务器密钥库中的密钥对的公钥。 也可以使用keytool来完成:

keytool -export -keystore server.keystore -alias jboss -file server.cer -keypass 123456 -storepass 123456

如果密钥库不存在,则将创建它。

好的,现在我们可以将密钥添加到客户端密钥库中:

keytool -import -trustcacerts -alias jboss -file server.cer -keystore client.keystore -keypass 123456 -storepass 123456

EJBClientProperties

EJBClientProperties中没有太大的区别。 需要将属性remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLEDremote.connection.default.connect.options.org.xnio.Options.SSL_STARTTLS设置为true 。 其余的保持不变。

以下代码段显示了到服务器的SSL加密连接的创建以及SLSB的查找。

// define EJB client properties
final Properties props = new Properties();
// define SSL encryption
props.put("remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED","true");
props.put("remote.connection.default.connect.options.org.xnio.Options.SSL_STARTTLS","true");
// connection properties
props.put("remote.connections", "default");
props.put("remote.connection.default.host", "localhost");
props.put("remote.connection.default.port", "4447");
// user credentials
props.put("remote.connection.default.username", "test");
props.put("remote.connection.default.password", "1234");props.put("remote.connection.default.connect.options.org.xnio.Options.SASL_DISALLOWED_MECHANISMS","JBOSS-LOCAL-USER");
props.put("remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOPLAINTEXT","false");
props.put("remote.connection.default.connect.options.org.jboss.remoting3.RemotingOptions.HEARTBEAT_INTERVAL","600000");// create EJB client configuration
final EJBClientConfiguration clientConfiguration = new PropertiesBasedEJBClientConfiguration(props);// create and set a context selector
final ContextSelector<EJBClientContext> contextSelector = new ConfigBasedEJBClientContextSelector(clientConfiguration);
EJBClientContext.setSelector(contextSelector);// create InitialContext
final Hashtable<Object, Object> contextProperties = new Hashtable<>();
ejbURLContextFactory.class.getName();
contextProperties.put(Context.URL_PKG_PREFIXES,"org.jboss.ejb.client.naming");
InitialContext initialContext = new InitialContext(contextProperties);// lookup SLSB
GreeterRemote greeter = (GreeterRemote) initialContext.lookup("ejb:/test/Greeter!blog.thoughts.on.java.ssl.remote.GreeterRemote");
Assert.assertEquals("Hello World!", greeter.greet("World"));

JVM参数

好的,现在我们快完成了。 唯一缺少的是对客户端密钥存储的引用。 可以使用JVM参数javax.net.ssl.trustStore作为位置,并使用javax.net.ssl.trustStorePassword作为密钥存储区的密码来完成,例如:

-Djavax.net.ssl.trustStore=src\test\resources\client.keystore -Djavax.net.ssl.trustStorePassword=123456

使用JBoss AS 7设置SSL加密的EJB调用需要完成所有这些工作。

故障排除

如果存在任何通信问题,则可以设置-Djavax.net.debug = true以启用调试消息。

结论

在本文中,我们研究了使用JBoss AS 7设置加密的EJB调用的配置和代码更改,这可以在几分钟内完成,并为您的通信提供了改进的安全性和隐私保护。

翻译自: https://www.javacodegeeks.com/2014/05/ssl-encrypted-ejb-calls-with-jboss-as-7.html

jboss ejb

jboss ejb_使用JBoss AS 7进行SSL加密的EJB调用相关推荐

  1. 使用JBoss AS 7进行SSL加密的EJB调用

    加密客户端和服务器之间的通信可为您的系统提供改进的安全性和隐私保护. 这可能是客户的一项重要要求,尤其是在客户端或服务器需要在不受保护的网络中工作时. 本文向您展示了如何在JBoss AS 7中设置S ...

  2. jboss eap_HawtIO在JBoss EAP上(第二部分)

    jboss eap 我刚刚发布了一篇关于在JBoss Wildfly 8.1上运行HawtIO的条目 . 从那篇文章中,您将了解HawtIO的出色表现 ,以及它必须具备的所有 出色 插件,才能从单个仪 ...

  3. 启动Wildfly时遇到的错误- jboss.data-source.java:jboss/datasources/SCI_ODS is missing [jboss.jdbc-driv

    启动Wildfly时遇到的错误是: ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) JBAS ...

  4. Linux下Jboss安装使用+Jboss部署脚本

    Jboss是Java EE应用服务器(就像Apache是web服务器一样),专门用来运行Java EE程序的. JBoss的运行需要JAVA环境的支持,所以我们首先安装JDK. 本章环境: 系统:Ce ...

  5. MySQL:安装和基于SSL加密的主从复制(基于5.7)

    小生博客:http://xsboke.blog.51cto.com -------谢谢您的参考,如有疑问,欢迎交流 目录: --------mysql-5.7.13简介及安装 --------配置my ...

  6. SSL应用系列之二:为Web站点实现SSL加密访问

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://jeffyyko.blog.51cto.com/28563/141322 上一节中 ...

  7. 快速配置Windows 2003平台下实现 IIS(WEB)站点的安全(SSL加密技术!)

    [实验名称] 快速配置Windows 2003平台下实现 IIS(WEB)站点的安全(SSL加密技术!) [实验基本概念] A. 对于公用信息--------------------www.Sohu. ...

  8. ubuntu 12.04 配置vsftpd 服务,添加虚拟用户,ssl加密

    1.对于12.04的vsftpd 有一些bug,推荐安装版本vsftpd_2.3.5-1ubuntu2ppa1_amd64.deb apt-get install python-software-pr ...

  9. 使用JavaMail发送邮件,465端口开启ssl加密传输

    自己的项目在本地发邮件没任何问题.但部署到服务器,发送邮件显示连接异常.原来是云服务器出于安全考虑,关闭了服务器的25端口,而25端口是smtp的默认端口.所以使用465端口开启ssl加密传输 代码: ...

最新文章

  1. LeetCode Find Right Interval(二分)
  2. 杜克大学计算机科学专业,杜克大学计算机科学专业研究生留学申请条件高不高?...
  3. JavaScript实现找出一个数的质因数primeFactors算法(附完整源码)
  4. spring+websocket综合(springMVC+spring+MyBatis这是SSM框架和websocket集成技术)
  5. Halcon学习笔记:select_points_object_model_3d(3D对象模型阀值分割)
  6. iptables01
  7. 有前端基础学前端要多久?
  8. leftjoin数据量变多_你知道 Sql 中 left join 的底层原理吗?
  9. 开源 java CMS - FreeCMS2.7 单位管理
  10. 自学编程,如何找到自己的第一份程序员工作?
  11. 通过VBA将excel数据导入至word文档
  12. 图片转字符画(已打包)
  13. word方框中打对号
  14. TCP/IP网络编程 学习笔记_9 --域名系统(DNS)
  15. 人工蜂群算法求解TSP问题
  16. 如何在linux系统中安装虚拟机?
  17. HackTheBox - Unified
  18. Intel 内部指令---AVX编程基础
  19. 浅谈web1.0和web2.0的主要区别。
  20. 【问题】[已修改但尚未保存]/bin/bash: wq:未找到命令 Shell 已返回127

热门文章

  1. ssl1643-最小乘车费用【dp练习】
  2. ARC107——D - Number of Multisets
  3. 纪中B组模拟赛总结(2020.2.09)
  4. linux下离线安装gcc
  5. 性能优化之抛弃Calendar
  6. JavaFX官方教程(七)之使用FXML创建用户界面
  7. Java开发2018年值得学习的10大技术
  8. 为什么说Java中只有值传递(另一种角度)
  9. 关于Icon,Image,ImageIcon的简单的对比参考 上篇
  10. publiccms实现首页菜单栏下拉的方法