【问题标题】:Java send https request to a serverJava 向服务器发送 https 请求
【发布时间】:2018-10-04 22:41:26
【问题描述】:

我有一个 java 应用程序 dat 向我的服务器发送 https 请求。我必须创建一个密钥库:

keytool -import -file mycert.cer -alias myalias -keystore keystore.jks

并将其用作我的 java 应用程序中的信任库。但是我服务器上的证书有效期为一年。一年后证书更改。

那么这是否意味着我必须在发生这种情况时生成一个新的密钥库?还是有更好的方法来实现这一点?

【问题讨论】:

标签: java https certificate keystore truststore


【解决方案1】:

是的,通常每当证书更改时,您都必须在密钥库中上传新证书。

证书的目的是建立一个可信的连接。证书告诉您的程序,它试图访问的 URL 实际上是真实的 URL,而不是假的。

安全总是有代价的。每年更改证书对于它为避免任何 DNS 欺骗攻击而提供的安全性来说是一个很小的开销。

回答是否有更好的方法 - 是的,更好的方法是将证书导入同一个密钥库中。您无需更改密钥库。

你可以使用下面的命令来达到同样的效果:

keytool -import -file newcert.cer -alias mynewcertificate -keystore keystore.jks

在被要求时输入您的密钥库的密码。

【讨论】:

  • 谢谢你,但我看不出你给出的命令和我使用的命令有什么区别。您的意思是我可以只使用旧的密钥库并导入新的证书,而不是删除之前的证书并创建一个新证书吗?
  • 没错。您使用的命令和我给出的命令都是相同的,即用于将证书添加到密钥库。请注意,这些命令正在导入证书,而不是像您提到的那样创建密钥库。一年后,您将不得不对新的证书文件重复相同的过程。
【解决方案2】:

不是。您可以简单地将新证书添加到密钥库。一旦确定不再使用旧的,就可以将其从密钥库中删除。

【讨论】: