[英]Connection reset - issue getting in Spring Boot application while trying to connect to AWS RDS using TCPS connection
[英]is there anyway to connect spring boot with tcps to database?
我正在使用帶有數據 JPA 的 oracle 數據庫 12c 和 spring boot 2.3。 我的目標是與錢包連接,將 TCPS 扔到數據庫中。 在我搜索時,網上沒有這方面的示例或指南。 任何人都可以解釋並展示一些例子嗎?
通常,在 Java 世界中,最常用的驅動程序是THIN ,它是由 oracle 提供的純 Java驅動程序實現,它使用套接字進行連接。 還有其他選擇:
來源: https : //stackoverflow.com/a/21711330/3957754
沒有其他選項可以從 java 連接到 oracle。
簡而言之,只是oracle提供的一個選項,用於在某些客戶端(java、c#、oracle sql developer、agents等)想要建立與數據庫實例的連接時隱藏用戶和密碼。
這是 Spring Boot 的傳統連接示例,其中需要用戶和密碼:
spring:
datasource:
url: jdbc:oracle:thin:@host:port:sid
username: user
password: pwd
有關更多詳細信息,請查看以下鏈接:
如果不需要用戶和密碼,有什么神奇之處? 當然沒有魔法。 與任何其他服務一樣,替代方案是文件。 因此,如果您查看以下鏈接,您會發現創建一些特殊文件的步驟很多,客戶端(java、c#、oracle sql 開發人員、代理等)應該使用用戶和密碼來代替這些文件:
經過大量的講座,我找到了這些鏈接:
其中與其他講座一樣,一種選擇是使用名為tnsnames.ora的經典文件,指定錢包文件的絕對路徑MY_WALLET_DIRECTORY :
MY_AWESOME_ID= (description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)
(host=adb.eu-frankfurt-1.oraclecloud.com))(connect_data=(service_name=oracon_frankfurtdb.atp.oraclecloud.com))
(security=(ssl_server_cert_dn="CN=adwc.eucom...")
(MY_WALLET_DIRECTORY=D:\_Downloads_\Oracle_DB_Client_19.3\network\admin\FRANKFURT)(SSL_VERSION=1.2)(SSL_SERVER_DN_MATCH=yes)))
將之前的與一些官方的tnsnames.ora模板進行比較,我們可以看到安全下的MY_WALLET_DIRECTORY可以完成這項工作:
MYSID=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = mydnshostname)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = MYSID)
)
)
另一個鏈接:
根據這個,我們可以THIN連接直接使用的tnsnames.ora通過其中包含的電子錢包文件到TNS_ADMIN參數的文件夾:
jdbc:oracle:thin:@wallet_dbname?TNS_ADMIN=/foo/bar/
或更優雅地
jdbc:oracle:thin:@wallet_dbname?TNS_ADMIN=$ORACLE_HOME/network/admin
此配置需要額外的庫18.3 JDBC 驅動程序。
如您所見,實現這種身份驗證需要很多瘋狂的步驟。 也不兼容 devops,因為需要手動或人工任務。 你可以使用 docker 來自動化。 反正這個實現是復雜而乏味的。
如果攻擊者能夠通過以下方式獲得您的用戶和密碼,為什么他無法訪問oracle錢包文件? :
我建議使用經典方式:使用用戶和密碼進行精簡,但具有以下安全配置:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.