oracle使用ssl+jdbc連接(1)


服務器端配置Wallet和生成證書(單向)

創建一個新的自動登錄wallet

 mkdir -p /data0/app/oracle/wallet
 orapki wallet create -wallet "/data0/app/oracle/wallet" -pwd WalletPasswd123 -auto_login_local

創建一個自簽名證書並將其加載到

orapki wallet add -wallet "/data0/app/oracle/wallet" -pwd WalletPasswd123 -dn "CN=`hostname`" -keysize 1024 -self_signed -validity 3650

檢查wallet的內容,需要注意的是自簽名證書既是用戶也是可信證書

orapki wallet display -wallet "/data0/app/oracle/wallet" -pwd WalletPasswd123

導出證書,以便稍后將其加載到客戶的wallet中

orapki wallet export -wallet "/data0/app/oracle/wallet" -pwd WalletPasswd123 -dn "CN=`hostname`" -cert /tmp/`hostname`-certificate.pem

檢查證書是否已按預期導出

 cat /tmp/`hostname`-certificate.pem

將pem證書下載至客戶端

keytool -import -trustcacerts -v -alias Mysql -file "server-certificate.pem" -keystore "oracle.jks"

jdbc代碼

import org.omg.CORBA.PRIVATE_MEMBER;

import java.sql.*;
import java.util.Properties;

public class OracleSslConnectionTest {
    private  static final String DB_SERVER_NAME="192.168.126.154";
    private  static final Integer SSL_PORT=2484;
    private  static final String SERVICE_NAME="orcl11g.us.oracle.com";
    private  static final String DB_USER="test";
    private  static final String DB_PASSWORD="test";
    private  static final String KEY_STORE_FILE_PATH="C:\\Users\\13468\\Desktop\\fsdownload\\oracle.jks";
    private  static final String KEY_STORE_PASS="WalletPasswd123";

    public static void main(String[] args) throws SQLException{
        final Properties properties = new Properties();
        final String connectionString=String.format(
            "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=%s)(PORT=%d))(CONNECT_DATA=(SERVICE_NAME=%s)))",
                DB_SERVER_NAME,
                SSL_PORT,
                SERVICE_NAME
        );
        System.out.println(connectionString);
        properties.put("user",DB_USER);
        properties.put("password",DB_PASSWORD);
        properties.put("oracle.jdbc.J2EE13Complaint","true");
        properties.put("javax.net.ssl.trustStore",KEY_STORE_FILE_PATH);
        properties.put("javax.net.ssl.trustStoreType","JKS");
        properties.put("javax.net.ssl.trustStorePassword",KEY_STORE_PASS);

        final Connection connection= DriverManager.getConnection(connectionString,properties);
        Statement stmt = connection.createStatement();
        ResultSet rs = stmt.executeQuery("select * from TEST");
        //4. 遍歷查詢結果
        while (rs.next()) {
            String ID = rs.getString("ID");
            String NAME = rs.getString("NAME");
            System.out.println(ID + "-" + NAME);
        }
    }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM