Oracle 19C 实战指南:数据库 Wallet 配置与加密最佳实践
·
一、引言
在 Oracle 19C 中,Wallet 是存储证书、密钥等安全信息的核心容器,广泛用于 SSL/TLS 加密连接、透明数据加密(TDE)等场景。本文将结合生产环境实践,详细讲解如何配置 Oracle Wallet,并解决常见问题。
二、Wallet 基础概念
Wallet 支持以下核心功能:
- SSL/TLS 加密:保护客户端与数据库的通信安全
- 透明数据加密(TDE):加密表空间或列级敏感数据
- 数据库链接加密:保护跨数据库访问的安全性
- 密钥管理:集中存储和管理加密密钥
三、环境准备
1. 系统参数检查
echo $ORACLE_HOME # 确认ORACLE_HOME路径
echo $ORACLE_SID # 确认数据库实例名
2. 创建 Wallet 目录
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/wallet
chmod 700 $ORACLE_BASE/admin/$ORACLE_SID/wallet # 权限必须为700
chown -R oracle:oinstall $ORACLE_BASE/admin/$ORACLE_SID/wallet # 设置属主
四、创建 SSL/TLS Wallet(自签名证书)
1. 生成自动登录 Wallet
orapki wallet create -wallet $ORACLE_BASE/admin/$ORACLE_SID/wallet -pwd WalletPass123! -auto_login
2. 生成自签名证书
orapki wallet add -wallet $ORACLE_BASE/admin/$ORACLE_SID/wallet -pwd WalletPass123! -self_signed -dn "CN=dbhost.example.com" -validity 3650
3. 验证证书
orapki wallet display -wallet $ORACLE_BASE/admin/$ORACLE_SID/wallet -pwd WalletPass123!
五、配置 TDE Wallet
1. 创建 TDE 专用 Wallet
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/tde_wallet
orapki wallet create -wallet $ORACLE_BASE/admin/$ORACLE_SID/tde_wallet -pwd TdePass123! -auto_login
2. 配置数据库参数
ALTER SYSTEM SET encryption_wallet_location = '(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=$ORACLE_BASE/admin/$ORACLE_SID/tde_wallet)))' SCOPE=SPFILE;
SHUTDOWN IMMEDIATE;
STARTUP;
3. 打开 TDE Wallet
ALTER SYSTEM SET encryption wallet open identified by "TdePass123!";
SELECT * FROM v$encryption_wallet; -- 验证状态
六、多租户环境(CDB/PDB)配置
1. 在 CDB$ROOT 配置 Wallet
ALTER SYSTEM SET encryption_wallet_location = '(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/path/to/wallet)))' SCOPE=SPFILE;
2. 在 PDB 中打开 Wallet
ALTER SESSION SET CONTAINER = pdb1;
ALTER SYSTEM SET encryption wallet open identified by "WalletPass123!";
七、网络配置(SSL 连接)
1. 修改 sqlnet.ora
WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = /u01/app/oracle/admin/orcl/wallet)
)
)
SSL_VERSION = 1.2
SSL_CLIENT_AUTHENTICATION = FALSE
2. 修改 listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = dbhost)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCPS)(HOST = dbhost)(PORT = 2484)) # SSL 端口
)
)
WALLET_LOCATION =
(SOURCE =
(METHOD = FILE)
(METHOD_DATA =
(DIRECTORY = /u01/app/oracle/admin/orcl/wallet)
)
)
3. 重启监听器
lsnrctl stop
lsnrctl start
八、验证与测试
1. SSL 连接测试
sqlplus sys/Password123!@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=dbhost)(PORT=2484))(CONNECT_DATA=(SERVICE_NAME=orcl))) as sysdba
2. TDE 功能验证
CREATE TABLESPACE tde_ts DATAFILE '/u01/app/oracle/oradata/orcl/tde_ts.dbf' SIZE 100M ENCRYPTION USING 'AES256' DEFAULT STORAGE (ENCRYPT);
九、常见问题与解决
1. ORA-28374:主密钥丢失
-- 重新生成主密钥
ALTER SYSTEM SET KEY IDENTIFIED BY "TdePass123!";
2. 权限错误
ls -ld $ORACLE_BASE/admin/$ORACLE_SID/wallet # 检查权限
chmod 700 $ORACLE_BASE/admin/$ORACLE_SID/wallet # 修复权限
3. 证书过期处理
-- 查看证书有效期
orapki cert display -wallet $ORACLE_BASE/admin/$ORACLE_SID/wallet -pwd WalletPass123! -cert 1
-- 替换证书(示例)
orapki wallet remove -wallet $ORACLE_BASE/admin/$ORACLE_SID/wallet -pwd WalletPass123! -user_cert
orapki wallet add -wallet $ORACLE_BASE/admin/$ORACLE_SID/wallet -pwd WalletPass123! -user_cert -cert new_cert.pem
十、最佳实践建议
- 定期备份:每周备份 Wallet 文件到离线存储
- 权限管理:严格限制 Wallet 目录访问权限
- 证书轮换:提前 30 天规划证书更新
- 监控配置:设置 Wallet 状态监控脚本
- 兼容性检查:确保数据库兼容参数 ≥ 11.2.0.0
十一、总结
本文详细讲解了 Oracle 19C 中 Wallet 的配置方法,涵盖 SSL/TLS 加密、TDE 配置、多租户环境等核心场景,并提供了常见问题解决方案。通过合理配置 Wallet,可显著提升数据库的安全性和合规性。在生产环境中,建议结合 Oracle 官方文档和实际业务需求,制定完善的密钥管理策略。
更多推荐

所有评论(0)