国家 / 地区

10-安全配置指导

09-公钥管理配置

本章节下载  (197.91 KB)

docurl=/cn/Service/Document_Software/Document_Center/Routers/Catalog/SR_Router/SR6600/Configure/Operation_Manual/H3C_SR6600_CG-R2603(V1.15)/10/201212/766654_30005_0.htm

09-公钥管理配置


1 公钥管理配置

1.1  非对称密钥算法简介

1.1.1  基本概念

l              算法:加密和解密过程中使用的一组变换规则。

l              明文:未加密的信息。

l              密文:加密后的信息。

l              密钥:一组特定的字符串,是控制明文和密文变换的唯一参数,起到“钥匙”的作用。加密和解密都是在密钥的参与下进行的。

1.1.2  数据加解密算法分类

图1-1所示,为了保证数据在网络中安全传输,不被攻击者非法窃听和恶意篡改,发送方在发送数据之前需要对数据进行加密处理,即通过一定的算法,利用密钥将明文数据变换为密文;接收方接收到密文数据后,对其进行解密处理,即通过一定的算法,利用密钥将密文数据恢复为明文,以获得原始数据。

图1-1 加密和解密变换关系

 

根据加密解密过程中使用的密钥是否相同,可以将数据加解密算法分为:

l              对称密钥算法:数据加密和解密时使用相同的密钥。常用的对称密钥算法包括AES(Advanced Encryption Standard,高级加密标准)、DES(Data Encryption Standard,数据加密标准)等。

l              非对称密钥算法:数据加密和解密时使用不同的密钥,一个是对外公开的公钥,一个是由用户秘密保存的私钥。通过公钥(或私钥)加密后的数据只能利用对应的私钥(或公钥)进行解密;从公钥很难推断出私钥。

1.1.3  非对称密钥算法的应用

非对称密钥算法可以用于加解密和数字签名:

l              加解密:发送者利用接收者的公钥对报文进行加密,拥有对应私钥的合法接收者使用私钥对数据进行解密,从而可以保证数据的机密性。

l              数字签名:发送者利用自己的私钥对数据进行加密,接收者利用发送者的公钥对数据进行解密。由于通过私钥加密后的数据只能利用对应的公钥进行解密,因此根据解密是否成功,就可以判断发送者的身份,如同发送者对数据进行了“签名”。例如,用户1使用自己的私钥对数据进行签名后,发给用户2,用户2利用用户1的公钥验证签名,如果签名是正确的,那么就能够确认该数据来源于用户1。

非对称密钥算法包括RSA(Rivest Shamir and Adleman)和DSA(Digital Signature Algorithm,数字签名算法)。RSA既可以用于加解密,又可以用于签名,而DSA只用于签名。

非对称密钥算法的计算量较大,运算速度较慢。如果利用非对称密钥算法对整个报文进行加密和解密,则会影响报文的处理速度。因此,对称密钥算法经常用来加解密数据,以保证数据传输的安全性;而非对称密钥算法经常用于只需对较短的数据摘要进行加解密的数字签名,以便验证对端的身份。

 

1.2  配置本地的非对称密钥对

用户通过命令行可以在本地设备上生成本地非对称密钥对、导出本地非对称密钥对的主机公钥部分和销毁本地非对称密钥对。

1.2.1  生成非对称密钥

表1-1 生成非对称密钥对

操作

命令

说明

进入系统视图

system-view

-

生成本地DSA或RSA密钥对

public-key local create { dsa | rsa }

必选

缺省情况下,没有生成DSA或RSA密钥对

 

生成非对称密钥对时,需要注意:

l              生成RSA密钥对时,将同时生成两个密钥对——服务器密钥对和主机密钥对,二者分别包括一个公钥和一个私钥。RSA服务器密钥和主机密钥模数的最小长度为512比特,最大长度为2048比特。生成RSA密钥对时会提示用户输入密钥模数的长度,建议密钥模数的长度大于或等于768比特,以提高安全性保证。

l              生成DSA密钥对时,只生成一个主机密钥对。DSA主机密钥模数的最小长度为512比特,最大长度为2048比特。生成DSA密钥对时会提示用户输入密钥模数的长度,建议密钥模数的长度大于或等于768比特,以提高安全性保证。

执行public-key local create命令后,生成的密钥对将保存在设备中,设备重启后不会丢失。

 

1.2.2  显示或导出非对称密钥对的主机公钥

