如何在本地Oracle Express Edition配置SSL并通过cx_Oracle安全连接
Python cx_Oracle 安全连接实现方法
方式一:修改连接字符串(TCPS协议)
将原连接的TCP协议替换为TCPS,并指定SSL验证参数:
import cx_Oracle host = "localhost" ssl_port = 2484 service_name = "new_pdb" username = "testuser" password = "<password>" server_cert_dn = "CN=localhost" # 需与服务器证书的CN一致 # 构建SSL连接字符串 conn_str = ( f"{username}/{password}@(DESCRIPTION =" f"(ADDRESS=(PROTOCOL=TCPS)(HOST={host})(PORT={ssl_port}))" f"(CONNECT_DATA=(SERVICE_NAME={service_name}))" f"(SECURITY=(SSL_SERVER_CERT_DN=\"{server_cert_dn}\")))" ) # 初始化Oracle客户端(若需指定证书目录,可添加config_dir参数) # cx_Oracle.init_oracle_client(config_dir="./path/to/certs") conn = cx_Oracle.connect(conn_str) if conn: print("安全连接成功...") conn.close()
方式二:使用cx_Oracle高级连接参数(推荐)
通过显式参数指定SSL相关配置,代码可读性更强:
import cx_Oracle # 构建TCPS协议的DSN dsn = cx_Oracle.makedsn( host="localhost", port=2484, service_name="new_pdb", protocol="TCPS" ) # 建立安全连接 conn = cx_Oracle.connect( user="testuser", password="<password>", dsn=dsn, ssl_server_cert_dn="CN=localhost", ssl_version="1.2" ) print("安全连接成功...") conn.close()
注意事项
- 确保cx_Oracle版本与Oracle客户端版本兼容,两者均需支持SSL连接
- 若需双向认证(同时验证客户端证书),需将
SSL_CLIENT_AUTHENTICATION设为TRUE,并为客户端配置钱包,在Python连接时指定客户端钱包路径 - 自签证书仅用于测试,生产环境请使用权威CA签发的证书
内容的提问来源于stack exchange,提问作者Maulik Ramani
相关产品推荐
相关产品推荐

