ssl - 如何在 unix 服务器中添加 SSLC 证书

标签 ssl ssl-certificate

我有一个 java web 项目,我使用了很少的证书来联系 URL。现在,我已将项目作为 WAR 文件部署到 Unix 服务器中,但我的项目存在证书问题。

我在本地存储中有证书,我需要将它们放在 Unix 服务器中,并且需要将它们添加到 Tomcat 中的 keytool 中。我该怎么做。

我能举个例子吗,我如何使用 keytool 做到这一点?

最佳答案

至少有3种方法可以处理这个问题:

  • 您可以将证书导入 JRE 的默认信任库(通常在 $JAVA_HOME/lib/security/cacerts 中)。这将影响所有使用该 JRE 的应用程序(除非它们覆盖默认设置)。您也需要对该 cacerts 文件具有写入权限才能执行此操作。

  • 您可以将证书导入您将配置为 Tomcat 默认信任库的本地 keystore 。通常,您可以复制默认的 cacerts 文件并将您的证书导入该副本,或者您可以创建一个新的 keystore 并仅导入您知道需要的证书(keytool -import -keystore ... 将创建 keystore 文件(如果不存在)。这可以在 tomcat 中通过在 catalina.sh(或 .bat)中设置一个额外的系统属性来完成:在 JAVA_OPTS 中,您可以添加 -Djavax.net.ssl.trustStore=/path/to/local/truststore.jks 例如(以及其他相关属性)。

  • 您可以使该证书仅供应用程序中的某些连接使用(或以编程方式设置默认的 SSLContext)。为此,您需要更改您的应用程序,以便它加载 keystore ,使用它来初始化 TrustManagerFactory,然后传递给 SSLContext。然后,如何使用 SSLContext 取决于您使用的客户端库。 this answer 中有一个示例.

无论哪种方式,您都可以使用以下方法将您的证书(无论是 CA 证书还是特定服务器证书)导入到您选择的信任库中:

keytool -import -file cert.pem -alias "some name" -keystore truststore.jks

(如果使用编程路线,您还可以在内存中创建您的 keystore 并动态加载证书文件,如 this answer 所示。使用 keystore 可能更容易,您可以评估其优缺点您要使用的部署。)

关于ssl - 如何在 unix 服务器中添加 SSLC 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24500316/

相关文章:

c# - 默认情况下 cookie 不安全但在 SSL 中安全

python - pip 不会安装任何东西,出现大量错误等

ssl - 无法在我的 AWS EC2 中的 apache 服务器上设置 SSL key

amazon-web-services - 使用以下方式生成和部署证书:Letsencrypt + Docker + AWS

java - SSLSocketFactory 和 HttpsURLConnection 在哪里工作不同?

android - 在我的应用程序中导入 keystore

asp.net - 共享相同 ASP.Net session Cookie 的独立应用程序

没有客户端证书的 c# TLS 客户端

所有域的 SSL 证书

GSM 调制解调器的 ssl 证书