Oracle 11.2.0.4 pre PSU Oct18 設置SSL連接

Oracle 11.2.0.4 pre PSU Oct18 設置SSL連接

  • 1 說明
  • 2 客戶端配置jdk環境
  • 3服務器檢查oracle數據庫補丁
  • 4設置ssl
    • a 服務器配置wallet
    • b 上傳測試腳本和配置文件到客戶端
    • c 服務器修改數據庫偵聽和sqlnet.ora
    • d 修改客戶端的sqlnet.ora和tnsnames.ora的連接符
    • e 修改java代碼的數據連接信息
  • 5 sqlplus連接測試
  • 6 jdbc測試連接

1 說明

本文介紹JDBC使用MD5進行SSL加密連接oracle數據庫

根據文檔《MD5 Certificates Deprecated (Doc ID 2454519.1)》,
打了如下數據庫相應補丁后, MD5就失效了。

DB 12.2.0.1, DB 12.1.0.2 + July 2018 PSU or later ,
DB 11.2.0.4 + Oct 2018 PSU or later,
DB 12.1.0.2 + MES415patch,
DB 11.2.0.4 + MES415patch will be impacted by this change.

在此之前還可以使用MD5. 打了上述補丁后,要使用JDBC_TLS 1.2連接。

根據文檔 Minimal Configuration for encryption-only SSL using JDBC/thin (Doc ID 1124286.1)
的說明(原文使用的連接是19c,但是19c的文檔已經改變, 12c的還有, 鏈接
https://docs.oracle.com/en/database/oracle/oracle-database/12.2/jjdbc/client-side-security.html#GUID-A0F5D4B2-C3DE-4DE6-A759-A3BF48450031
客戶端可以不配置wallet.

2 客戶端配置jdk環境

需要 jdk 1.6
文件: jdk-6u211-linux-x64.bin
以root在/usr/local/下執行,解壓到/usr/local/jdk1.6.0_211
建立soft link, ln /usr/local/jdk1.6.0_211 jdk.
在oracle用戶的PATH 前加入它/usr/local/jdk/bin.
export PATH=/usr/local/jdk/bin:$PATH

3服務器檢查oracle數據庫補丁

$ORACLE_HOME/OPatch/opatch lspatches.

對于升級了Oct 2018 PSU的11g,參考

  • How To Configure Oracle JDBC Thin Driver To Connect To Database Using
    TLS v1.2 (Doc ID 2436911.1),
  • https://blogs.oracle.com/developers/post/ssl-connection-to-oracle-db-using-jdbc-tlsv12-jks-or-oracle-wallets-122-and-lower

4設置ssl

a 服務器配置wallet

以oracle用戶登錄數據庫服務器
解壓此壓縮包jdbc_ssl_11g_nopatch_client_server_demo_2025-05-16-1245.tar.gz
到/home/oracle/scripts.
然后解壓服務器端的包jdbc_ssl_11g_nopatch_server.tar.gz
解壓出ssl_md5_only_server_wallet.sh
執行
cd server
./ssl_md5_only_server_wallet.sh

將建立/home/oracle/wallets文件,執行過程中顯示使用的md5加密算法。
腳本:

nome@manjaro:~/workdir/dev/jdbc_ssl/tmp/server$ cat ssl_md5_only_server_wallet.sh
#!/usr/bin/bash
# 此腳本生成server的wallet. 客戶端不需要wallet. ref: https://docs.oracle.com/en/database/oracle/oracle-database/12.2/jjdbc/client-side-security.html#GUID-6AC4159F-9A89-4DE7-B2F8-6E8AC67109CD
#數據庫服務器的sqlnet.ora 需要設置SSL_CLIENT_AUTHENTICATION = FALSEif [ -d /home/oracle/wallets ]; thenmv /home/oracle/wallets /home/oracle/wallets-`date +%y%m%d-%H%M%S`
fi
mkdir -p /home/oracle/wallets
cd /home/oracle/wallets #進入當前目錄orapki wallet create -wallet ./server_wallet -auto_login -pwd Welcome1_
orapki wallet add -wallet ./server_wallet -dn "CN=server" -keysize 1024 -self_signed -validity 365 -pwd Welcome1_
orapki wallet display -wallet ./server_wallet
orapki wallet export -wallet ./server_wallet -dn "CN=server" -cert ./server_wallet/cert.txt
# check the alg
openssl x509 -noout -text -in ./server_wallet/cert.txtnome@manjaro:~/workdir/dev/jdbc_ssl/tmp/server$

b 上傳測試腳本和配置文件到客戶端

登錄到客戶端,解壓到/home/oracle
cd /home/oracle
tar zxvf jdbc_ssl_11g_client_config_demo.tar.gz
將解壓到jdbc_ssl目錄下。

備份$ORACLE_HOME/network/admin/下缺省的 sqlnet.ora, tnsnames.ora
cd jdbc_ssl
cp *.ora O R A C L E H O M E / n e t w o r k / a d m i n 把 s q l n e t 目錄下的文件復制到 ORACLE_HOME/network/admin 把sqlnet目錄下的文件復制到 ORACLEH?OME/network/adminsqlnet目錄下的文件復制到ORACLE_HOME/network/admin

c 服務器修改數據庫偵聽和sqlnet.ora

[oracle@ora11g scripts]$ cd $ORACLE_HOME/network/admin
[oracle@ora11g admin]$ ls
listener.ora  samples  shrept.lst  sqlnet.ora  tnsnames.ora
[oracle@ora11g admin]$ cat listener.ora 
# listener.ora Network Configuration File: /oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = ora11g)(PORT = 1521))(ADDRESS = (PROTOCOL = TCPS)(HOST = ora11g)(PORT = 2484))(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))))ADR_BASE_LISTENER = /oracle/app/oracleSSL_CLIENT_AUTHENTICATION = FALSE
WALLET_LOCATION =(SOURCE =(METHOD = FILE)(METHOD_DATA =(DIRECTORY = /home/oracle/wallets/server_wallet)))
SSL_CIPHER_SUITES= (SSL_DH_anon_WITH_3DES_EDE_CBC_SHA, SSL_DH_anon_WITH_RC4_128_MD5,SSL_DH_anon_WITH_DES_CBC_SHA)[oracle@ora11g admin]$ cat sqlnet.ora
SSL_CLIENT_AUTHENTICATION = FALSE
WALLET_LOCATION =(SOURCE =(METHOD = FILE)(METHOD_DATA =(DIRECTORY = /home/oracle/wallets/client_wallet)
#      (DIRECTORY = /home/oracle/wallets/server_wallet)))SQLNET.AUTHENTICATION_SERVICES= (BEQ,TCPS, NTS)SSL_CIPHER_SUITES= (SSL_DH_anon_WITH_3DES_EDE_CBC_SHA, SSL_DH_anon_WITH_RC4_128_MD5,SSL_DH_anon_WITH_DES_CBC_SHA)

[oracle@ora11g admin]$

主要加入WALLET設置和TCPS的連接地址和端口。

d 修改客戶端的sqlnet.ora和tnsnames.ora的連接符

[oracle@source ~]$ cd $ORACLE_HOME/network/admin
[oracle@source admin]$ cat sqlnet.ora
# sqlnet.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)ADR_BASE = /u01/app/oracleSSL_CLIENT_AUTHENTICATION = FALSE
WALLET_LOCATION =(SOURCE =(METHOD = FILE)(METHOD_DATA =(DIRECTORY = /home/oracle/wallets/client_wallet)
#      (DIRECTORY = /home/oracle/wallets/server_wallet)))SQLNET.AUTHENTICATION_SERVICES= (BEQ,TCPS, NTS)SSL_CIPHER_SUITES= (SSL_DH_anon_WITH_3DES_EDE_CBC_SHA, SSL_DH_anon_WITH_RC4_128_MD5,SSL_DH_anon_WITH_DES_CBC_SHA)
[oracle@source admin]$ cat tnsnames.ora
orcl = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.91)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcl)))
orcldg = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.92)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orcldg)))
dup = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.92)(PORT = 1525))) (CONNECT_DATA = (SERVICE_NAME = orcldg)))testssl =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCPS)(HOST = 192.168.56.110)(PORT = 2484))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = dvlp)))[oracle@source admin]$ 

