设置 Grizzly 的密钥库以使用 jar 中的 jks
我正在尝试使用 com.sun.grizzly.SSLConfig.setKeyStoreFile() 为 Grizzly 设置 SSL。它只接受 String 作为输入(而不是 InputStream 或 File)。我想使用 JAR 文件中的 jks 文件。如果我传递一个 jar 路径的字符串(例如 C:\dir\my.jar!\resources\my.jks),它将失败。除了从 JAR 中解压缩文件之外,我如何将 JKS 用于 grizzly.
I'm trying to use com.sun.grizzly.SSLConfig.setKeyStoreFile() to set SSL for Grizzly. It only takes a String as input (not InputStream or File). I want to use a jks file that is within a JAR file. If I pass a string for a jar path (eg C:\dir\my.jar!\resources\my.jks), it fails. Other than just unzipping the file from the JAR, how can I use that JKS for grizzly.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
除了文件名之外,您似乎无法传递任何内容。如果您查看 source 并查看
validateConfiguration()
和createSSLContext()
方法,您会发现它正在传递keyStoreFile
变量直接放入FileInputStream
构造函数中。短期内,您可能会被迫解压缩并使用直接文件名。或者您可以重写上面列出的两个方法来正确验证和初始化 SSLContext。从长远来看,我会提交补丁。
It doesn't appear you can pass in anything other than a filename. If you view the source and look at the
validateConfiguration()
andcreateSSLContext()
methods, you'll see that it is passing thekeyStoreFile
variable directly into theFileInputStream
constructor.Short term, you're probably stuck with unzipping and using the direct file name. Or you could override the two methods listed above to properly validate and initialize the SSLContext. Long term, I'd submit a patch.
@Kevin的想法成功了!使用 grizzly-servlet-webserver 1.9.8,这是我的代码:
我采取了一些快捷方式(不记录异常,使用多个字符串常量等),但您可以明白这个想法。
@Kevin's idea worked! Using grizzly-servlet-webserver 1.9.8, here's my code:
I took a few shortcuts (not logging Exceptions, using several string constants, etc), but you can get the idea.