Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以编程方式检索Glassfish';学生证书?_Java_Glassfish_Certificate - Fatal编程技术网

Java 以编程方式检索Glassfish';学生证书?

Java 以编程方式检索Glassfish';学生证书?,java,glassfish,certificate,Java,Glassfish,Certificate,我似乎找不到一个解释,说明如何从运行在Glassfish上的应用程序中以编程方式从Glassfish的密钥库获取证书——除了实际指定密钥库的本地系统路径 可能有一些工具可以从应用程序中访问这些内容,以便执行有用的工作?我的用例如下:我只想获取容器的密钥库,并使用客户机证书对远程服务器进行身份验证。我刚才在WebSphere上遇到了同样的问题。我们正在部署一个应用程序,该应用程序需要通过具有客户端身份验证的TLS访问其他应用程序。因此,我们的第一个想法是重用服务器TLS证书。除了指定密钥存储资源的

我似乎找不到一个解释,说明如何从运行在Glassfish上的应用程序中以编程方式从Glassfish的密钥库获取证书——除了实际指定密钥库的本地系统路径


可能有一些工具可以从应用程序中访问这些内容,以便执行有用的工作?我的用例如下:我只想获取容器的密钥库,并使用客户机证书对远程服务器进行身份验证。

我刚才在WebSphere上遇到了同样的问题。我们正在部署一个应用程序,该应用程序需要通过具有客户端身份验证的TLS访问其他应用程序。因此,我们的第一个想法是重用服务器TLS证书。除了指定密钥存储资源的路径外,没有其他方法可以执行此操作。我认为WebSphere文档的解释类似于“关注点分离”——SSL/TLS密钥存储只用于验证服务器与它的连接,而不是其他任何东西

如果您考虑这样的“服务器证书”的密钥使用/扩展密钥使用字段和可分辨名称,则该参数非常有效。DN是服务器主机名(用于主机名验证),扩展密钥的使用通常是“服务器身份验证”

尽管您的意图仍然有效,但如果证书还具有“客户端身份验证”扩展密钥用法(在我们的案例中是这样的)。如果是这样的话,国际海事组织将有效地为此目的重新使用该证书


但我在讨论中听到的最好的论点是:生产服务器由不同于实际应用程序开发人员的一群人维护。如果应用程序开发人员希望重用服务器密钥存储文件,那么服务器维护人员必须告诉他们密码,或者至少授予应用程序读取包含密钥存储密码的文件的读取权限。这两种方法的安全策略都是不可接受的。

这可能是个坏主意,尤其是当您需要自己访问容器的密钥库时。使用中的Java安全策略文件可能会扼杀您的任何机会。我认为最好是说明你的要求,而不是你的问题。通常,大多数人都会创建自己的密钥库和信任库,并使用它们而不是容器。我认为EJB不应该依赖本地文件系统。我正在尝试保护出站SSL连接的安全。不访问文件系统是一种良好的做法,仅适用于事务性工作。为日志记录器使用文件系统是可以的,对于许多其他活动(包括访问密钥库)也是可以的,但对于需要两阶段提交协议或类似协议的情况则不行。由于您正在打开一个SSL连接,可能无法进行任何事务恢复,因此可以阅读容器的密钥库。感谢您深思熟虑的回复!