e 修改java代碼的數據連接信息

[oracle@source admin]$ cd
[oracle@source ~]$ cd jdbc_ssl/
[oracle@source jdbc_ssl]$ ls
ojdbc6.jar  run.sh  SSLTest.class  SSLTest.java  SSLTest.java.def  tmp
[oracle@source jdbc_ssl]$ cat SSLTest.java
import java.sql.*;
import java.util.Properties;
import oracle.jdbc.pool.OracleDataSource;public class SSLTest {
public static void main(String[] args) throws SQLException {
Connection conn = getConnection();
conn.close();
}public static Connection getConnection() throws SQLException {
OracleDataSource ods = new OracleDataSource();
ods.setURL("jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=192.168.56.110)(PORT=2484))(CONNECT_DATA=(SERVICE_NAME=dvlp)))");
Properties props = new Properties();
props.setProperty("user", "system");
props.setProperty("password", "oracle");
//props.setProperty("oracle.net.ssl_cipher_suites","(SSL_RSA_WITH_AES_512_CBC_SHA)");
props.setProperty("oracle.net.ssl_cipher_suites","(SSL_DH_anon_WITH_RC4_128_MD5)");
//props.setProperty("oracle.net.ssl_cipher_suites","(SSL_DH_anon_WITH_3DES_EDE_CBC_SHA, SSL_DH_anon_WITH_RC4_128_MD5,SSL_RSA_WITH_AES_128_CBC_SHA)");
//SSL_CIPHER_SUITES= (SSL_RSA_WITH_AES_128_CBC_SHA, SSL_DH_anon_WITH_3DES_EDE_CBC_SHA)ods.setConnectionProperties(props);Connection conn = ods.getConnection();
DatabaseMetaData dbmd = conn.getMetaData();
System.out.println(dbmd.getDatabaseProductVersion());
System.out.println("JDBC driver: " + dbmd.getDriverVersion());
System.out.println("JDBC URL: " + dbmd.getURL());
conn.setAutoCommit(false);
return conn;
}
}

