07-公钥管理配置
本章节下载: 07-公钥管理配置 (330.82 KB)
目 录
公钥管理用于非对称密钥算法的密钥管理与发布。
非对称密钥算法是数据加解密的一种方法,用来保证数据在网络中安全传输、不被攻击者非法窃听和恶意篡改。如图1-1所示,在非对称密钥算法中,加密和解密使用的密钥一个是对外公开的公钥,一个是由用户秘密保存的私钥,从公钥很难推算出私钥。公钥和私钥一一对应,二者统称为非对称密钥对。通过公钥(或私钥)加密后的数据只能利用对应的私钥(或公钥)进行解密。对称密钥算法中,加密和解密使用相同的密钥。
非对称密钥算法包括RSA(Rivest Shamir and Adleman)、DSA(Digital Signature Algorithm,数字签名算法)、ECDSA(Elliptic Curve Digital Signature Algorithm,椭圆曲线数字签名算法)和SM2算法等。
非对称密钥算法主要有两个用途:
· 对发送的数据进行加/解密:发送者利用接收者的公钥对数据进行加密,只有拥有对应私钥的接收者才能使用该私钥对数据进行解密,从而可以保证数据的机密性。目前,只有RSA算法可以用来对发送的数据进行加/解密。
· 对数据发送者的身份进行认证:非对称密钥算法的这种应用,称为数字签名。发送者利用自己的私钥对数据进行加密,接收者利用发送者的公钥对数据进行解密,从而实现对数据发送者身份的验证。由于只能利用对应的公钥对通过私钥加密后的数据进行解密,因此根据解密是否成功,就可以判断发送者的身份是否合法,如同发送者对数据进行了“签名”。目前,RSA、DSA、ECDSA和SM2都可以用于数字签名。
非对称密钥算法应用十分广泛,例如SSH(Secure Shell,安全外壳)、SSL(Secure Sockets Layer,安全套接字层)、PKI(Public Key Infrastructure,公钥基础设施)中都利用了非对称密钥算法进行数字签名。非对称密钥算法只有与具体的应用(如SSH、SSL)配合使用,才能实现利用非对称密钥算法进行加/解密或数字签名。SSH、SSL和PKI的介绍,请参见“安全配置指导”中的“SSH”、“SSL”和“PKI”。
设备运行于FIPS模式时,本特性部分配置相对于非FIPS模式有所变化,具体差异请见本文相关描述。有关FIPS模式的详细介绍请参见“安全配置指导”中的“FIPS”。
公钥管理配置任务如下:
(1) 生成本地非对称密钥对
(2) 导入本地非对称密钥对
请选择以下一项进行配置:
为了实现远端主机对本地设备的身份验证,用户需要将本地的主机公钥保存到远端主机上。
(4) 配置远端主机的公钥
请选择以下一项进行配置:
为了实现本地设备对远端主机的身份验证,用户需要在本地设备上配置远端主机公钥。
(5) (可选)销毁本地非对称密钥对
(6) (可选)配置主密钥功能
创建RSA和DSA密钥对时,设备会提示用户输入密钥模数的长度。密钥模数越长,安全性越好,但是生成密钥的时间越长。创建ECDSA密钥对时,可使用不同密钥长度的椭圆曲线,密钥越长,安全性越好,但是生成密钥的时间越长。创建SM2密钥对时,使用固定密钥长度的椭圆曲线。关于密钥模数长度或密钥长度的配置限制和注意事项请参见表1-1。
生成密钥对时,如果不指定密钥对名称,系统会以缺省名称命名密钥对,并把该密钥对标记为默认(default)。
用户可以使用缺省的密钥对名称创建其他密钥对,但系统不会把该密钥对标记为默认(default)。
非默认名称密钥对的密钥类型和名称不能完全相同,否则需要用户确认是否覆盖原有的密钥对。不同类型的密钥对,名称可以相同。
执行public-key local create命令后,生成的密钥对将保存在设备中,设备重启后密钥不会丢失。
密钥对类型 |
生成的密钥对 |
密钥模数长度/密钥长度 |
RSA |
· 非FIPS模式下: ¡ 不指定密钥对名称时,将同时生成两个密钥对服务器密钥对和主机密钥对 ¡ 指定密钥对名称时,只生成一个主机密钥对 · FIPS模式下:只生成一个主机密钥对,包括一个公钥和一个私钥 目前,只有SSH1.5中应用了RSA服务器密钥对 |
· 非FIPS模式下:密钥模数长度取值范围为512~2048比特,缺省值为1024比特,建议密钥模数的长度大于或等于768比特 · FIPS模式下:密钥模数长度取值为2048比特 |
DSA |
只生成一个主机密钥对 |
· 非FIPS模式下:密钥模数长度取值范围为512~2048比特,缺省值为1024比特,建议密钥模数的长度大于或等于768比特 · FIPS模式下:密钥模数长度取值为2048比特 |
ECDSA |
只生成一个主机密钥对 |
· 非FIPS模式下:密钥长度取值为192、256、384或521比特 · FIPS模式下:密钥长度取值为256、384或521比特 |
SM2 |
只生成一个主机密钥对 |
密钥长度取值为256比特 |
(1) 进入系统视图。
system-view
(2) 生成本地非对称密钥对。
(非FIPS模式)
public-key local create { dsa | ecdsa [ secp192r1 | secp256r1 | secp384r1 | secp521r1 ] | rsa } [ name key-name ]
public-key local create sm2 [ name key-name ] [ on device-name ]
(FIPS模式)
public-key local create { dsa | ecdsa [ secp256r1 | secp384r1 | secp521r1 ] | rsa } [ name key-name ]
在某些情况下,设备需要从其它设备上导入密钥对。如果待导入的密钥对包含在证书中,只需要导入证书便能将密钥对一并导入设备;如果待导入的证书和密钥对是分开的两个文件,设备无法通过导入证书的方式来导入密钥对,此时需要将密钥对文件通过FTP等方式上传到本地设备中,再通过public-key local import命令导入密钥对。
导入的密钥对将保存在设备中,设备重启后密钥不会丢失。
当导入的密钥对类型为RSA时,设备只支持导入RSA主机密钥对,不支持导入RSA服务器密钥对。
设置密钥对名称时请注意:
· 导入密钥对时,如果不指定密钥对名称,系统会以缺省名称命名密钥对,并把该密钥对标记为默认(default)。
· 导入密钥对时,用户可以输入缺省的密钥对名称,但系统不会把该密钥对标记为默认(default)。
· 非默认名称密钥对的密钥类型和名称不能完全相同,否则需要确认是否覆盖原有的密钥对。不同类型的密钥对,名称可以相同。
在非FIPS模式下,如果导入的密钥对是加密后的密钥对,需要提供解密密码才能成功导入;FIPS模式下,设备不支持导入加密后的密钥对。
设备支持导入的密钥长度范围请参见表1-2。
密钥对类型 |
密钥模数长度/密钥长度 |
RSA |
· 非FIPS模式下:长度取值范围为512~2048比特 · FIPS模式下:长度取值为2048比特 |
ECDSA |
· 非FIPS模式下:长度取值为192、256、384或521比特 · FIPS模式下:长度取值为256、384或521比特 |
执行本命令前,请先将密钥对文件保存到设备本地的存储路径下。
(1) 进入系统视图。
system-view
(2) 导入本地非对称密钥对。
public-key local import { ecdsa | rsa } [ key-name ] filename filename
在某些应用(如SSH)中,为了实现远端主机采用数字签名方法对本地设备进行身份验证,用户需要将本地的主机公钥保存到远端主机上。
将本地的主机公钥保存到远端主机上,有以下三种方法:
· 在本地设备上执行public-key local export命令按照指定格式将本地主机公钥导出到指定文件(执行命令时指定filename参数),并将该文件上传到远端主机上。在远端主机上,通过从公钥文件中导入的方式将本地的主机公钥保存到远端设备上。
· 在本地设备上执行public-key local export命令按照指定格式将本地主机公钥导出到用户界面(执行命令时不指定filename参数),通过拷贝粘贴等方式将用户界面上的主机公钥保存到文件中,并将该文件上传到远端主机上。在远端主机上,通过从公钥文件中导入的方式将本地的主机公钥保存到远端设备上。
· 在本地设备上执行display public-key local public命令显示非对称密钥对中的公钥信息,并记录主机公钥数据。在远端主机上,通过手工配置的方式将记录的本地主机公钥保存到远端设备上。
(1) 进入系统视图。
system-view
(2) 导出本地非对称密钥对中的主机公钥。
¡ 按照指定格式将本地RSA主机公钥导出到指定文件或用户界面。
(非FIPS模式)
public-key local export rsa [ name key-name ] { openssh | ssh1 | ssh2 } [ filename ]
(FIPS模式)
public-key local export rsa [ name key-name ] { openssh | ssh2 } [ filename ]
¡ 按照指定格式将本地ECDSA主机公钥导出到指定文件或用户界面。
public-key local export ecdsa [ name key-name ] { openssh | ssh2 } [ filename ]
¡ 按照指定格式将本地DSA主机公钥导出到指定文件或用户界面。
public-key local export dsa [ name key-name ] { openssh | ssh2 } [ filename ]
¡ 按照指定格式将本地SM2主机公钥导出到指定文件或用户界面。
public-key local export sm2 [ name key-name ] { openssh | ssh2 } [ filename ]
请在任意视图下执行以下命令。
· 显示本地RSA密钥对中的公钥信息。
display public-key local rsa public [ name key-name ]
若执行本命令时,同时显示了RSA服务器密钥对和主机密钥对的公钥信息,用户只需记录主机密钥对的公钥信息。
· 显示本地ECDSA密钥对中的公钥信息。
display public-key local ecdsa public [ name key-name ]
· 显示本地DSA密钥对中的公钥信息。
display public-key local dsa public [ name key-name ]
· 显示本地SM2密钥对中的公钥信息。
display public-key local sm2 public [ name key-name ]
在某些应用(如SSH)中,为了实现本地设备对远端主机的身份验证,需要在本地设备上配置远端主机的RSA、ECDSA、DSA主机公钥。用户可以使用以下方法配置远端主机公钥:
· 导入远端主机公钥。
· 手工配置远端主机公钥。
远端主机公钥信息的获取方法,请参见“1.6 将本地非对称密钥中的主机公钥分发到远端主机”。
手工配置远端主机的公钥时,输入的主机公钥必须满足一定的格式要求。通过display public-key local public命令显示的公钥可以作为输入的公钥内容;通过其他方式(如public-key local export命令)显示的公钥可能不满足格式要求,导致主机公钥保存失败。因此,建议选用从公钥文件导入的方式配置远端主机的公钥。
用户事先将远端主机的公钥文件保存到本地设备(例如,通过FTP或TFTP,以二进制方式将远端主机的公钥文件保存到本地设备),本地设备从该公钥文件中导入远端主机的公钥。导入公钥时,系统会自动将远端主机的公钥文件转换为PKCS(Public Key Cryptography Standards,公共密钥加密标准)编码形式。
(1) 进入系统视图。
system-view
(2) 从公钥文件中导入远端主机的公钥。
public-key peer keyname import sshkey filename
用户事先在远端主机上通过display public-key local public命令查看其公钥信息,并记录远端主机公钥的内容。在本地设备上采用手工输入的方式将远端主机的公钥配置到本地。
(1) 进入系统视图。
system-view
(2) 指定远端主机公钥的名称,并进入公钥视图。
public-key peer keyname
(3) 手工输入远端主机的公钥。
逐个字符输入或拷贝粘贴公钥内容。
在输入公钥内容时,字符之间可以有空格,也可以按回车键继续输入数据。保存公钥数据时,将删除空格和回车符。
(4) 退出公钥视图时,保存配置的主机公钥。
peer-public-key end
在如下几种情况下,建议用户销毁旧的非对称密钥对,并生成新的密钥对:
· 本地设备的私钥泄露。这种情况下,非法用户可能会冒充本地设备访问网络。
· 保存密钥对的存储设备出现故障,导致设备上没有公钥对应的私钥,无法再利用旧的非对称密钥对进行加/解密和数字签名。
· 本地证书到达有效期,需要删除对应的本地密钥对。本地证书的详细介绍,请参见“安全配置指导”中的“PKI”。
(1) 进入系统视图。
system-view
(2) 销毁本地非对称密钥对。
public-key local destroy { dsa | ecdsa | rsa | sm2 } [ name key-name ]
缺省情况下,设备上为各业务模块配置的密钥字符串将通过设备缺省的主密钥进行加密后存储。此时,将一台设备上的配置文件导出后,在另一台设备上加载,通过统一固定的对称密钥可以解密出配置的密钥字符串,使得密钥可以在设备间互相拷贝,存在安全隐患。
为了提升数据的安全性和可靠性,可在设备上配置本功能修改主密钥。在设备上配置本功能后,命令行界面上将出现交互式信息:
(1) 根据用户登录设备的认证方式分为如下两种:
¡ 若用户登录设备的认证方式为password或者scheme,界面上将提示用户输入用户密码,验证用户身份,身份验证成功后,进入步骤(2)。
¡ 若用户登录设备的认证方式为none,则直接进入步骤(2)。
有关用户登录设备认证方式的详细介绍,请参见“基础配置指导”中的“登录设备”。
(2) 界面上将提示用户选择随机方式或者手动方式设置主密钥:
¡ 若用户选择随机方式设置主密钥,则设备将随机自动设置主密钥。
¡ 若用户选择手动方式设置主密钥,请手动输入事先准备的主密钥后,再确认输入一遍。
主密钥存储在非易失存储介质中,设备下电或重启均不会改变已配置的主密钥。用户仅可通过display master-key type命令查看系统当前主密钥的生成方式,且无法通过任何手段获取主密钥,该机制能够达到防止设备间密钥互相拷贝的目的。
当主密钥存储空间不足时,设备将提示用户确认是否删除当前存储空间中记录的最早的主密钥。
当用户登录设备的认证方式为password或者scheme时,若登录设备身份认证失败超过三次,则会强制用户重新登录上线,无法继续执行下发主密钥相关操作。
两次设置主密钥时间间隔必须大于三分钟。
若选择手动输入方式设置主密钥,请在配置本命令前,准备好即将设置的主密钥。
(1) 进入系统视图。
system-view
(2) 设置主密钥。
set master-key
在如下两种场景下,可以使用本命令对主密钥进行清除:
· 当用户不需要使用主密钥功能。
· 当主密钥存储空间不足,用户需要清除当前存储空间中记录的最早的主密钥。
设备缺省主密钥生成方式为默认值方式,配置本功能后将会清除设备上所有已配置的主密钥,将主密钥恢复为出厂默认值。
(1) 进入系统视图。
system-view
(2) 清除主密钥。
clear master-key
在完成上述配置后,在任意视图下执行display命令可以显示配置后公钥管理的信息,通过查看显示信息验证配置的效果。
表1-3 公钥管理显示和维护
操作 |
命令 |
显示本地非对称密钥对中的公钥信息 |
display public-key local { dsa | ecdsa | rsa | sm2 } public [ name key-name ] |
显示保存在本地的远端主机的公钥信息 |
display public-key peer [ brief | name publickey-name ] |
显示设备当前主密钥的生成方式 |
display master-key type |
如图1-2所示,为了防止非法用户访问,Device B(本地设备)采用数字签名方法对访问它的Device A(远端设备)进行身份验证。进行身份验证前,需要在Device B上配置Device A的公钥。
本例中要求:
· Device A采用的非对称密钥算法为RSA算法。
· 采用手工配置方式在Device B上配置Device A的主机公钥。
(1) 配置接口IP地址、路由保证网络可达,具体配置步骤略
(2) 配置Device A
# 在Device A上生成默认名称的本地RSA非对称密钥对,密钥模数的长度采用缺省值1024比特。
<DeviceA> system-view
[DeviceA] public-key local create rsa
The range of public key modulus is (512 ~ 2048).
If the key modulus is greater than 512, it will take a few minutes.
Press CTRL+C to abort.
Input the modulus length [default = 1024]:
Generating Keys...
.................++++++
......................................++++++
.....++++++++
..............++++++++
Create the key pair successfully.
# 显示生成的本地RSA密钥对的公钥信息。
[DeviceA] display public-key local rsa public
=============================================
Key name: hostkey(default)
Key type: RSA
Key length: 1024
Time when key pair created: 16:48:31 2011/05/12
Key code:
30819F300D06092A864886F70D010101050003818D0030818902818100DA3B90F59237347B
8D41B58F8143512880139EC9111BFD31EB84B6B7C7A1470027AC8F04A827B30C2CAF79242E
45FDFF51A9C7E917DB818D54CB7AEF538AB261557524A7441D288EC54A5D31EFAE4F681257
6D7796490AF87A8C78F4A7E31F0793D8BA06FB95D54EBB9F94EB1F2D561BF66EA27DFD4788
CB47440AF6BB25ACA50203010001
=============================================
Key name: serverkey(default)
Key type: RSA
Key length: 768
Time when key pair created: 16:48:31 2011/05/12
Key code:
307C300D06092A864886F70D0101010500036B003068026100C9451A80F7F0A9BA1A90C7BC
1C02522D194A2B19F19A75D9EF02219068BD7FD90FCC2AF3634EEB9FA060478DD0A1A49ACE
E1362A4371549ECD85BA04DEE4D6BB8BE53B6AED7F1401EE88733CA3C4CED391BAE633028A
AC41C80A15953FB22AA30203010001
(3) 配置Device B
# 在Device B上配置Device A的主机公钥:在公钥视图输入Device A的主机公钥,即在Device A上通过display public-key local rsa public命令显示的主机公钥hostkey内容。
<DeviceB> system-view
[DeviceB] public-key peer devicea
Enter public key view. Return to system view with "peer-public-key end" command.
[DeviceB-pkey-public-key-devicea]30819F300D06092A864886F70D010101050003818D003081890
2818100DA3B90F59237347B
[DeviceB-pkey-public-key-devicea]8D41B58F8143512880139EC9111BFD31EB84B6B7C7A1470027A
C8F04A827B30C2CAF79242E
[DeviceB-pkey-public-key-devicea]45FDFF51A9C7E917DB818D54CB7AEF538AB261557524A7441D2
88EC54A5D31EFAE4F681257
[DeviceB-pkey-public-key-devicea]6D7796490AF87A8C78F4A7E31F0793D8BA06FB95D54EBB9F94E
B1F2D561BF66EA27DFD4788
[DeviceB-pkey-public-key-devicea]CB47440AF6BB25ACA50203010001
# 从公钥视图退回到系统视图,并保存用户输入的公钥。
[DeviceB-pkey-public-key-devicea] peer-public-key end
# 显示Device B上保存的Device A的主机公钥信息。
[DeviceB] display public-key peer name devicea
=============================================
Key name: devicea
Key type: RSA
Key length: 1024
Key code:
30819F300D06092A864886F70D010101050003818D0030818902818100DA3B90F59237347B
8D41B58F8143512880139EC9111BFD31EB84B6B7C7A1470027AC8F04A827B30C2CAF79242E
45FDFF51A9C7E917DB818D54CB7AEF538AB261557524A7441D288EC54A5D31EFAE4F681257
6D7796490AF87A8C78F4A7E31F0793D8BA06FB95D54EBB9F94EB1F2D561BF66EA27DFD4788
CB47440AF6BB25ACA50203010001
通过对比可以看出,Device B上保存的Device A的主机公钥信息与Device A实际的主机公钥信息一致。
如图1-3所示,为了防止非法用户访问,Device B(本地设备)采用数字签名方法对访问它的Device A(远端设备)进行身份验证。进行身份验证前,需要在Device B上配置Device A的公钥。
本例中要求:
· Device A采用的非对称密钥算法为RSA算法。
· 采用从公钥文件中导入的方式在Device B上配置Device A的主机公钥。
(1) 配置接口IP地址、路由保证网络可达,具体配置步骤略
(2) 在Device A上生成密钥对,并导出公钥
# 在Device A上生成默认名称的本地RSA非对称密钥对,密钥模数的长度采用缺省值1024比特。
<DeviceA> system-view
[DeviceA] public-key local create rsa
The range of public key modulus is (512 ~ 2048).
If the key modulus is greater than 512, it will take a few minutes.
Press CTRL+C to abort.
Input the modulus length [default = 1024]:
Generating Keys...
.................++++++
......................................++++++
.....++++++++
..............++++++++
Create the key pair successfully.
# 显示生成的本地RSA密钥对的公钥信息。
[DeviceA] display public-key local rsa public
=============================================
Key name: hostkey(default)
Key type: RSA
Key length: 1024
Time when key pair created: 16:48:31 2011/05/12
Key code:
30819F300D06092A864886F70D010101050003818D0030818902818100DA3B90F59237347B
8D41B58F8143512880139EC9111BFD31EB84B6B7C7A1470027AC8F04A827B30C2CAF79242E
45FDFF51A9C7E917DB818D54CB7AEF538AB261557524A7441D288EC54A5D31EFAE4F681257
6D7796490AF87A8C78F4A7E31F0793D8BA06FB95D54EBB9F94EB1F2D561BF66EA27DFD4788
CB47440AF6BB25ACA50203010001
=============================================
Key name: serverkey(default)
Key type: RSA
Key length: 768
Time when key pair created: 16:48:31 2011/05/12
Key code:
307C300D06092A864886F70D0101010500036B003068026100C9451A80F7F0A9BA1A90C7BC
1C02522D194A2B19F19A75D9EF02219068BD7FD90FCC2AF3634EEB9FA060478DD0A1A49ACE
E1362A4371549ECD85BA04DEE4D6BB8BE53B6AED7F1401EE88733CA3C4CED391BAE633028A
AC41C80A15953FB22AA30203010001
# 将生成的默认名称的RSA主机公钥导出到指定文件devicea.pub中。
[DeviceA] public-key local export rsa ssh2 devicea.pub
(3) 在Device A上启动FTP服务器功能
# 启动FTP服务器功能,创建FTP用户(用户名为ftp,并设置密码),并配置FTP用户的用户角色为network-admin。
[DeviceA] ftp server enable
[DeviceA] local-user ftp
[DeviceA-luser-manage-ftp] password simple 123456TESTplat&!
[DeviceA-luser-manage-ftp] service-type ftp
[DeviceA-luser-manage-ftp] authorization-attribute user-role network-admin
[DeviceA-luser-manage-ftp] quit
(4) Device B获取Device A的公钥文件
# Device B通过FTP以二进制方式从Device A获取公钥文件devicea.pub。
<DeviceB> ftp 10.1.1.1
Connected to 10.1.1.1 (10.1.1.1).
220 FTP service ready.
User (10.1.1.1:(none)): ftp
331 Password required for ftp.
Password:
230 User logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> binary
200 TYPE is now 8-bit binary
ftp> get devicea.pub
227 Entering Passive Mode (10,1,1,1,118,252)
150 Accepted data connection
226 File successfully transferred
301 bytes received in 0.003 seconds (98.0 kbyte/s)
ftp> quit
221-Goodbye. You uploaded 0 and downloaded 1 kbytes.
221 Logout.
(5) Device B从公钥文件中导入公钥
# Device B从公钥文件中导入Device A的主机公钥。
<DeviceB> system-view
[DeviceB] public-key peer devicea import sshkey devicea.pub
# 显示Device B上保存的Device A的主机公钥信息。
[DeviceB] display public-key peer name devicea
=============================================
Key name: devicea
Key type: RSA
Key length: 1024
Key code:
30819F300D06092A864886F70D010101050003818D0030818902818100DA3B90F59237347B
8D41B58F8143512880139EC9111BFD31EB84B6B7C7A1470027AC8F04A827B30C2CAF79242E
45FDFF51A9C7E917DB818D54CB7AEF538AB261557524A7441D288EC54A5D31EFAE4F681257
6D7796490AF87A8C78F4A7E31F0793D8BA06FB95D54EBB9F94EB1F2D561BF66EA27DFD4788
CB47440AF6BB25ACA50203010001
通过对比可以看出,Device B上保存的Device A的主机公钥信息与Device A实际的主机公钥信息一致。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!