我有一个java web项目,我使用了很少的证书来联系URL。现在我已将项目部署为Unix服务器中的WAR文件,并且我的项目存在证书问题。
我在本地商店有证书,我需要把它们放在Unix服务器上,需要将它们添加到Tomcat中的keytool
。我该怎么做。
我可以通过keytool获得一个示例吗?
答案 0 :(得分:1)
至少有3种方法可以解决这个问题:
您可以将证书导入JRE的默认信任库(通常在$JAVA_HOME/lib/security/cacerts
中)。这将影响使用该JRE的所有应用程序(除非它们覆盖默认设置)。您还需要对该cacerts
文件具有写入权限才能执行此操作。
您可以将证书导入到您将配置为Tomcat默认信任库的本地密钥库中。通常,您可以复制默认的cacerts
文件并将证书导入此副本,或者您可以创建新的密钥库并仅导入您知道所需的证书(keytool -import -keystore ...
将创建密钥库文件,如果它不存在)。这可以通过在catalina.sh
(或.bat
)中设置其他系统属性来在tomcat中完成:在JAVA_OPTS
中,您可以添加-Djavax.net.ssl.trustStore=/path/to/local/truststore.jks
例如(以及其他相关属性)
您可以使该证书仅由应用程序中的某些连接使用(或以编程方式设置默认的SSLContext
)。为此,您需要更改应用程序,以便加载密钥库,使用它初始化TrustManagerFactory
,并传入SSLContext
。然后,如何使用SSLContext
取决于您正在使用的客户端库。 this answer中有一个例子。
无论哪种方式,您都可以使用以下方法将证书(无论是CA证书还是特定服务器证书)导入您选择的信任库:
keytool -import -file cert.pem -alias "some name" -keystore truststore.jks
(如果使用编程路径,您还可以在内存中创建密钥库并动态加载证书文件,如this answer所示。使用密钥库可能更容易,由您来评估优缺点您要使用的部署。)
答案 1 :(得分:0)
我得到了答案。我们需要找到tomcat正在使用的java文件,我们需要将keytool添加到该特定的东西。
这是tomcat有cacerts .ie的地方。 tomcat使用的java。
等/ PKI /爪哇/ cacerts中
Keytool命令:
keytool -import -alias ttg-lys-cm1 -file /var/lib/certificates/ttg-lys-cm1.cer -keystore“/ etc / pki / java / cacerts”
一旦你这样做重启tomcat,它就可以了。
由于 pradeepa