当前位置:首页 > 问答 > 正文

Oracle报错|证书类型 ORA-28175:incorrect certificate type 故障修复与远程处理

Oracle报错|证书类型 ORA-28175: incorrect certificate type 故障修复与远程处理

场景引入

"小李正忙着处理公司核心数据库的证书更新,突然系统弹出一条红色错误:ORA-28175: incorrect certificate type,他心头一紧——这证书明明是按规范生成的,怎么Oracle就不认了呢?更麻烦的是,这套系统还连着远程办公的几十号人,现在连不上数据库,同事们的电话已经快打爆了……"

如果你也遇到过类似情况,别慌!这种报错通常和证书格式或配置有关,下面我们就来一步步拆解问题原因和解决方案。


错误原因分析

ORA-28175的本质是Oracle数据库无法识别或接受当前提供的证书类型,常见诱因包括:

  1. 证书格式不符

    • Oracle要求特定格式的证书(如PKCS#12或PEM),但实际提供的可能是DER、JKS等不兼容类型。
    • 证书链不完整(缺少中间CA证书或根证书)。
  2. 密钥用法不匹配

    证书的"Key Usage"未包含"Digital Signature"或"Key Encipherment"等Oracle必需的权限。

    Oracle报错|证书类型 ORA-28175:incorrect certificate type 故障修复与远程处理

  3. 算法或强度问题

    • 使用SHA-1等弱哈希算法(Oracle 12c及以上版本可能默认拒绝)。
    • RSA密钥长度不足(如低于2048位)。
  4. 配置错误

    • sqlnet.oralistener.ora中指定的证书路径错误。
    • 证书文件权限问题(Oracle用户无读取权限)。

本地修复步骤

步骤1:验证证书基本信息

用OpenSSL检查证书类型和内容(假设证书文件为server.pem):

openssl x509 -in server.pem -text -noout

重点关注:

  • 证书类型:应为PEM(以-----BEGIN CERTIFICATE-----开头)或PKCS#12(.p12后缀)。
  • Key Usage:确认包含Digital Signature
  • 有效期:确保证书未过期。

步骤2:转换证书格式(如需)

如果证书是DER或其他格式,转换为PEM:

openssl x509 -inform DER -in certificate.der -out certificate.pem

步骤3:配置Oracle网络文件

修改$ORACLE_HOME/network/admin/sqlnet.ora,确保以下参数正确:

SSL_VERSION = 1.2
SSL_CLIENT_AUTHENTICATION = FALSE  # 若非双向认证
WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /path/to/wallet)))

步骤4:重启监听与服务

lsnrctl stop
lsnrctl start
sqlplus / as sysdba
> shutdown immediate;
> startup;

远程应急处理

若问题发生在远程环境,且无法立即登录服务器,可尝试:

  1. 临时降级SSL(仅限测试环境)
    sqlnet.ora中降低SSL版本要求(不推荐生产环境):

    Oracle报错|证书类型 ORA-28175:incorrect certificate type 故障修复与远程处理

    SSL_VERSION = 1.0
  2. 替换为兼容证书

    • 通过SFTP上传新证书(确保权限为oracle:oinstall)。
    • 使用orapki工具更新钱包:
      orapki wallet add -wallet /path/to/wallet -cert /path/to/cert.pem -pwd wallet_password
  3. 日志收集
    远程获取日志协助排查:

    cat $ORACLE_BASE/diag/rdbms/$ORACLE_SID/trace/alert_$ORACLE_SID.log | grep -i "ORA-28175"

预防措施

  1. 证书生成规范

    • 使用OpenSSL生成证书时指定-sha256-extendedKeyUsage serverAuth
    • 示例命令:
      openssl req -x509 -newkey rsa:2048 -sha256 -nodes -keyout key.pem -out cert.pem -days 365
  2. Oracle版本适配

    • 19c及以上版本建议使用PKCS#12格式钱包。
    • 11g等老版本需确认TLS 1.2支持性。
  3. 定期检查

    • 通过orapki wallet display验证钱包内容。
    • 设置证书过期提醒(可通过cronjob调用OpenSSL检查)。


ORA-28175虽令人头疼,但解决思路清晰:查格式→验配置→调权限→看日志,遇到远程紧急情况时,优先通过替换证书和调整SSL版本恢复服务,事后再彻底排查根因。

注:本文基于2025年8月前的Oracle技术文档及社区实践整理,具体操作请结合自身环境调整。

发表评论