Недавно наследуется старая Java-кодовая база, которая использует tomcat6 с apache, и я пытаюсь настроить среду dev. Я получаю код ORA-12649 («Неизвестный алгоритм шифрования или целостности данных») при вызове DriverManager.getConnection() через внешний интерфейс входа в JSP.tomcat6 Ошибка шифрования sqlnet
Есть целый ряд вещей, которые не имеют смысла:
- мы реализовали шифрование (с помощью настроек в slqnet.ora) на целевой БД, которая работает Oracle 11gR2, и она работает с версией производства одной и той же кодовой базы; он также работает с входящими соединениями sqldeveloper и т. д .; в основном, не было никаких проблем с реализацией шифрования на стороне db.
- код разработки такой же, как и производственная кодовая база (на данный момент времени)
- разработка tomcat6 такая же версия, как и производство установка
- , если я указываю разъем на другом дб, который не реализует шифрование, авторизация успешно с действительным именем пользователя и паролем
После начитанности через Oracle документации и форумах, tomcat6 документации (в частности, свернутой, как он обрабатывает переменную CLASSPATH) У меня есть c ome up empty.
Моя догадка заключается в том, что установка tomcat6 в системе dev не ссылается на правильные файлы jar, даже если у меня есть файл ojdbc6.jar в папке установки tomcat install lib. По словам Oracle, наличие ojdbc6.jar доступного должно просто работать, когда дело доходит до реализации этого типа шифрования от тонкого клиента, каким образом это приложение tomcat реализовано.
Вот как шифрование реализуется на стороне клиента; это компилируется без ошибок:
...
prop.setProperty(
OracleConnection.CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_LEVEL,
AnoServices.ANO_REQUIRED);
prop.setProperty(
OracleConnection.CONNECTION_PROPERTY_THIN_NET_ENCRYPTION_TYPES,
"(" + AnoServices.ENCRYPTION_AES256 + "," +
AnoServices.ENCRYPTION_3DES168 + "," +
AnoServices.ENCRYPTION_AES192 + ")");
// require the use of the SHA1 algorithm for data integrity checking
prop.setProperty(
OracleConnection.CONNECTION_PROPERTY_THIN_NET_CHECKSUM_LEVEL,
AnoServices.ANO_REQUIRED);
prop.setProperty(
OracleConnection.CONNECTION_PROPERTY_THIN_NET_CHECKSUM_TYPES,
"(" + AnoServices.CHECKSUM_SHA1 + ")");
...
Вот соответствующие строки в файле sqlnet.ora на стороне БД, которая, как известно, работать с несколькими клиентами:
SQLNET.ENCRYPTION_SERVER=required
SQLNET.ENCRYPTION_TYPES_SERVER=(AES256,AES192,3DES168)
sqlnet.crypto_checksum_server=required
sqlnet.crypto_checksum_types_server=(SHA1)
Это дб URL быть используется в файле web.xml TOMCAT в каталоге приложения:
jdbc:oracle:thin:@<my_db_name>:1521:<my_db_sid>
Мой файл context.xml реализует функцию «allowLinking», не уверен, если это имеет значение, но это не является стандартным, так что я» м, включая эту деталь. Это позволяет мне предоставить символическую ссылку в папке <webapps>
tomcat, которая указывает на правильное местоположение в моем репо. Разрешения в каталоге - это ОК, поскольку tomcat обслуживает страницы из этого местоположения.
<Context path="/<my_app_name>" allowLinking="true">