Java向服务器发送https请求

Java向服务器发送https请求,java,https,certificate,keystore,truststore,Java,Https,Certificate,Keystore,Truststore,我有一个java应用程序dat向我的服务器发送https请求。我必须使用以下内容创建密钥库: keytool -import -file mycert.cer -alias myalias -keystore keystore.jks 并在我的java应用程序中将其用作truststore。但是我服务器上的证书有效期为一年。一年后,证书发生变化 那么,这是否意味着发生这种情况时我必须生成一个新的密钥库?或者有更好的方法来实现这一点吗?是的,通常每当证书更改时,您必须在密钥库中上载新证书 证书的

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

keytool -import -file mycert.cer -alias myalias -keystore keystore.jks
并在我的java应用程序中将其用作truststore。但是我服务器上的证书有效期为一年。一年后,证书发生变化


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

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

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

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

要回答是否有更好的方法来执行此操作—是的,更好的方法是在同一密钥库中导入证书。您不需要更改密钥库

您可以使用以下命令来实现相同的功能:

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

请求时输入密钥库的密码。

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

从CA获取/购买服务器证书:谢谢,但我看不出您发出的命令与我使用的命令有什么区别。你的意思是我可以使用旧的密钥库,只导入新的证书,而不是删除以前的证书并创建新的证书吗?没错。您使用的命令和我给出的命令都是相同的,即用于向密钥库添加证书。请注意,这些命令正在导入证书,而不是像您提到的那样创建密钥库。一年后,您必须对新证书文件重复相同的过程。