使用 -Djavax.net.ssl.trustStore 参数指定信任存储库路径和密码
时间: 2024-03-01 21:52:25 浏览: 60
好的,您可以按照以下步骤使用 -Djavax.net.ssl.trustStore 参数指定信任存储库路径和密码:
1. 找到您要运行的 Java 应用程序的启动脚本或命令行。
2. 在启动脚本或命令行中添加以下参数:
```
-Djavax.net.ssl.trustStore=<trustStore路径> -Djavax.net.ssl.trustStorePassword=<trustStore密码>
```
其中,<trustStore路径> 是您信任存储库的路径,<trustStore密码> 是您信任存储库的密码。
例如,如果您的信任存储库路径是 /home/user/cacerts,密码是 changeit,则可以添加以下参数:
```
-Djavax.net.ssl.trustStore=/home/user/cacerts -Djavax.net.ssl.trustStorePassword=changeit
```
3. 保存启动脚本或命令行,并重新启动 Java 应用程序。
这样,Java 应用程序将使用指定的信任存储库路径和密码来验证 SSL 证书。
相关问题
mac启动项目报错Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
根据提供的引用内容,报错"Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)"通常是由于SSL握手过程中出现问题导致的。决这个问题的方法是设置MySQL的jdbc参数为"useSSL=false"。下面是一个示例代码,演示如何在Mac上启动项目并解决这个报错:
```shell
java -Djdbc.drivers=com.mysql.jdbc.Driver -Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=truststore_password -Djavax.net.ssl.keyStore=/path/to/keystore -Djavax.net.ssl.keyStorePassword=keystore_password -Djavax.net.ssl.keyStoreType=JKS -Djavax.net.ssl.trustStoreType=JKS -Djavax.net.ssl.enabledProtocols=TLSv1.2 -Djavax.net.debug=ssl -jar your_project.jar
```
请注意替换以下参数:
- `/path/to/truststore`:指向您的信任库文件的路径。
- `truststore_password`:信任库的密码。
- `/path/to/keystore`:指向您的密钥库文件的路径。
- `keystore_password`:密钥库的密码。
- `your_project.jar`:您要启动的项目的jar文件。
这个命令将通过设置系统属性来配置SSL连接所需的参数,并启动您的项目。这样,您就可以解决报错"Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)"。
你上面的这行代码properties.setProperty("javax.net.ssl.trustStore", null);有问题,会报空指针
对不起,你是对的。如果将`javax.net.ssl.trustStore`设置为`null`,会导致空指针异常。正确的做法是将其设置为一个空字符串`""`,如下所示:
```java
properties.setProperty("oracle.net.ssl_cipher_suites", "<cipher_suite>");
properties.setProperty("javax.net.ssl.trustStore", "");
properties.setProperty("oracle.net.ssl_server_dn_match", "false");
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=<host>)(PORT=<port>))(CONNECT_DATA=(SERVICE_NAME=<service_name>)))", properties);
```
这样就可以跳过证书验证,连接Oracle数据库了。