Даже после импорта самозаверяющего сертификата из базы данных Oracle в хранилище доверенных сертификатов он по-прежнему JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Даже после импорта самозаверяющего сертификата из базы данных Oracle в хранилище доверенных сертификатов он по-прежнему

Сообщение Anonymous »

У меня есть простое Java-приложение, которое открывает соединение с базой данных Oracle. База данных Oracle имеет самоподписанный сертификат. Я экспортировал самозаверяющий сертификат из кошелька Oracle и импортировал его в хранилище доверенных сертификатов Java cacerts.
Однако при запуске программы я все равно вижу ошибку:
javax.net.ssl|ERROR|01|main|2024-09-19 10:35:54.501 CEST|TransportContext.java:352|Fatal (CERTIFICATE_UNKNOWN): PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target (
"throwable" : {
sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Поскольку это самозаверяющий сертификат, «действительного пути сертификации» не существует, но если он находится в хранилище доверенных сертификатов, я ожидаю, что ему следует доверять и эта ошибка не должна возникать .
Код Java
package org.ibm;

import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.io.FileInputStream;
import java.security.KeyStore;
import java.security.cert.Certificate;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class OracleConnection {

public static void main(String[] args) throws Exception {

//Create a custom TrustManager

VerifyCertificate.verifyCert();
String url = "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=localhost)(PORT=5500))(CONNECT_DATA=(SERVICE_NAME=your_db))(SECURITY=(SSL_SERVER_CERT_DN=\"\")))";
Properties props = new Properties();
props.setProperty("user", "sys");
props.setProperty("password", "password");

try (Connection conn = DriverManager.getConnection(url, props)) {
System.out.println("Connected to the database successfully!");
} catch (Exception e) {
e.printStackTrace();
}
}
}

/home/pat/.sdkman/candidates/java/11.0.23-sem/bin/java -Djavax.net.debug=ssl -classpath /home/pat/Projects/clients/blm/oracle-ssl/target/classes:/home/pat/.m2/repository/com/oracle/database/jdbc/ojdbc8/19.8.0.0/ojdbc8-19.8.0.0.jar org.ibm.OracleConnection

Я использовал эту команду для импорта сертификата:
keytool -importcert -v -trustcacerts -cacerts -alias myselfsignedcert -file server_cert.pem -storepass changeit

➜ oracle-ssl git:(master) ✗ echo $JAVA_HOME
/home/pat/.sdkman/candidates/java/current

Откровенно говоря, я озадачен этой ошибкой, потому что во всей документации говорится, что если вы импортируете самозаверяющий сертификат в хранилище доверенных сертификатов Java, он должен ему доверять.
openjdk 11.0.23 2024-04-16
IBM Semeru Runtime Open Edition 11.0.23.0 (build 11.0.23+9)
Eclipse OpenJ9 VM 11.0.23.0 (build openj9-0.44.0, JRE 11 Linux amd64-64-Bit Compressed References 20240522_1104 (JIT enabled, AOT enabled)
OpenJ9 - b0699311c7
OMR - 254af5a04
JCL - 3d1045c3ea based on jdk-11.0.23+9)


Подробнее здесь: https://stackoverflow.com/questions/790 ... e-into-the
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»