java - 从证书、中间证书和私钥创建 keystore

标签 java apache ssl https keystore

<分区>

我如何配置一个(基于 java 的)vert.x 3 服务器来服务 https(在 ubuntu 云服务器环境中)给定工作集 1. 证书.cer,2. 中间.cer,和 3.私钥。

可以使用这三个文件中的相同文件在 ssl.conf 中使用以下配置成功配置 apache2 httpd(路径省略):

<VirtualHost>
  ...

  SSLCertificateFile   certificate.cer
  SSLCertificateKeyFile   privatekey.key
  SSLCertificateChainFile   intermediate.cer

  ...
</VirtualHost>

浏览器毫无怨言地接受了 https 连接。

然后我改用java ...

基于 java 的 vert.x 3 服务器至少需要一个 java keystore 文件和一个密码:

new HttpServerOptions()
.setSsl(true)
.setKeyStoreOptions( 
  new JksOptions()
  .setPath("keystore.jks")
  .setPassword("...")
  )
);

我说:......它“至少”需要一个 keystore 和一个密码,因为它可能需要更多......

浏览器告诉我:

www.mydomain.com uses an invalid security certificate. 
The certificate is not trusted because the issuer certificate 
is unknown. The server might not be sending the appropriate 
intermediate certificates. 
An additional root certificate may need to be imported. 
Error code: SEC_ERROR_UNKNOWN_ISSUER 

where www.mydomain.com 是正确的,令人惊讶的是,浏览器显示的有关证书的所有信息与我在上面使用 apache2 httpd 时的信息相同。

请展示将上述三个给定文件转换为 java keystore 以解决问题的完整过程,即请展示工作脚本(使用 ubuntu/linux 标准工具,如 java 的 keytool 和 openssl)。

学习如何使用这些工具测试结果的正确性也将是一种更大的乐趣。

由于几个原因这个问题不是重复的 - 我给出一个提示:

首先,我在这里询问 apache2 httpd 和基于 java 的 vertx 3 服务器的配置之间的区别。

其次,我想问的是如何将 3 个或更多组件组合成一个完整的 java keystore 。 Httpd 可以访问必要的第四个组件并隐式获取它。 Java 服务器不会那样做。缺少的组件必须明确包含在 keystore 中。因此,答案必须显示如何准确找到所需的组件(证书)并包含它们。

之前在本论坛中给出的答案并未解决该问题的核心(和其他不太重要的)方面。不太重要的是版本、证书类型和结果测试。作为进一步的提示,可能根本没有可靠的方法来测试安全性——这真的很遗憾,但我无能为力。

这个问题的一个重要特征是我要求的是针对该问题的特定答案——而不是其他任何问题。

最佳答案

我不知道这是否有帮助,但您可以使用工具 KeyStore Explorer 5.2 并以更图形化的方式导入/导出/合并 key 和存储,它几乎提供了您需要的所有操作。如果你想要一个脚本,那么......只需检查 keytool“API”。

关于java - 从证书、中间证书和私钥创建 keystore ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39723908/

上一篇:node.js - 如何在 AWS 上使用 SSL 创建 node.js 应用程序?

下一篇:java - 使用客户端身份验证实现 java SSL 和 TLS 服务器套接字

相关文章:

java - 迭代 ConcurrentHashMap 后使用 get()

macos - Mac OS X 雪豹上的 Apache 似乎无法运行

python - 资源暂时不可用 : mod_wsgi (pid=28433): Unable to connect to WSGI daemon process

SSL_library_init() 失败

amazon-web-services - 未创建 AWS 经典负载均衡器监听器,然后消失

java - -Djava.library.path 没有链接 .so 库

java - JPanel inside JScrollPane 绘画问题

java - springframework 版本 5.0.5.RELEASE 由 : java. lang.NoClassDefFoundError 引起:org/springframework/core/task/AsyncListenableTaskExecutor

apache - 使用 .htaccess 通过 index.php 重新路由所有请求,除了特定的一组请求

php - Xampp Zend_Mail_Protocol_Exception:无法找到套接字传输“ssl”-library\Zend\Mail\Protocol\Abstract.php:277