对于已经生成的RSA或DSA密钥对,可以按照指定格式在屏幕上显示主机公钥或导出主机公钥到指定文件。用户可以将显示或导出的主机公钥保存到远端设备上,以便远端设备利用此主机公钥通过数字签名算法验证本地设备的身份。

表1-2 显示或导出RSA或DSA密钥对的主机公钥

操作

命令

说明

进入系统视图

system-view

-

按照指定格式在屏幕上显示本地RSA主机公钥或导出本地RSA主机公钥到指定文件

public-key local export rsa { openssh | ssh1 | ssh2 } [ filename ]

根据导出的公钥类型选择相应的命令

按照指定格式在屏幕上显示本地DSA主机公钥或导出本地DSA主机公钥到指定文件

public-key local export dsa { openssh | ssh2 } [ filename ]

 

1.2.3  销毁非对称密钥

在如下几种情况下,用户可能需要销毁旧的非对称密钥对,并生成新的密钥对:

l              本地设备的私钥泄露,导致非法用户冒充本地设备访问网络。

l              保存密钥对的存储设备出现故障,更换了新的存储设备。

l              密钥对使用了较长时间,为了避免密钥泄露或破译。

l              CA(Certificate Authority,证书机构)颁发的证书到达有效期。通过display pki certificate命令,可以查看证书的有效期。CA和证书的详细介绍,请参见“安全配置指导”中的“PKI”。

表1-3 销毁非对称密钥对

操作

命令

说明

进入系统视图

system-view

-

销毁非对称密钥对

public-key local destroy { dsa | rsa }

必选

 

1.3  配置远端主机的公钥

为了实现对远端主机的身份验证,需要在本地设备上配置远端主机的RSA或DSA公钥。

配置远端主机公钥的方式有如下两种:

l              手工配置:用户事先在远端主机上通过显示命令或其他方式查看远端主机的公钥,并记录远端主机公钥的内容。在本地设备上采用手工输入的方式将远端主机的公钥配置到本地。手工输入远端主机公钥时,可以逐个字符输入,也可以一次拷贝粘贴多个字符。

l              从公钥文件中导入:用户事先通过FTP/TFTP,以二进制(binary)方式,将远端主机的公钥文件保存到本地设备,本地设备从该公钥文件中导入远端主机的公钥。导入公钥时,系统会自动将远端主机的公钥文件转换为PKCS(Public Key Cryptography Standards,公共密钥加密标准)编码形式。

l          手工配置远端主机的公钥时,输入的主机公钥必须满足一定的格式要求。通过display public-key local public命令显示的公钥可以作为输入的公钥内容;通过其他方式显示的公钥可能不满足格式要求,导致主机公钥保存失败。因此,建议选用从公钥文件导入的方式配置远端主机的公钥。

l          设备上最多可以配置20个远端主机的公钥。

 

表1-4 手工配置远端主机的公钥

操作

命令

说明

进入系统视图

system-view

-

创建远端主机公钥,并进入公钥视图

public-key peer keyname

必选

进入公钥编辑视图

public-key-code begin

-

配置远端主机的公钥

逐个字符输入或拷贝粘贴公钥内容

必选

在输入公钥内容时,字符之间可以有空格,也可以按回车键继续输入数据

退回公钥视图,并保存配置的主机公钥

public-key-code end

必选

退出视图时,系统自动保存配置的主机公钥

退回系统视图

peer-public-key end

-

 

对于RSA密钥对,输入服务器密钥对中的公钥或主机密钥对中的公钥,公钥编辑都可以成功。但是,在SSH应用中,输入的密钥数据只能是主机密钥对中的公钥,否则会导致身份验证失败。SSH的详细介绍,请参见“安全配置指导”中的“SSH2.0”。

 

表1-5 从公钥文件中导入远端主机的公钥

操作

命令

说明

进入系统视图

system-view

-

从公钥文件中导入远端主机的公钥

public-key peer keyname import sshkey filename

必选

 

1.4  公钥显示和维护

在完成上述配置后,在任意视图下执行display命令可以显示配置后公钥的信息,通过查看显示信息验证配置的效果。

表1-6 公钥显示和维护

操作

命令

显示本地密钥对中的公钥部分

display public-key local { dsa |  rsa } public [ | { begin | exclude | include } regular-expression ]

显示保存在本地的远端主机的公钥信息

display public-key peer [ brief | name publickey-name ] [ | { begin | exclude | include } regular-expression ]

 

1.5  公钥管理典型配置举例