5 sqlplus連接測試

[oracle@source admin]$ sqlplus system/oracle@testssl

SQL*Plus: Release 11.2.0.4.0 Production on Tue May 13 15:02:51 2025

Copyright ? 1982, 2013, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SYSTEM@testssl>exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@source admin]$

6 jdbc測試連接

[oracle@source jdbc_ssl]$ cat run.sh
#cp 1SSLTest.java SSLTest.java
javac -cp ojdbc6.jar SSLTest.java
java -cp .:ojdbc6.jar SSLTest
[oracle@source jdbc_ssl]$ ./run.sh
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
JDBC driver: 11.2.0.1.0
JDBC URL: jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=192.168.56.110)(PORT=2484))(CONNECT_DATA=(SERVICE_NAME=dvlp)))
[oracle@source jdbc_ssl]$

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/80290.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/80290.shtml
英文地址,請注明出處:http://en.pswp.cn/web/80290.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

BrepGen中的幾何特征組裝與文件保存詳解 deepwiki occwl OCC包裝庫

有這種好東西我怎么不知道 AutodeskAILab/occwl: Lightweight Pythonic wrapper around pythonocc 組裝幾何特征以創建B-rep模型 保存為STEP和STL文件細說 Fast 快速 Searched across samxuxiang/BrepGen Ill explain how BrepGen assembles geometric features to create B-r…

重慶 ICPC 比賽游記

2025.5.9 比賽前一天晚上,激動地睡不著覺,起來收拾了好多東西。(其實就四本書,剩下的全是零食……關鍵在于這四本書基本沒用。) 2025.5.10 學校喪心病狂的讓我們 6:20 到校門口集合坐車(據說是怕趕不上比…

0x08.Redis 支持事務嗎?如何實現?

回答重點 Redis 支持事務,但它的事務與 MySQL 等關系型數據庫的事務有著本質區別。MySQL 中的事務嚴格遵循 ACID 特性,而 Redis 中的事務主要保證的是命令執行的原子性和隔離性,即所有命令在一個不可分割的操作中順序執行,不會被其他客戶端的命令請求所打斷。 最關鍵的區…

佰力博科技與您探討表面電阻的測試方法及應用領域

表面電阻測試是一種用于測量材料表面電阻值的技術,廣泛應用于評估材料的導電性能、靜電防護性能以及絕緣性能。 1、表面電阻的測試測試方法: 表面電阻測試通常采用平行電極法、同心圓電極法和四探針法等方法進行。其中,平行電極法通過在試樣…

數據庫的規范化設計方法---3種范式

第一范式(1NF):確保表中的每個字段都是不可分割的基本數據項。 第二范式(2NF):在滿足1NF的基礎上,確保非主屬性完全依賴于主鍵。 第三范式(3NF):在滿足2NF的基…

產品經理入門(2)產品體驗報告

產品體驗報告大綱:重點在產品體驗——優點。 1.產品概括 可以從各大平臺搜產品介紹。 2.市場分析 按照產品方向分析各個指標——包括有效使用時間,市場規模等。 3. 用戶分析——對用戶通過各項指標畫像。 4.產品體驗——對各項功能與設計的體驗。 5.報告總結

[Java][Leetcode simple] 13. 羅馬數字轉整數

一、自己想的 只有提到的六種情況是-&#xff0c;其他都是 public int romanToInt1(String s) {int res 0;int n s.length();Map<Character, Integer> map new HashMap<>();map.put(I, 1);map.put(V, 5);map.put(X, 10);map.put(L, 50);map.put(C, 100);map.pu…

如何在 CentOS 7 虛擬機上配置靜態 IP 地址并保持重啟后 SSH 連接

在使用 CentOS 7 的虛擬機時&#xff0c;我們通常需要配置靜態 IP 地址&#xff0c;以確保在每次虛擬機重啟后能夠通過 SSH 連接。本文將介紹如何在 CentOS 7 系統中配置靜態 IP 地址&#xff0c;并確保配置在系統重啟后依然生效。 步驟 1&#xff1a;檢查虛擬機網絡接口 首先…

matlab求解問題

一、目的 掌握Matlab中函數求導、函數極值和極限問題的求解,能夠借助Matlab工具對簡單優化模型進行求解。 二、內容與設計思想 1、函數求導 1.1求解給定函數的一階導數&#xff1a;diff(y, x)用于對變量x求y的導數。 1.2求解給定函數的二階導數&#xff1a;在求出一階導數的…

C語言斐波那契數列

斐波那契數列&#xff08;Fibonacci sequence&#xff09;&#xff0c;又稱黃金分割數列 、兔子數列。由意大利數學家萊昂納多?斐波那契在 1202 年提出&#xff0c;源于其《算盤書》中一道兔子繁殖問題。定義&#xff1a;在數學上&#xff0c;該數列以遞歸形式定義。最常見的是…

AI浪潮:開啟科技新紀元

AI 的多面應用? AI 的影響力早已突破實驗室的圍墻&#xff0c;在眾多領域落地生根&#xff0c;成為推動行業變革的重要力量。 在醫療領域&#xff0c;AI 宛如一位不知疲倦的助手&#xff0c;助力醫生提升診療效率與準確性。通過對海量醫學影像的深度學習&#xff0c;AI 能夠快…

Ansys 計算剛柔耦合矩陣系數

Ansys 計算剛柔耦合系數矩陣 文章目錄 Ansys 計算剛柔耦合系數矩陣衛星的剛柔耦合動力學模型采用 ANSYS 的 APDL 語言的計算方法系統轉動慣量的求解方法參考文獻 衛星的剛柔耦合動力學模型 柔性航天器的剛柔耦合動力學模型可以表示為 m v ˙ B t r a n η F J ω ˙ ω J…

算法題(148):排座椅

審題&#xff1a; 本題需要我們找到最佳的排座椅方案&#xff0c;并輸出行&#xff0c;列方案 思路&#xff1a; 方法一&#xff1a;簡單貪心 由于題目會告訴我們有哪幾對的同學會交頭接耳&#xff0c;所以我們可以記錄下第幾行/第幾列上可以隔開的同學對數&#xff0c;而題目限…

企業級電商數據對接:1688 商品詳情 API 接口開發與優化實踐

在數字化浪潮席卷全球的當下&#xff0c;企業級電商平臺之間的數據對接已成為提升運營效率、增強市場競爭力的關鍵環節。作為國內知名的 B2B 電商平臺&#xff0c;1688 擁有海量商品資源&#xff0c;通過開發和優化商品詳情 API 接口&#xff0c;企業能夠快速獲取商品信息&…

【Cesium入門教程】第七課:Primitive圖元

Cesium豐富的空間數據可視化API分為兩部分&#xff1a;primitive API面向三維圖形開發者&#xff0c;更底層一些。 Entity API是數據驅動更高級一些。 // entity // 調用方便&#xff0c;封裝完美 // 是基于primitive的封裝// primitive // 更接近底層 // 可以繪制高級圖形 /…

Oracle APEX 必須輸入項目標簽型號顯示位置

1. 正常Oracle APEX中必須輸入項目標簽的紅星顯示在標簽文字左側&#xff0c;偏偏項目要求顯示在右側&#xff0c; 加入如下全局CSS代碼 .t-Form-label {display: flex;flex-direction: row-reverse;gap: 1px; }以上。

深入理解 TypeScript 中的 unknown 類型:安全處理未知數據的最佳實踐

在 TypeScript 的類型體系中&#xff0c;unknown 是一個極具特色的類型。它與 any 看似相似&#xff0c;卻在安全性上有著本質差異。本文將從設計理念、核心特性、使用場景及最佳實踐等方面深入剖析 unknown&#xff0c;幫助開發者在處理動態數據時既能保持靈活性&#xff0c;又…

項目QT+ffmpeg+rtsp(二)——海康威視相機測試

文章目錄 前言一、驗證RTSP地址的有效性1.1 使用VLC播放器驗證1.2 使用FFmpeg命令行驗證1.3 使用Python代碼檢查網絡連接1.4 檢查攝像頭Web界面1.5 使用RTSP客戶端工具二、關于IPV4的地址2.1 原來2.1.1 原因2.2 解決2.3 顯示前言 昨晚拿到一個海康威視的相機,是連接上了交換機…

Java-Collections類高效應用的全面指南

Java-Collections類高效應用的全面指南 前言一、Collections 類概述二、Collections 類的基礎方法2.1 排序操作2.1.1 sort方法2.1.2 reverse方法2.1.3 shuffle方法 2.2 查找與替換操作2.2.1 binarySearch方法2.2.2 max和min方法2.2.3 replaceAll方法 三、Collections 類的高級應…

中國30米年度土地覆蓋數據集及其動態變化(1985-2022年)

中文名稱 中國30米年度土地覆蓋數據集及其動態變化(1985-2022年) 英文名稱&#xff1a;The 30 m annual land cover datasets and its dynamics in China from 1985 to 2022 CSTR:11738.11.NCDC.ZENODO.DB3943.2023 DOI 10.5281/zenodo.8176941 數據共享方式&#xff1a…