数字证书PKI原理

Chapter - 1 PKI基础架构介绍
密钥管理面临的挑战

在使用任何基于RSA服务之前 ,一个实体需要真实可靠的获取其他实体的公钥。需要有以下保障。

  1. 通过非信任的通道,公钥交换必须是安全的。
  2. 在密钥交换过程中,公钥必须不能够被截获和更改。
  3. 交换呈现Full Mesh的复杂度。
  4. 由最终用户来确认密钥有效性,非常不靠谱。
为什么要用PKI

公钥基础设施PKI(Public Key Infrastructure),是通过使用公钥技术和数字证书来提供系统信息安全服务,并负责验证数字证书持有者身份的一种体系。PKI技术是信息安全技术的核心,也是电子商务的关键和基础技术。PKI保证了通信数据的私密性、完整性、不可否认性和 源认证性 。

IPSec身份认证(预共享密钥方式):

  1. 配置简单。只需要在总部和二分部的网关上配相同的密钥即可。
  2. 维护复杂。随着分部数量越俩越多,总部和每个分部之间形成的对等体都要配置预共享秘钥。
  3. 安全风险高。如果所有对等体都使用同一个密钥,存在安全风险。

IPSec身份认证(PIK中的证书认证方式):

  1. 维护简单。随着分部数量越来越多,只需要向CA申请证书即可。
  2. 安全风险低。不同的分部使用不同的证书,对应的密钥也不同。
数字证书介绍

数字证书:
数字证书简称证书,它是一个经证书授权中心CA数字签名的文件,包含拥有者的公钥及相关身份信息。数字证书技术解决了数字签名技术中无法确定公钥是指定拥有者的问题。

注意:数字证书仅仅是解决了“这个公钥的持有者到底是谁“的问题。

证书结构:
最简单的证书包含一个公钥、名称以及证书授权中心的数字签名。一般情况下证书中还包括密钥的有效期,颁发者(证书授权中心)的名称,该证书的序列号等信息,证书的结构遵循X.509 v3版本的规范。如下图:

证书的各字段解释:

  • 版本:即使用X.509的版本,目前普遍使用的是v3版本(0x2)。
  • 序列号:颁发者分配给证书的一个正整数,同一颁发者颁发的证书序列号各不相同,可用与颁发者名称一起作为证书唯一标识。
  • 签名算法:颁发者颁发证书使用的签名算法。
  • 颁发者:颁发该证书的设备名称,必须与颁发者证书中的主体名一致。通常为CA服务器的名称。
  • 有效期:包含有效的起、止日期,不在有效期范围的证书为无效证书。
  • 主体名:证书拥有者的名称,如果与颁发者相同则说明该证书是一个自签名证书。
  • 公钥信息:用户对外公开的公钥以及公钥算法信息。
  • 扩展信息:通常包含了证书的用法、CRL的发布地址等可选字段。
  • 签名:颁发者用私钥对证书信息的签名。

证书类型

  • 自签名证书:自签名证书又称为根证书,是自己颁发给自己的证书,即证书中的颁发者和主体名相同。
  • CA证书:CA自身的证书。如果PKI系统中没有多层级CA,CA证书就是自签名证书;如果有多层级CA,则会形成一个CA层次结构,最上层的CA是根CA,它拥有一个CA“自签名”的证书。
  • 本地证书:CA颁发给申请者的证书。
  • 设备本地证书:设备根据CA证书给自己颁发的证书,证书中的颁发者名称是CA服务器的名称。

证书格式

  • PKCS#12:以二进制格式保存证书,可以包含私钥,也可以不包含私钥。常用的后缀有:.P12和.PFX。
  • DER:以二进制格式保存证书,不包含私钥。常用的后缀有:.DER、.CER和.CRT。
  • PEM:以ASCII码格式保存证书,可以包含私钥,也可以不包含私钥。常用的后缀有:.PEM、.CER和.CRT。

对于证书后缀为.CER或.CRT,可以用记事本打开证书,查看证书内容来区分证书格式。如果有类似"—–BEGIN CERTIFICATE—–"和"—–END CERTIFICATE—–"的头尾标记,则证书格式为PEM。如果是乱码,则证书格式为DER.

PKI核心部分CA

CA介绍
证书认证机构CA(Certificate Authority)。CA是PKI的信任基础,是一个用于颁发并管理数字证书的可信实体。它是一种权威性、可信任性和公正性的第三方机构,通常由服务器充当,例如Windows Server 2008。

CA通常采用多层次的分级结构,根据证书颁发机构的层次,可以划分为根CA和从属CA。

CA的核心功能就是发放和管理数字证书,包括:证书的颁发、证书的更新、证书的撤销、证书的查询、证书的归档、证书废除列表CRL(Certificate Revocation List)的发布等。

有关CA的特性:

  • 仅仅只有一个受信任的介绍者(证书颁发机构)
  • CA签署每一个人的公钥
  • 每个人都有CA的公钥

CA颁发证书流程

  • 每个实体都要获取CA的公钥(认证CA的过程)
  • 每个实体都要提交自己的公钥给CA(注册到PKI)
  • 这个初始步骤,必须手动认证或者通过一个可信任的传输网络来执行。
  • CA使用自己的私钥为提交的公钥做数字签名。
  • 被数字签了名的公钥(身份证书)再返回给实体。
  • 实体现在就可以通过非信任的网络来彼此交换被CA签了名的公钥了。
  • 收到的公钥都是被CA的公钥所确认的,CA的公钥在每个实体本地必须是有效的。

数字证书验证的过程
【图1】

【图2】


【图3】


  • 三个角色用户介绍CA:证书颁发机构,用户A,用户B。如图2.
  • 每一个用户都需要去获取证书颁发机构的公钥(认证CA公钥),如图3
  • 每一个用户都将自己的公钥和个人信息发送给证书颁发机构。
  • 数字证书包含个人信息,公钥,证书有效期,认证机构的数字签名,如图4所示
  • 仅仅只是解决“公钥持有者身份”的问题
  • 当用户需要进行对应的RSA操作的时候,就需要交互自己的证书

例如
* 用户B获取到了用户A的证书,包含个人信息,公钥,CA做的数字签名
* B会使用证书服务器的公钥,解密数字签名,得到明文的摘要
* 再将A的个人信息和公钥做哈希,得到另外一个摘要,对比两个摘要,相等,证书验证通过
* 同时可确认A的公钥是真实的

证书申请过程

  • 同步时间:时间是PIK系统的重中之重,必须先确保参加PKI系统的设备和主机的时间同步。才能开始PKI的部署。当设备的时间慢与证书有效期的开始时间或者设备时间大于证书有效期的结束时间那么证书都是无效的。忌讳:设备时间比证书服务器的时间慢。
  • 部署证书服务器。证书服务器是整个PKI系统的核心。可以选择微软的证书服务器。
  • 客户端产生密钥对。每一个实体在申请证书之前,需要预先产生RSA的秘钥对。
  • 验证证书服务器的合法性。每一个实体需要获取证书服务器的根证书,里面包含证书服务器的公钥。获取了根证书后,可以通过fingerprint离先验证证书服务器。
  • 申请个人证书。每一个实体发送自己的个人信息和公钥到证书服务器。(在线和离线方式)
  • CA审核并签名证书。管理员对每一个证书请求进行审核,并对个人信息和公钥内容进行数字签名,签名后的文件即为数字证书。
  • CA颁发数字证书给设备。证书服务器把签名的证书颁发给实体。
  • 设备相互交换证书。

证书申请方式
证书主要有以下申请方式:

  • SCEP(Simple Certificate Enrollment Protocol)for VPN devices。

    • 主要用于在线申请。
    • 主要由Cisco设计的技术。
    • VPN设备PKI证书申请的工业标准。
    • HTTP传输协议。
    • 被绝大多数VPN和CA厂商支持。
    • 为VPN设备(VPN最终用户)提供了简单而功能强大的证书申请方式。
  • File-based(PKCS#10)

    • 主要用于离线证书申请。

    • 定义了证书请求的数据格式。

    • 证书请求包括:

      • DN(Distinguished name)个人信息
      • Public key公钥
      • Opentional set of attributes其他属性。
  • Web-based(browser-to-CA)

    • 主要用于MS证书服务器的申请。

证书吊销方式
证书具有一个指定的寿命,但 CA 可通过称为证书吊销的过程来缩短这一寿命。CA 发布一个证书吊销列表 (CRL),列出被认为不能再使用的证书的序列号。CRL 指定的寿命通常比证书指定的寿命短得多。CA 也可以在 CRL 中加入证书被吊销的理由。它还可以加入被认为这种状态改变所适用的起始日期。

可将下列情况指定为吊销证书的理由:

  • 泄露密钥
  • 泄露 CA
  • 从属关系改变
  • 被取代
  • 业务终止
  • 证书持有(这是唯一让您能够改变被吊销证书状态的理由码,在证书状态有问题的情况下非常有用)
Chapter - 2 IPsec VPN基于数字证书验证

1. 实验拓扑

2. 实验需求

  • 使用PKI证书认证,完成Site_1和Site_2之间的IPsec vpn建立。
  • 使用路由器作为CA证书颁发机构。
  • 此实验由EVE模拟器内部完成,注意,必须使用dynamips镜像完成。
  • 本实验采用镜像为:C7200-ADVIPSERVICESK9-M,Version 15.2(4)S2,C3725-ADVENTERPRISEK9-M, Version 12.4(15)T14

3. IP地址规划

设备 接口 IP地址
CA F0/0 202.200.200.100/24
Site_1 F0/0 202.200.200.1/24
Site_1 Loopback 0 1.1.1.1/24
Site_2 F0/0 202.200.200.2/24
Site_2 Loopback 0 2.2.2.2/24

4. 实验步骤

步骤1:IP地址及路由配置

  • IP地址(省略)

  • 路由配置

Site_1:
ip route 0.0.0.0 0.0.0.0 202.200.200.2

Site_2:
ip route 0.0.0.0 0.0.0.0 202.200.200.1

步骤2:配置CA服务器的时钟,Site_1,Site_2向CA同步时钟。并保证Site_1,Site_2时钟已同步。

CA服务器:
clock timezone BJ 8
clock set 10:26:00 3 jul 2019

ntp master
ntp authenticate
ntp authentication-key 1 md5 cisco

Site_1:
clock timezone BJ 8

ntp authentication-key 1 md5 cisco
ntp trusted-key 1
ntp server 202.200.200.100 key 1

Site_2:
clock timezone BJ 8

ntp authentication-key 1 md5 cisco
ntp trusted-key 1
ntp server 202.200.200.100 key 1

查看同步情况
Site_1#show ntp status 
Clock is** synchronized**, stratum 9, reference is 202.200.200.100

步骤3:部署证书服务器

  • 部署证书服务器
ip http server  //开启80号端口,通过此端口下发证书。
ip domain name cisco.com

crypto pki server CA  //创建CA服务器,名字为CA,cn是证书服务器个人信息,c是国家,l是地点。
 issuer-name cn=CA.cisco.com,c=CN,l=WH
 lifetime certificate 180  //证书有效期
 no shutdown
 
 %Some server settings cannot be changed after CA certificate generation.
% Please enter a passphrase to protect the private key
% or type Return to exit
Password: p@ssw0rd  //此处设置密码用于加密私钥

Re-enter password: P@ssw0rd
% Generating 1024 bit RSA keys, keys will be non-exportable...[OK]
% Exporting Certificate Server signing certificate and keys...

% Certificate Server enabled.
  • 查看证书服务器状态,enable。
CA#show crypto pki server 
Certificate Server CA:
    Status: **enabled**
    State: **enabled**
    Server's configuration is locked  (enter "shut" to unlock it)
    Issuer name: cn=CA.cisco.com,c=CN,l=WH
    CA cert fingerprint: 75AF1581 B4299CD4 2D83A4FF 75C20CB0 
    Granting mode is: manual
    Last certificate issued serial number: 0x1
    CA certificate expiration timer: 17:20:46 BJ Jul 1 2022
    CRL NextUpdate timer: 23:20:46 BJ Jul 2 2019
    Current primary storage dir: nvram:
    Database Level: Minimum - no cert data written to storage

步骤4:Site_1向证书服务器申请证书

  • Site_1指定证书服务器
ip domain name cisco.com
crypto key generate rsa modulus 1024 label S1key

crypto pki trustpoint CA
 enrollment url http://202.200.200.100:80
 subject-name cn=Site_1.cisco.com  //Site_1的个人信息
 revocation-check crl  //支持证书吊销检查
 rsakeypair S1key

  • Site_1认证证书服务器

Site_1(config)#crypto pki authenticate CA
Certificate has the following attributes:
       Fingerprint MD5: 75AF1581 B4299CD4 2D83A4FF 75C20CB0 
      Fingerprint SHA1: 30A0FEAD B7A1E927 8581F8E8 B4C939F4 DF5B0C7F 
//参与者通过SCEP在线获取证书,将证书服务器的公钥拿到,保存到本地,做了哈希,然后将哈希值与管理源做确认。
% Do you accept this certificate? [yes/no]: yes   //确认完毕后,选择“Yes”来接收公钥。
Trustpoint CA certificate accepted.
  • Site_1查看根证书
Site_1#show crypto pki certificates 
CA Certificate
  Status: Available
  Certificate Serial Number (hex): 01
  Certificate Usage: Signature
  Issuer: 
    cn=CA.cisco.com
    c=CN
    l=WH
  Subject: 
    cn=CA.cisco.com
    c=CN
    l=WH
  Validity Date: 
    start date: 17:20:46 BJ Jul 2 2019
    end   date: 17:20:46 BJ Jul 1 2022
  Associated Trustpoints: CA
  • Site_1申请个人证书

Site_1(config)#crypto pki enroll CA
% Start certificate enrollment .. 
% Create a challenge password. You will need to verbally provide this
   password to the CA Administrator in order to revoke your certificate.
   For security reasons your password will not be saved in the configuration.
   Please make a note of it.

Password: P@ssw0rd
Re-enter password: P@ssw0rd

% The subject name in the certificate will include: cn=Site_1.cisco.com
% The subject name in the certificate will include: Site_1.cisco.com
% Include the router serial number in the subject name? [yes/no]: yes
% The serial number in the certificate will be: 4279256517
% Include an IP address in the subject name? [no]: no
Request certificate from CA? [yes/no]: yes
% Certificate request sent to Certificate Authority
% The 'show crypto pki certificate verbose CA' commandwill show the fingerprint.

  • 证书服务器查看证书申请状态并颁发证书
CA#crypto pki server CA info requests  //查看证书服务器查看证书申请状态
Router certificates requests:
ReqID  State      Fingerprint                      SubjectName
--------------------------------------------------------------
1      pending    35CEF2DC2EC48A1FF7D672F1A212AE1F serialNumber=4279256517+hostname=Site_1.cisco.com,cn=Site_1.cisco.com

CA#crypto pki server CA grant 1  //颁发证书
  • Site_1查看获取到的证书

Site_1#show crypto pki certificates 

Certificate
  Subject:
    Name: Site_1.cisco.com
    Serial Number: 4279256517
   Status: Pending
   Key Usage: General Purpose
   Certificate Request Fingerprint MD5: 35CEF2DC 2EC48A1F F7D672F1 A212AE1F 
   Certificate Request Fingerprint SHA1: 0098AA60 8500173C 6F823615 FA5CB2D4 3FC78207 
   Associated Trustpoint: CA 

步骤5:Site_2获取证书

  • Site_2指定证书服务器

ip domain name cisco.com
crypto key generate rsa modulus 1024 label S2key

crypto pki trustpoint CA
 enrollment url http://202.200.200.100:80
 subject-name cn=Site_2.cisco.com  //Site_1的个人信息
 revocation-check crl  //支持证书吊销检查
 rsakeypair S2key
  • Site_2向CA服务器申请证书,方法同Site_1一致,请参考步骤4,此处省略。
  • Site_2查看证书状态
 Site_2#show crypto pki certificates 
Certificate
  Status: Available
  Certificate Serial Number (hex): 03
  Certificate Usage: General Purpose
  Issuer: 
    cn=CA.cisco.com
    c=CN
    l=WH
  Subject:
    Name: Site_2.cisco.com
    hostname=Site_2.cisco.com
    cn=Site_2.cisco.com
  Validity Date: 
    start date: 17:49:33 BJ Jul 2 2019
    end   date: 17:49:33 BJ Dec 29 2019
  Associated Trustpoints: CA 
  Storage: nvram:CAciscocom#3.cer

步骤5:部署基础的站点到站点IPsec VPN配置

  • Site_1 IPsec VPN配置:
crypto isakmp policy 10  //policy下没有指定任何验证加密和认证方式,默认就为证书认证。


crypto ipsec transform-set Trans esp-des esp-md5-hmac 
 mode tunnel

crypto map cisco 10 ipsec-isakmp 
 set peer 202.200.200.2
 set transform-set Trans 
 match address vpn
 
interface FastEthernet0/0
 crypto map cisco
 
  • Site_2 IPsec VPN配置: //policy下没有指定任何验证加密和认证方式,默认就为证书认证。
crypto isakmp policy 10

crypto ipsec transform-set Trans esp-des esp-md5-hmac 
 mode tunnel

crypto map cisco 10 ipsec-isakmp 
 set peer 202.200.200.1
 set transform-set Trans 
 match address vpn
 
interface FastEthernet0/0  
 crypto map cisco

步骤6:测试VPN的连通性

Site_1#ping 2.2.2.2 source l0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:
Packet sent with a source address of 1.1.1.1 
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 16/21/28 ms

Site_1#show crypto engine connections active 
Crypto Engine Connections

   ID  Type    Algorithm           Encrypt  Decrypt LastSeqN IP-Address
    5  IPsec   DES+MD5                   0        4        4 202.200.200.1
    6  IPsec   DES+MD5                   4        0        0 202.200.200.1
 1001  IKE     SHA+DES                   0        0        0 202.200.200.1
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容

  • PKI 基础知识 (摘自Microsoft Windows 2000 Server白皮书,2000年7月5日发布)...
    right_33cb阅读 943评论 0 1
  • 摘要 本白皮书介绍了加密和公钥基本结构(PKI)的概念和使用 Microsoft Windows 2000 Ser...
    陈sir的知识图谱阅读 963评论 0 1
  • 前言 文中首先解释加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的...
    sunny冲哥阅读 2,971评论 0 2
  • 数字证书原理 - 无恙 - 博客园 文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明...
    拉肚阅读 1,655评论 0 3
  • 组合图形面积问来是教学难点,这单元还未开始学习,我和萍妹便探起来,老师愁着教,学生接受起来也比较困难。 真正上课便...
    夏莲启臻阅读 253评论 0 1