1.5.1  手工配置远端主机的公钥

1. 组网需求

图1-2所示,为了防止非法用户访问,Router B采用数字签名方法对访问它的Router A进行身份验证。进行身份验证前,需要在Router B上配置Router A的公钥。

本例中:

l              Router B采用非对称密钥算法RSA验证Router A的身份。

l              采用手工方式在Router B上配置Router A的主机公钥。

2. 组网图

图1-2 手工配置远端主机的公钥组网图

 

3. 配置步骤

(1)        配置Router A

# 在Router A上生成RSA密钥对。

<RouterA> system-view

[RouterA] public-key local create rsa

The range of public key size is (512 ~ 2048).

NOTES: If the key modulus is greater than 512,

It will take a few minutes.

Press CTRL+C to abort.

Input the bits of the modulus[default = 1024]:

Generating Keys...

++++++

++++++

++++++++

++++++++

# 显示生成的RSA密钥对的公钥部分。

[RouterA] display public-key local rsa public

 

=====================================================

Time of Key pair created: 09:50:06  2007/08/07

Key name: HOST_KEY

Key type: RSA Encryption Key

=====================================================

Key code:

30819F300D06092A864886F70D010101050003818D0030818902818100D90003FA95F5A44A2A2CD3F814F985
4C4421B57CAC64CFFE4782A87B0360B600497D87162D1F398E6E5E51E5E353B3A9AB16C9E766BD995C669A78
4AD597D0FB3AA9F7202C507072B19C3C50A0D7AD3994E14ABC62DB125035EA326470034DC078B2BAA3BC3BCA
80AAB5EE01986BD1EF64B42F17CCAE4A77F1EF999B2BF9C4A10203010001

 

=====================================================

Time of Key pair created: 09:50:07  2007/08/07

Key name: SERVER_KEY

Key type: RSA Encryption Key

=====================================================

Key code:

307C300D06092A864886F70D0101010500036B003068026100999089E7AEE9802002D9EB2D0433B87BB6158E
35000AFB3FF310E42F109829D65BF70F7712507BE1A3E0BC5C2C03FAAF00DFDDC63D004B4490DACBA3CFA9E8
4B9151BDC7EECE1C8770D961557D192DE2B36CAF9974B7B293363BB372771C2C1F0203010001

(2)        配置Router B

# 在Router B上配置Router A的主机公钥:在公钥编辑视图输入Router A的主机公钥,即在Router A上通过display public-key local dsa public命令显示的主机公钥HOST_KEY内容。

<RouterB> system-view

[RouterB] public-key peer Routera

Public key view: return to System View with "peer-public-key end".

[RouterB-pkey-public-key] public-key-code begin

Public key code view: return to last view with "public-key-code end".

[RouterB-pkey-key-code]30819F300D06092A864886F70D010101050003818D0030818902818100D90003F
A95F5A44A2A2CD3F814F9854C4421B57CAC64CFFE4782A87B0360B600497D87162D1F398E6E5E51E5E353B3A
9AB16C9E766BD995C669A784AD597D0FB3AA9F7202C507072B19C3C50A0D7AD3994E14ABC62DB125035EA326
470034DC078B2BAA3BC3BCA80AAB5EE01986BD1EF64B42F17CCAE4A77F1EF999B2BF9C4A10203010001

[RouterB-pkey-key-code] public-key-code end

[RouterB-pkey-public-key] peer-public-key end

# 显示Router B上保存的Router A的主机公钥信息。

[RouterB] display public-key peer name Routera

 

=====================================

  Key Name  : Routera

  Key Type  : RSA

  Key Module: 1024

=====================================

Key Code:

30819F300D06092A864886F70D010101050003818D0030818902818100D90003FA95F5A44A2A2CD3F814F985
4C4421B57CAC64CFFE4782A87B0360B600497D87162D1F398E6E5E51E5E353B3A9AB16C9E766BD995C669A78
4AD597D0FB3AA9F7202C507072B19C3C50A0D7AD3994E14ABC62DB125035EA326470034DC078B2BAA3BC3BCA
80AAB5EE01986BD1EF64B42F17CCAE4A77F1EF999B2BF9C4A10203010001

1.5.2  从公钥文件中导入远端主机的公钥

1. 组网需求

图1-3所示,为了防止非法用户访问,Router B采用数字签名方法对访问它的Router A进行身份验证。进行身份验证前,需要在Router B上配置Router A的公钥。

本例中:

