我正在部署一个通过SSL连接与第三方应用程序连接的应用程序。之前,我使用了这些证书,并将它们保存在构建包中,并从中挑选它们。现在,由于生产发行版数量有限,我需要对SSL证书进行外部化。到目前为止,我已经将从jre/lib/security/wasadm. via a SSLConnectionFactory.中提取的证书外部化了,但是有一些证书是cacert的一部分,需要作为环境变量(如-Djavax.net.ssl.trustStore=<URL to a Path on Server> )从PCF上的JAVA_OPTS中选择。
如何使用-D or JAVA_OPTS从其中检索trustStore。
Jdk -> 1.7xx
Target Environment -> PCF
environment OS -> Linux会钦佩这里的任何帮助。
发布于 2018-06-04 13:11:46
我已经解决了这个问题,从URL中选择文件,并把它放在我的war启动时,因此它解决了我的所有问题。谢谢!
发布于 2018-05-17 18:51:46
将它们保存在构建包中,并从中挑选它们。
如果可能的话,不要这样做。它要求您分叉构建包,这是很糟糕的。它会给您带来维护负担,并会降低您在Cloud上运行的应用程序部署更新和安全补丁的能力。
但是,也有一些证书是cacert的一部分,需要从PCF上的JAVA_OPTS中作为环境变量(如-Djavax.net.ssl.trustStore= )来选择。
我不知道你为什么要被迫走这条路。-Djavax.net.ssl.trustStore选项只是为JVM设置默认的信任存储。有时很方便,但也有缺点。
当您需要信任没有由知名CA签名的证书时,我建议您让自己的应用程序特定于信任存储,而不是向JVM的默认信任存储中添加更多的证书。
如果应用程序不依赖于系统特定的自定义(比如修改默认的信任存储),那么应用程序将更加可移植。更改默认的信任存储也是有问题的,因为JVM中运行的所有东西都使用它。如果您只是添加到默认的信任存储中,这通常是可以的,但是如果您试图从其中删除,您可能最终会破坏其他代码。另外,如果您正在使用自己的信任存储,则只能包含应用程序或应用程序中的特定服务所需的最少数量的证书(因为您可以以这种方式使用多个信任存储)。
我不知道您使用的是什么HTTP客户端,但是在HTTPClient 这里中有一个很好的例子。请参阅Custom SSL context示例。
撇开这些不说,如果您真的想调整运行在Cloud上的应用程序的JVM的默认信任存储,您只需要为您的应用程序修改JAVA_OPTS环境变量& restage。
例如:
cf set-env my-cool-app JAVA_OPTS '-Djavax.net.ssl.trustStore=path/to/my/new/default-truststore.jks'我相信您可以使用您的信任存储的相对路径,就像您将其与应用程序捆绑在一起一样。如果不是,/home/vcap/app是JAR/WAR文件根目录的路径,所以如果需要完整的路径,可以插入该路径。它需要是容器上的本地路径,但我不认为JVM支持远程路径/URL。
Jdk -> 1.7xx
你真的需要升级:)
https://stackoverflow.com/questions/50389794
复制相似问题