У меня есть простое 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
Даже после импорта самозаверяющего сертификата из базы данных Oracle в хранилище доверенных сертификатов он по-прежнему ⇐ JAVA
Программисты JAVA общаются здесь
1727077423
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)
Подробнее здесь: [url]https://stackoverflow.com/questions/79001658/even-after-importing-a-self-signed-certificate-from-an-oracle-database-into-the[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия