跳过导航链接 | |
退出打印视图 | |
系统管理指南:安全性服务 Oracle Solaris 10 8/11 Information Library (简体中文) |
本节介绍如何管理 Oracle Solaris 加密框架中的软件提供者和硬件提供者。如果需要,可以禁用软件提供者和硬件提供者。例如,可以禁用某个软件提供者的算法实现。然后,可以强制系统使用其他软件提供者的算法。
Oracle Solaris 加密框架可为多种类型的使用者提供算法:
用户级提供者为与 libpkcs11 库相链接的应用程序提供 PKCS #11 加密接口
内核软件提供者为 IPsec、Kerberos 及其他 Oracle Solaris 内核组件提供算法
内核硬件提供者通过 pkcs11_kernel 库提供内核使用者和应用程序可用的算法
注 - 不同的 Oracle Solaris 发行版中提供者列表的内容和格式会有所不同。在您的系统上运行 cryptoadm list 命令可查看系统支持的提供者。
一般用户只能使用用户级机制。
% cryptoadm list user-level providers: /usr/lib/security/$ISA/pkcs11_kernel.so /usr/lib/security/$ISA/pkcs11_softtoken.so kernel software providers: des aes blowfish arcfour sha1 md5 rsa kernel hardware providers: ncp/0
以下输出中列出了所有机制。但是,所列出的一些机制可能无法使用。要仅列出管理员已批准使用的机制,请参见示例 14-16。
为了便于显示,输出格式有所调整。
% cryptoadm list -m user-level providers: ===================== /usr/lib/security/$ISA/pkcs11_kernel.so: CKM_MD5,CKM_MD5_HMAC, CKM_MD5_HMAC_GENERAL,CKM_SHA_1,CKM_SHA_1_HMAC,CKM_SHA_1_HMAC_GENERAL, … /usr/lib/security/$ISA/pkcs11_softtoken.so: CKM_DES_CBC,CKM_DES_CBC_PAD,CKM_DES_ECB,CKM_DES_KEY_GEN, CKM_DES3_CBC,CKM_DES3_CBC_PAD,CKM_DES3_ECB,CKM_DES3_KEY_GEN, CKM_AES_CBC,CKM_AES_CBC_PAD,CKM_AES_ECB,CKM_AES_KEY_GEN, … kernel software providers: ========================== des: CKM_DES_ECB,CKM_DES_CBC,CKM_DES3_ECB,CKM_DES3_CBC aes: CKM_AES_ECB,CKM_AES_CBC blowfish: CKM_BF_ECB,CKM_BF_CBC arcfour: CKM_RC4 sha1: CKM_SHA_1,CKM_SHA_1_HMAC,CKM_SHA_1_HMAC_GENERAL md5: CKM_MD5,CKM_MD5_HMAC,CKM_MD5_HMAC_GENERAL rsa: CKM_RSA_PKCS,CKM_RSA_X_509,CKM_MD5_RSA_PKCS,CKM_SHA1_RSA_PKCS swrand: No mechanisms presented. kernel hardware providers: ========================== ncp/0: CKM_DSA,CKM_RSA_X_509,CKM_RSA_PKCS,CKM_RSA_PKCS_KEY_PAIR_GEN, CKM_DH_PKCS_KEY_PAIR_GEN,CKM_DH_PKCS_DERIVE,CKM_EC_KEY_PAIR_GEN, CKM_ECDH1_DERIVE,CKM_ECDSA
示例 14-15 查找现有加密机制
在下面的示例中,列出了用户级库 pkcs11_softtoken 提供的所有机制。
% cryptoadm list -m provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so Mechanisms: CKM_DES_CBC,CKM_DES_CBC_PAD,CKM_DES_ECB,CKM_DES_KEY_GEN, CKM_DES3_CBC,CKM_DES3_CBC_PAD,CKM_DES3_ECB,CKM_DES3_KEY_GEN, … CKM_SSL3_KEY_AND_MAC_DERIVE,CKM_TLS_KEY_AND_MAC_DERIVE
示例 14-16 查找可用加密机制
策略确定可使用的机制。管理员负责设置策略。管理员可以选择禁用特定提供者的机制。-p 选项显示管理员设置的策略允许的机制列表。
% cryptoadm list -p user-level providers: ===================== /usr/lib/security/$ISA/pkcs11_kernel.so: all mechanisms are enabled. random is enabled. /usr/lib/security/$ISA/pkcs11_softtoken.so: all mechanisms are enabled. random is enabled. kernel software providers: ========================== des: all mechanisms are enabled. aes: all mechanisms are enabled. blowfish: all mechanisms are enabled. arcfour: all mechanisms are enabled. sha1: all mechanisms are enabled. md5: all mechanisms are enabled. rsa: all mechanisms are enabled. swrand: random is enabled. kernel hardware providers: ========================== ncp/0: all mechanisms are enabled.
Primary Administrator(主管理员)角色拥有 Primary Administrator(主管理员)配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 "使用 Solaris Management Console(任务)"。
% cryptoadm list user-level providers: /usr/lib/security/$ISA/pkcs11_kernel.so /usr/lib/security/$ISA/pkcs11_softtoken.so kernel software providers: des aes blowfish arcfour sha1 md5 rsa kernel hardware providers: ncp/0
# pkgadd -d /path/to/package pkginst
该软件包必须包含由 Oracle 提供的证书签名的软件。要从 Oracle 申请证书并对提供者进行签名,请参见《Oracle Solaris 开发者安全性指南》中的附录 F "打包和签署加密提供者"。
该软件包应具有用于以下用途的脚本:通知加密框架另一个具有一组机制的提供者可用。有关打包要求的信息,请参见《Oracle Solaris 开发者安全性指南》中的附录 F "打包和签署加密提供者"。
如果添加了软件提供者或者添加了硬件并为该硬件指定了策略,则需要刷新提供者。
# svcadm refresh svc:/system/cryptosvc
在本例中,安装了一个新的内核软件提供者。
# cryptoadm list … kernel software providers: des aes blowfish arcfour sha1 md5 rsa swrand ecc <-- added provider …
示例 14-17 添加用户级软件提供者
在下面的示例中,将安装签名的 PKCS #11 库。
# pkgadd -d /cdrom/cdrom0/SolarisNew Answer the prompts # svcadm refresh system/cryptosvc # cryptoadm list user-level providers: ========================== /usr/lib/security/$ISA/pkcs11_kernel.so /usr/lib/security/$ISA/pkcs11_softtoken.so /opt/SUNWconn/lib/$ISA/libpkcs11.so.1 <-- added provider
# cryptoadm install provider=/opt/SUNWconn/lib/\$ISA/libpkcs11.so.1
有关对提供者进行签名的信息,请参见第三方软件的二进制文件签名。
如果不应使用库提供者的某些加密机制,可以删除这些所选的机制。此过程以 pkcs11_softtoken 库中的 DES 机制为例。
要创建拥有 Crypto Management(加密管理)权限配置文件的角色并将该角色指定给用户,请参见示例 9-7。
% cryptoadm list -m provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so /usr/lib/security/$ISA/pkcs11_softtoken.so: CKM_DES_CBC,CKM_DES_CBC_PAD,CKM_DES_ECB,CKM_DES_KEY_GEN, CKM_DES3_CBC,CKM_DES3_CBC_PAD,CKM_DES3_ECB,CKM_DES3_KEY_GEN, CKM_AES_CBC,CKM_AES_CBC_PAD,CKM_AES_ECB,CKM_AES_KEY_GEN, …
$ cryptoadm list -p user-level providers: ===================== … /usr/lib/security/$ISA/pkcs11_softtoken.so: all mechanisms are enabled. random is enabled. …
$ cryptoadm disable provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so \ > mechanism=CKM_DES_CBC,CKM_DES_CBC_PAD,CKM_DES_ECB
$ cryptoadm list -p provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so /usr/lib/security/$ISA/pkcs11_softtoken.so: all mechanisms are enabled, except CKM_DES_ECB,CKM_DES_CBC_PAD,CKM_DES_CBC. random is enabled.
示例 14-18 启用一个用户级软件提供者机制
在下面的示例中,将使禁用的 DES 机制再次可用。
$ cryptoadm list -m provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so /usr/lib/security/$ISA/pkcs11_softtoken.so: CKM_DES_CBC,CKM_DES_CBC_PAD,CKM_DES_ECB,CKM_DES_KEY_GEN, CKM_DES3_CBC,CKM_DES3_CBC_PAD,CKM_DES3_ECB,CKM_DES3_KEY_GEN, … $ cryptoadm list -p provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so /usr/lib/security/$ISA/pkcs11_softtoken.so: all mechanisms are enabled, except CKM_DES_ECB,CKM_DES_CBC_PAD,CKM_DES_CBC. random is enabled. $ cryptoadm enable provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so \ > mechanism=CKM_DES_ECB $ cryptoadm list -p provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so /usr/lib/security/$ISA/pkcs11_softtoken.so: all mechanisms are enabled, except CKM_DES_CBC_PAD,CKM_DES_CBC. random is enabled.
示例 14-19 启用所有用户级软件提供者机制
$ cryptoadm enable provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so all $ cryptoadm list -p provider=/usr/lib/security/\$ISA/pkcs11_softtoken.so /usr/lib/security/$ISA/pkcs11_softtoken.so: all mechanisms are enabled. random is enabled.
示例 14-20 永久禁用用户级软件提供者
$ cryptoadm uninstall provider=/opt/SUNWconn/lib/\$ISA/libpkcs11.so.1 $ cryptoadm list user-level providers: /usr/lib/security/$ISA/pkcs11_kernel.so /usr/lib/security/$ISA/pkcs11_softtoken.so kernel software providers: …
如果加密框架提供了某个提供者(如 AES)的多种模式,则可以禁用速度较慢的机制或被破坏的机制。此过程以 AES 算法为例。
要创建拥有 Crypto Management(加密管理)权限配置文件的角色并将该角色指定给用户,请参见示例 9-7。
$ cryptoadm list -m provider=aes aes: CKM_AES_ECB,CKM_AES_CBC
$ cryptoadm list -p provider=aes aes: all mechanisms are enabled.
$ cryptoadm disable provider=aes mechanism=CKM_AES_ECB
$ cryptoadm list -p provider=aes aes: all mechanisms are enabled, except CKM_AES_ECB.
示例 14-21 启用内核软件提供者机制
在下面的示例中,将使禁用的 AES 机制再次可用。
cryptoadm list -m provider=aes aes: CKM_AES_ECB,CKM_AES_CBC $ cryptoadm list -p provider=aes aes: all mechanisms are enabled, except CKM_AES_ECB. $ cryptoadm enable provider=aes mechanism=CKM_AES_ECB $ cryptoadm list -p provider=aes aes: all mechanisms are enabled.
示例 14-22 临时禁用内核软件提供者
在下面的示例中,将临时禁用 AES 提供者。unload 子命令可用于禁止在卸载某个提供者时自动装入该提供者。例如,安装影响提供者的修补程序时,将使用 unload 子命令。
$ cryptoadm unload provider=aes
$ cryptoadm list … kernel software providers: des aes (inactive) blowfish arcfour sha1 md5 rsa swrand
AES 提供者只有在加密框架刷新之后才会可用。
$ svcadm refresh system/cryptosvc
$ cryptoadm list … kernel software providers: des aes blowfish arcfour sha1 md5 rsa swrand
如果内核使用者正在使用内核软件提供者,则不会卸载该软件。此时将显示错误消息,不过该提供者仍然可供使用。
示例 14-23 永久禁用软件提供者
在下面的示例中,将禁用 AES 提供者。禁用后,该 AES 提供者将不会出现在内核软件提供者的策略列表中。
$ cryptoadm uninstall provider=aes
$ cryptoadm list … kernel software providers: des blowfish arcfour sha1 md5 rsa swrand
如果内核使用者正在使用内核软件提供者,将显示一条错误消息,不过该提供者仍然可供使用。
示例 14-24 重新安装已删除的内核软件提供者
$ cryptoadm install provider=aes mechanism=CKM_AES_ECB,CKM_AES_CBC
$ cryptoadm list … kernel software providers: des aes blowfish arcfour sha1 md5 rsa swrand
硬件提供者将自动定位和装入。有关更多信息,请参见 driver.conf(4) 手册页。
开始之前
如果您的硬件预计会在 Oracle Solaris 加密框架中使用,该硬件将通过 SPI 在内核中注册。框架将检查是否已对硬件驱动程序签名。具体地说,框架将检查是否已使用 Oracle 颁发的证书对驱动程序的目标文件进行签名。
例如,Sun Crypto Accelerator 6000 板 (mca)、UltraSPARC T1 和 T2 处理器上加密加速器的 ncp 驱动程序 (ncp) 以及 UltraSPARC T2 处理器的 n2cp 驱动程序 (n2cp) 将硬件机制插入框架。
有关对提供者进行签名的信息,请参见第三方软件的二进制文件签名。
% cryptoadm list … kernel hardware providers: ncp/0
% cryptoadm list -m provider=ncp/0 ncp/0: CKM_DSA,CKM_RSA_X_509,CKM_RSA_PKCS,CKM_RSA_PKCS_KEY_PAIR_GEN, CKM_DH_PKCS_KEY_PAIR_GEN,CKM_DH_PKCS_DERIVE,CKM_EC_KEY_PAIR_GEN, CKM_ECDH1_DERIVE,CKM_ECDSA
% cryptoadm list -p provider=ncp/0 ncp/0: all mechanisms are enabled.
可以有选择地禁用硬件提供者的机制和随机数功能。有关重新启用它们的信息,请参见示例 14-25。此示例中的硬件 Sun Crypto Accelerator 1000 板提供了一个随机数生成器。
要创建拥有 Crypto Management(加密管理)权限配置文件的角色并将该角色指定给用户,请参见示例 9-7。
列出硬件提供者。
# cryptoadm list ... Kernel hardware providers: dca/0
# cryptoadm list -m provider=dca/0 dca/0: CKM_RSA_PKCS, CKM_RSA_X_509, CKM_DSA, CKM_DES_CBC, CKM_DES3_CBC random is enabled. # cryptoadm disable provider=dca/0 mechanism=CKM_DES_CBC,CKM_DES3_CBC # cryptoadm list -p provider=dca/0 dca/0: all mechanisms are enabled except CKM_DES_CBC,CKM_DES3_CBC. random is enabled.
# cryptoadm list -p provider=dca/0 dca/0: all mechanisms are enabled. random is enabled. # cryptoadm disable provider=dca/0 random # cryptoadm list -p provider=dca/0 dca/0: all mechanisms are enabled. random is disabled.
# cryptoadm list -p provider=dca/0 dca/0: all mechanisms are enabled. random is enabled. # cryptoadm disable provider=dca/0 mechanism=all # cryptoadm list -p provider=dca/0 dca/0: all mechanisms are disabled. random is enabled.
# cryptoadm list -p provider=dca/0 dca/0: all mechanisms are enabled. random is enabled. # cryptoadm disable provider=dca/0 all # cryptoadm list -p provider=dca/0 dca/0: all mechanisms are disabled. random is disabled.
示例 14-25 启用硬件提供者的机制和功能
# cryptoadm list -p provider=dca/0 dca/0: all mechanisms are enabled except CKM_DES_ECB,CKM_DES3_ECB
. random is enabled. # cryptoadm enable provider=dca/0 mechanism=CKM_DES3_ECB # cryptoadm list -p provider=dca/0 dca/0: all mechanisms are enabled except CKM_DES_ECB. random is enabled.
在下面的示例中,将仅启用随机数生成器。
# cryptoadm list -p provider=dca/0 dca/0: all mechanisms are enabled, except CKM_MD5,CKM_MD5_HMAC,…. random is disabled. # cryptoadm enable provider=dca/0 random # cryptoadm list -p provider=dca/0 dca/0: all mechanisms are enabled, except CKM_MD5,CKM_MD5_HMAC,…. random is enabled.
在下面的示例中,将仅启用机制。随机数生成器将继续处于禁用状态。
# cryptoadm list -p provider=dca/0 dca/0: all mechanisms are enabled, except CKM_MD5,CKM_MD5_HMAC,…. random is disabled. # cryptoadm enable provider=dca/0 mechanism=all # cryptoadm list -p provider=dca/0 dca/0: all mechanisms are enabled. random is disabled.
在下面的示例中,将启用板上的所有功能和机制。
# cryptoadm list -p provider=dca/0 dca/0: all mechanisms are enabled, except CKM_DES_ECB,CKM_DES3_ECB. random is disabled. # cryptoadm enable provider=dca/0 all # cryptoadm list -p provider=dca/0 dca/0: all mechanisms are enabled. random is enabled.
缺省情况下,将启用 Oracle Solaris 加密框架。无论 kcfd 守护进程因何种原因失败,都可使用服务管理工具重新启动加密服务。有关更多信息,请参见 smf(5) 和 svcadm(1M) 手册页。有关重新启动加密服务对区域的影响,请参见加密服务和区域。
% svcs cryptosvc STATE STIME FMRI offline Dec_09 svc:/system/cryptosvc:default
角色包含授权和具有一定特权的命令。有关角色的更多信息,请参见配置 RBAC(任务列表)。
# svcadm enable svc:/system/cryptosvc
示例 14-26 刷新加密服务
在下面的示例中,将在全局区域中刷新加密服务。因此,每个非全局区域中的内核级加密策略也将被刷新。
# svcadm refresh system/cryptosvc