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

本文向您展示了如何在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 AS 7进行SSL加密的EJB调用相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

  7. Linux命令行下登录ssl加密的ftp

    作/译者:叶金荣(Email: ),来源:http://imysql.cn,转载请注明作/译者和出处,并且不能用于商业用途,违者必究. 由于某些BT的需求,把ftp的服务端改成ssl加密的,而标准的l ...

  8. mysql8强制用户开启ssl_MySQL8开启ssl加密

    1 概述 MySQL从5.7开始默认开启SSL加密功能,进入MySQL控制台后输入status可以查看ssl的状态,出现下图表示在使用ssl: 另外,ssl加密需要密钥与证书,可以使用openssl手 ...

  9. nginx配置ssl加密(单双向认证、部分https)

    nginx下配置ssl本来是很简单的,无论是去认证中心买SSL安全证书还是自签署证书,但最近公司OA的一个需求,得以有个机会实际折腾一番.一开始采用的是全站加密,所有访问http:80的请求强制转换( ...

最新文章

  1. 网友:这才是高质量人类女性!32岁清华女博士获奖百万
  2. 双谷人才财务管理(序)
  3. 重学TCP协议(10)SYN flood 攻击
  4. python数组排序sort_详解python中sort排序使用
  5. 怎么调出matlab的函数,matlab定义函数【搞定方法】
  6. 滴滴春节期间加强司机安全教育 考核通过才能上岗
  7. go语音protobuf_总结一下protobuf安装-Go语言中文社区
  8. Linux下安装流量监控工具iftop
  9. 测试移动信号频率的软件,移动设备的FM测试
  10. 超好玩的msn自制动画头像
  11. 虚拟机桥接模式联网设置
  12. 2021-07-18
  13. 连续时间与Balck-Scholes公式(上)(偏微分)
  14. vba 涉及合并取消合并单元格
  15. 用Python实现温度转换程序
  16. python+selenium实现12306模拟火车票的查询及预订
  17. oracle方案对象有表空间吗,oracle数据库中,实例、表空间、用户、方案、表、数据的关系例子...
  18. TFLite Interpreter
  19. 【016】基于51单片机的pwm加速减速步进电机Proteus仿真设计与实物设计
  20. 关于socket传输图片

热门文章

  1. 将Springboot项目放在服务器上一直运行
  2. 2的负x次幂图像_数学| NO.2,3 函数 T15
  3. 页面复杂对象传递参数 开发中遇到的问题
  4. 计算机硬件统的构成,计算机硬件统的构成部件.ppt
  5. impdp导入mysql_Oracle数据库的impdp导入操作以及dba_directories使用方法
  6. 中海达手部链接电脑安装软件_山东水文局:较大含沙量条件下中海达ADCP外接测深仪测流系统试验成功...
  7. java阻塞队列小结
  8. api restful_HATEOAS的RESTful服务。 记录超媒体API
  9. 自动化测试特定区域滑动_自动化用户特定实体的访问控制
  10. python异常值如何处理_如何处理异常