- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个 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/
我有一个 java web 项目,我使用了很少的证书来联系 URL。现在,我已将项目作为 WAR 文件部署到 Unix 服务器中,但我的项目存在证书问题。 我在本地存储中有证书,我需要将它们放在 Un
我是一名优秀的程序员,十分优秀!