Ето стъпките, които трябва да следвате, за да конфигурирате тънкия драйвер на Oracle JDBC за свързване към базата данни с помощта на TLS v1.2 (ако приемем, че конфигурацията на вашата база данни е правилна).
Стъпка 1:Приложете корекция за грешка 19030178 (не е необходима, започвайки от 12.2.0.1)
Ще трябва да приложите корекцията за грешка 19030178, която позволява TLSv1.2. Имайте предвид, че корекцията позволява TLSv1.2, но не го активира по подразбиране. Така че с 12.1.0.2 закърпения драйвер вие също трябва да зададете oracle.net.ssl_version='1.2'. Това свойство може да бъде зададено или като системно свойство (с помощта на -D), или чрез свойствата на източника на данни.
Стъпка 2:Инсталирайте JCE файлове
Без файловете с разширение за криптография на Java (JCE), силните пакети за шифроване (например TLS_RSA_WITH_AES_256_CBC_SHA256) няма да бъдат активирани. Така че, независимо дали използвате JDK7 или JDK8, трябва да инсталирате файловете с правила за юрисдикция на JCE Unlimited Strength. Тези файлове могат да бъдат намерени на уебсайта на Oracle.
Стъпка 3:Винаги използвайте най-новата актуализация на JDK
Не забравяйте да използвате най-новата актуализация на JDK7 или JDK8, защото са отстранени грешки, които са необходими за TLSv1.2.
Стъпка 4:Използвайте JKS файлове вместо портфейли
Изглежда, че вече сте го направили, но само за да видят другите:портфейлите са сложни за конфигуриране и използване с тънкия драйвер на Oracle JDBC, защото изискват допълнителни буркани и допълнителни свойства. JKS файловете, от друга страна, се поддържат естествено в JRE и според моя опит винаги са работили добре.
Стъпка 5:Когато използвате JDK7, изрично активирайте силни пакети за шифроване
Тази стъпка не е задължителна, когато използвате JDK8. С JDK7, ако използвате силен шифров пакет като TLS_RSA_WITH_AES_256_CBC_SHA256, тогава трябва да го активирате чрез свойството за връзка oracle.net.ssl_cipher_suites.
Стъпка 6:Отстраняване на грешки с -Djavax.net.debug=all
И накрая, ако срещнете повече проблеми, можете да включите проследяването, за да разберете какво става, като използвате -Djavax.net.debug=all.
====ПРИМЕР С JDK7 И 12.1.0.2 КРЪПКИ ТЪН ДРАЙВЕР =====
java -Doracle.net.ssl_version='1.2' -Doracle.net.ssl_cipher_suites='(TLS_RSA_WITH_AES_256_CBC_SHA256)' -Doracle.net.ssl_server_dn_match='true' -Djavax.net.ssl.trustStore='truststore.jks' -Djavax.net.ssl.trustStorePassword='welcome1' -Djavax.net.ssl.keyStore='keystore.jks' -Djavax.net.ssl.keyStorePassword='welcome1' JDBCTest 'jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=host)(PORT=1522))(CONNECT_DATA=(SERVICE_NAME=myservice))(security=(ssl_server_cert_dn="CN=name,O=org,L=city,ST=state,C=country")))' 'pdb1' 'welcome1'
====ПРИМЕР С JDK8 И 12.1.0.2 КРЪПКИ ТЪН ДРАЙВЕР =====
java -Doracle.net.ssl_version='1.2' -Doracle.net.ssl_server_dn_match='true' -Djavax.net.ssl.trustStore='truststore.jks' -Djavax.net.ssl.trustStorePassword='welcome1' -Djavax.net.ssl.keyStore='keystore.jks' -Djavax.net.ssl.keyStorePassword='welcome1' JDBCTest 'jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=host)(PORT=1522))(CONNECT_DATA=(SERVICE_NAME=myservice))(security=(ssl_server_cert_dn="CN=name,O=org,L=city,ST=state,C=country")))' 'pdb1' 'welcome1'