【发布时间】:2018-10-06 02:19:06
【问题描述】:
我使用 LetsEncrypt 的 CertBot 免费生成 PEM 文件。在其他语言中,只需几行代码和 PEM/密钥文件即可轻松启动 HTTPS 服务器。到目前为止,我在 java 中找到的解决方案过于复杂,我正在寻找更简单的解决方案。
- 我不想使用 java 的命令行“keytool”。我只想将我的 PEM/密钥文件拖放到我的 Eclipse 中,并使用 SSLContext 以编程方式启动 HTTPS 服务器。
- 我不想包含像 BouncyCastle 这样的大量外部库。有关使用 BouncyCastle 的假定解决方案,请参阅以下链接:How to build a SSLSocketFactory from PEM certificate and key without converting to keystore?
有没有更好/更简单的方法来做到这一点?
【问题讨论】:
-
CertBot(实际上来自 EFF 而不是 LetsEncrypt)通常会生成多个 PEM 文件,您需要所有这些文件而不仅仅是一个。即使不使用 APR,Tomcat 8.5 和 9 也可以(作为一项新功能)直接使用 PEM 文件进行配置,但我不知道它们如何或是否与 Eclipse 集成。
-
如果你有
-----BEGIN RSA PRIVATE KEY-----格式的密钥,加载它是相当复杂的,因为它是 PKCS#1 格式,AFAIK 不能用普通的 Java 轻松读取。 -
在 Java 中,您通常不会以编程方式创建服务器。这就是为什么这个过程不像你想象的那么简单。相反,您可以使用通用 Web 原语创建应用程序,然后将其部署到标准服务器上,例如为 HTTPs 配置的 Tomcat。有些工具和框架不能以这种方式工作,而是自行启动服务器,而这不再是您所追求的 plain Java 方式。
-
假设有一个 Web 应用程序存在问题,为什么您的 Java 服务器前面不能有一个像 nginx 或 apache 这样的 Web 服务器?他们知道如何很好地处理 pem 文件。
-
我认为您已经排除了所有简单的解决方案,抱歉。有一些简单的解决方案涉及将密钥转换为 Java 格式,您已使用 (1) 排除,或者使用可以读取 PEM 的库,您已使用 (2) 排除。
标签: java ssl https java-8 lets-encrypt