根本原因是oracle 11g自带的root ca证书于2010年12月31日过期且硬编码在安装包中,导致现代浏览器因ssl证书失效而拦截https连接;唯一可靠解法是应用官方补丁8350262并重建em资料库。
oracle 11g 的 em 控制台(即 dbconsole)在浏览器中报“证书过期”或“此网站的安全证书存在问题”,根本原因不是你本地时间不准,而是 oracle 自带的根证书(root ca)在 2010 年 12 月 31 日已过期,且该证书被硬编码在安装包里,无法自动更新。
这个证书用于 HTTPS 加密通信,一旦过期,现代浏览器(尤其是 IE11+、Chrome 60+、Edge)会直接拦截连接,不给“继续浏览”选项,或点了也跳不进去。
为什么 IE/Chrome 都报错,但换个浏览器有时能打开?
这是因为不同浏览器对证书校验的严格程度不同:
- IE 和 Edge 默认启用 Windows 根证书信任链,会检查 Oracle 自签名证书的签发者(
ORACLE.SSL)是否在系统信任列表中,而该 CA 已被标记为过期/无效 - Chrome 60+ 后默认禁用 RSA-1024 及以下密钥证书(
KB2661254补丁强化了这一限制),而 Oracle 11g 的证书正是 RSA-512 或 RSA-1024 - Firefox 独立维护证书库,有时会绕过 Windows 层级校验,所以偶尔能进;Chromium 内核的旧版 Chrome(如 v49)也可能侥幸通过
emctl secure dbconsole -reset 为什么经常失败?
执行 emctl secure dbconsole -reset 本意是重建 HTTPS 证书,但它依赖旧版 Oracle 的证书生成逻辑,仍会复用过期的根 CA 或生成同样弱密钥的新证书。
常见失败表现:
- 命令执行成功,但重启
emctl start dbconsole后浏览器仍报错 -
emca -reconfig dbcontrol db报错Failed to create certificate - 日志
%ORACLE_HOME%\cfgtoollogs\emca\<sid>\emca_<date>.log</date></sid>中出现java.security.cert.CertificateExpiredException
补丁 8350262 是唯一可靠解法吗?
是的,但有前提:
- 它专为修复
Root CA expired on 31-DEC-2010问题设计,适用于Oracle 10.2.0.4/5和11.1.0.6/7(11g R1/R2 早期版本) - 必须用
opatch apply安装,且安装前需确保ORACLE_HOME和ORACLE_SID已正确设置 - 打完补丁后必须执行:
emctl stop dbconsole→emca -deconfig dbcontrol db -repos drop→emca -config dbcontrol db -repos create,不能只跑-reset - 若你用的是盗版或离线拷贝的安装介质(非 Oracle 官网下载),补丁可能无法匹配 OPatch 版本,报
OPatch failed with error code 73
没有 Metalink 账号,也没法打补丁怎么办?
临时可用但不推荐长期使用的办法:
- 卸载 Windows 更新
KB2661254(仅限 Win7,Win10/11 不适用) - 用 Firefox 访问
https://localhost:1158/em,导入%ORACLE_HOME%\sysman\config\emkey.ora对应的私钥(需手动导出 PEM,操作复杂且不安全) - 改系统时间回 2009 年 —— 仅能用于安装阶段,运行时一旦时间同步就会失效,且影响其他服务
真正干净的出路:升级到 Oracle 12c+,其 EM Express(https://host:5500/em)已弃用 DBConsole,改用轻量级 HTTP 接口,不再依赖自签名证书。
注意:所有绕过证书校验的操作,本质都是降级安全机制,生产环境绝对不要这么做。