l              Router B采用非对称密钥算法RSA验证Router A的身份。

l              采用从公钥文件中导入的方式在Router B上配置Router A的主机公钥。

2. 组网图

图1-3 从公钥文件中导入远端主机的公钥组网图

 

3. 配置步骤

(1)        在Router A上生成密钥对,并导出公钥

# 在Router A上生成RSA密钥对。

<RouterA> system-view

[RouterA] public-key local create rsa

The range of public key size is (512 ~ 2048).

NOTES: If the key modulus is greater than 512,

It will take a few minutes.

Press CTRL+C to abort.

Input the bits of the modulus[default = 1024]:

Generating Keys...

++++++

++++++

++++++++

++++++++

# 显示生成的RSA密钥对的公钥部分。

[RouterA] display public-key local rsa public

 

=====================================================

Time of Key pair created: 09:50:06  2007/08/07

Key name: HOST_KEY

Key type: RSA Encryption Key

=====================================================

Key code:

30819F300D06092A864886F70D010101050003818D0030818902818100D90003FA95F5A44A2A2CD3F814F985
4C4421B57CAC64CFFE4782A87B0360B600497D87162D1F398E6E5E51E5E353B3A9AB16C9E766BD995C669A78
4AD597D0FB3AA9F7202C507072B19C3C50A0D7AD3994E14ABC62DB125035EA326470034DC078B2BAA3BC3BCA
80AAB5EE01986BD1EF64B42F17CCAE4A77F1EF999B2BF9C4A10203010001

 

=====================================================

Time of Key pair created: 09:50:07  2007/08/07

Key name: SERVER_KEY

Key type: RSA Encryption Key

=====================================================

Key code:

307C300D06092A864886F70D0101010500036B003068026100999089E7AEE9802002D9EB2D0433B87BB6158E
35000AFB3FF310E42F109829D65BF70F7712507BE1A3E0BC5C2C03FAAF00DFDDC63D004B4490DACBA3CFA9E8
4B9151BDC7EECE1C8770D961557D192DE2B36CAF9974B7B293363BB372771C2C1F0203010001

# 将生成的RSA主机公钥导出到指定文件Routera.pub中。

[RouterA] public-key local export rsa ssh2 Routera.pub

[RouterA] quit

(2)        在Router B上启动FTP服务器功能

# 启动FTP服务器功能,并创建FTP用户,用户名为ftp,密码为123,用户级别为3。

<RouterB> system-view

[RouterB] ftp server enable

[RouterB] local-user ftp

[RouterB-luser-ftp] password simple 123

[RouterB-luser-ftp] service-type ftp

[RouterB-luser-ftp] authorization-attribute level 3

[RouterB-luser-ftp] quit

(3)        Router A上传公钥文件

# 将公钥文件Routera.pub通过FTP以二进制方式上传到Router B。

<RouterA> ftp 10.1.1.2

Trying 10.1.1.2 ...

Press CTRL+K to abort

Connected to 10.1.1.2.

220 FTP service ready.

User(10.1.1.2:(none)):ftp

331 Password required for ftp.

Password:

230 User logged in.

[ftp] binary

200 Type set to I.

[ftp] put Routera.pub

227 Entering Passive Mode (10,1,1,2,5,148).

125 BINARY mode data connection already open, transfer starting for /Routera.pub.

226 Transfer complete.

FTP: 299 byte(s) sent in 0.189 second(s), 1.00Kbyte(s)/sec.

(4)        Router B从公钥文件中导入公钥

# Router A将公钥文件Routera.pub上传到Router B后,从公钥文件中导入Router A的主机公钥。

[RouterB] public-key peer Routera import sshkey Routera.pub

# 显示Router B上保存的Router A的主机公钥信息。

[RouterB] display public-key peer name Routera

 

=====================================

  Key Name  : Routera

  Key Type  : RSA

  Key Module: 1024

=====================================

Key Code:

30819F300D06092A864886F70D010101050003818D0030818902818100D90003FA95F5A44A2A2CD3F814F985
4C4421B57CAC64CFFE4782A87B0360B600497D87162D1F398E6E5E51E5E353B3A9AB16C9E766BD995C669A78
4AD597D0FB3AA9F7202C507072B19C3C50A0D7AD3994E14ABC62DB125035EA326470034DC078B2BAA3BC3BCA
80AAB5EE01986BD1EF64B42F17CCAE4A77F1EF999B2BF9C4A10203010001

不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!