我正在尝试更新我的 Solaris 11.3 x86 系统。系统上装有Sun/Oracle软件,包括Sun Developer Studio和Sun SSH服务器。它上面没有其他软件,我也没有任何/usr/local
.
我发现了这个错误:
$ sudo pkg update
Creating Plan (Package planning: 1/10): -
pkg update: Chain was rooted in an untrusted self-signed certificate.
The package involved is pkg://solaris/consolidation/ddt/[email protected],0.5.11-11.4.0.0.1.11.0:20180718T212443Z
根据使用图像打包系统打包和交付软件 |不受信任的自签名证书,文档说这是因为使用了自签名 OpenSSL 证书。另一个类似的页面是对签名包进行故障排除,但它重新整理了之前的页面,并且没有添加任何新内容。有关更新包的 Oracle 文档位于更新包但它似乎没有提供我需要的信息。
Sun 的文章缺乏解决该问题的分步说明。我试图让 Solaris 信任 Sun 证书,但无法解决使用错误:
$ sudo pkg set-publisher --approve-ca-cert solaris/consolidation/ddt/ddt-incorporation
pkg set-publisher: requires a publisher name
Usage:
pkg set-publisher [-Ped] [-k ssl_key] [-c ssl_cert]
[-g origin_to_add|--add-origin=origin_to_add ...]
[-G origin_to_remove|--remove-origin=origin_to_remove ...]
....
和:
$ sudo pkg set-publisher --approve-ca-cert solaris/consolidation/ddt/ddt-incorporation sun
pkg set-publisher: Could not find /export/home/jwalton/solaris/consolidation/ddt/ddt-incorporation
我尝试过其他组合,例如前置pkg://
和使用全名,但问题仍然存在。
我该如何克服这个错误?
答案1
它不是自签名的,但也不是由 Solaris 11.3 GA 版本了解的证书颁发机构签名的。对新证书颁发机构的支持是您需要首先更新到 Solaris 11.3 SRU 23 或更高版本然后才能升级到 Solaris 11.4 的原因之一,如中所述升级说明。
答案2
我想我确切地知道你想要做什么,但你也会在下一步中失败,这就是我要做的。
pkg(1) 将证书链的副本存储在 /var/pkg/publisher/(publisher name)/certs 中,因此您将在 /var/pkg/publisher/solaris/certs 中拥有签名和根证书。将根证书复制到 /etc/certs/CA/ 中的 CA 证书目录,然后 pkg(1) 将信任该证书链。
就我而言,这很简单
cp /var/pkg/publisher/solaris/certs/370b6b4fba7b0ad472465ffe9377f8f6040b2cfd /etc/certs/CA/temp-solaris-object-signing.pem
svcadm restart system/ca-certificates
您会发现的下一个障碍是 pkg://solaris/system/[电子邮件受保护],5.11-11.4.0.0.1.15.0 对 pkg:/system/ 具有原始根映像依赖性[电子邮件受保护](看https://docs.oracle.com/cd/E53394_01/html/E54820/dependtypes.html#PKDEVglumq有关 pkg 依赖项的详细信息)。那里可能有一个很好的理由......
编辑:您可能想做的其余事情是......
如果您选择忽略这个巨大的危险信号,并且不介意您的 Solaris 11.3 系统变得不受支持(可能是因为您没有下载 11.3SRU23 的支持合同),您可以执行以下操作:
pkgrecv -s /path/to/solaris11_4 -d /var/tmp/sol114 --raw pkg://solaris/system/[email protected],5.11-11.4.0.0.1.15.0:20180817T002753Z
vi /var/tmp/sol114/system%2Fcore-os/11.4%2C5.11-11.4.0.0.1.15.0%3A20180817T002753Z/manifest*
删除依赖:
depend fmri=pkg:/system/[email protected] root-image=true type=origin
发布回您的本地存储库:
pkgsend publish -s /path/to/solaris11_4 -d /var/tmp/sol114/system%2Fcore-os/11.4%2C5.11-11.4.0.0.1.15.0%3A20180817T0023Z/ /var/tmp/sol114/system%2Fcore-os/11.4%2C5.11-11.4.0.0.1.15.0%3A20180817T002753Z/manifest
pkgrepo -s /path/to/solaris11_4 rebuild
然后运行升级。
您需要在升级之前确保 /var/tmp 完全为空,因为它似乎在升级期间为 /var/tmp 创建了一个新的 ZFS 数据集,否则它似乎可以正常工作,但会出现一些可修复的错误。 YMMV,我在旧的 T4-2 SPARC 系统(不是 x86)上测试了这个,所以我不知道 GRUB 升级等是否还有其他怪癖。
答案3
这将修复错误
cp /var/pkg/publisher/solaris/certs/370b6b4fba7b0ad472465ffe9377f8f6040b2cfd /etc/certs/CA/temp-solaris-object-signing.pem
svcadm restart system/ca-certificates
答案4
要解决 pkg 更新问题: 指定“涉及的软件包”的确切版本。
# pkg update --reject pkg://solaris/consolidation/ddt/[email protected],0.5.11-11.4.0.0.1.11.0:20180718T212443Z [email protected]
或者干脆拒绝它:
# pkg update consolidation/ddt/[email protected] [email protected]