• 互联网公钥基础设施

    • 基于可信的第三方机构(CA,certification authority)实现不同成员在不见面的情况下进行安全通信
    • 订阅人
      • 需要证书来提供安全服务的团体
    • 登记机构(RA)
      • 完成证书签发的相关管理工作,如对用户进行必要的身份认证
    • 证书颁发机构(CA)
      • 确认用户身份后颁发证书
      • 在线提供其所签发证书的最新吊销信息
    • 信赖方
      • 执行证书验证的网页浏览器、其他程序及操作系统
  • 证书
    • 证书是包含公钥、订阅人相关信息以及证书颁发者数字签名的数字文件
    • 抽象语法表示法1(ASN.1)是支持复杂数据结构和对象的定义、传输、交换的一系列规则
    • X.509依赖于唯一编码规则(DER),只允许一种方式编码ASN.1的值
    • PEM是DER使用Base64编码后的ASCII编码格式
    • 证书字段
      • 版本:共3个版本,版本1只支持简单字段、版本2增加了2个标识符、版本3增加了扩展功能
      • 序列号:序列号需要是无序的且至少包括20位的熵
      • 签名算法:证书签名所用的算法
      • 颁发者(issuer):包含颁发者的DN,根据不同的实体会包含其他的部分。
      • 有效期:包含开始时间和结束时间
      • 使用者(suject):使用者的实体DN,和公钥一起用于证书签发,在自签名证书中,使用者和颁发者字段的DN是一样的。如今使用者字段已经废弃转而使用使用者可选名称扩展
      • 公钥:使用者公钥信息
    • 证书扩展:包含唯一的对象标识符(OID)、关键扩展标识器以及ASN.1格式的值
      • 使用者可选名称:支持通过DNS、IP地址、URI来将多个身份绑定在一起
      • 名称约束:可以限制CA签发证书的对象,比如只允许2级CA签发该公司的所拥有域名的证书
      • 基础约束:用来表明证书是否是CA证书,同时通过路径长度(path length)约束字段,限制二级CA证书路径的深度
      • 密钥用法:定义了证书中密钥可用的场景。
      • 扩展密钥用法:为了更加灵活的支持和限制公钥的使用场景
      • 证书策略:包含一个或多个策略每个策略都包含一个OID和可选限定符,其主要作用是表明证书是在何种条款下下发的。
      • CRL分发点:该扩展用于确定证书吊销列表(CRL)的LDAP或HTTP URL地址。每张证书都应该包含CRL和OCSP吊销信息
      • 颁发机构信息访问:表明如何访问签发CA提供的额外信息和服务
      • 使用者密钥标识符:用于识别包含特别公钥的证书
      • 授权密钥标识符:签发此证书的CA的唯一标识符,用于在构建证书链时,找到颁发者的证书
    • 证书链
      • 保证根证书的安全:直接由根证书签发最终实体证书是不允许的
      • 交叉证书:交叉证书是可以让新CA立即投入运营的唯一方式,通过已经广泛内置浏览器的CA对新CA进行签名
      • 划分:CA会将不同的操作分散给很多二级CA,二级CA一般使用自动化签发程序进行签发
      • 委派:CA允许某个外部CA可以给其内部系统进行签名
    • 证书生命周期
      • 证书的生命周期从订阅人将CSR提交给CA的时候就开始了

《HTTPS权威指南》读书笔记——PKI的更多相关文章

  1. HTTP权威指南读书笔记

    HTTP权威指南笔记 读书有两种境界,第一种境界是将书读薄,另一种是读厚.本篇文章就是HTTP权威指南的读书笔记,算是读书的第一重境界,将厚书读薄.文章对HTTP的一些关键概念做了比较详细的概述,通读 ...

  2. css权威指南读书笔记

    今天翻手机,翻到了许久之前看css权威指南时的笔记,遂移到博客中来. 1.属性选择器p.one class名为one的p元素p[class][name] 含有class和name属性的p元素p[cla ...

  3. 经典的性能优化最佳实践 web性能权威指南 读书笔记

    web性能权威指南 page 203 经典的性能优化最佳实践 无论什么网络,也不管所用网络协议是什么版本,所有应用都应该致力于消除或减 少不必要的网络延迟,将需要传输的数据压缩至最少.这两条标准是经典 ...

  4. css权威指南读书笔记-第10章浮动和定位

    这一章看了之后真是豁然开朗,之前虽然写了圣杯布局和双飞翼布局,有些地方也是模糊的,现在打算总结之后再写一遍. 以下都是从<css权威指南>中摘抄的我认为很有用的说明. 浮动元素 一个元素浮 ...

  5. Java性能优化权威指南-读书笔记(一)-操作系统性能监控工具

    一:CPU 1. 用户态CPU是指执行应用程序代码的时间占总CPU时间的百分比. 系统态CPU是指应用执行操作系统调用的时间占总CPU时间的百分比.系统态CPU高意味着共享资源有竞争或者I/O设备之间 ...

  6. Hadoop权威指南读书笔记

    本书中提到的Hadoop项目简述 Common:一组分布式文件系统和通用I/O的组件与接口(序列化.javaRPC和持久化数据结构). Avro:一种支持高效.跨语言的RPC以及永久存储数据的序列化系 ...

  7. Javascript权威指南——读书笔记

    一.JavaScript核心语法 1.字符串中接受RegExp参数的方法 (1)text.search(pattern)返回首次匹配成功的位置 (2)text.match(pattern)返回匹配组成 ...

  8. cassandra权威指南读书笔记--Cassandra架构(1)

    结构 集群-->数据中心-->机架-->节点. cassandra尽可能将数据副本存在多个数据中心,然后读取(查询路由到)尽可能在本地数据中心. 为了去中心化和分区容错性,使用gos ...

  9. JavaScript权威指南读书笔记

    JavaScript 1.变量 变量是一个表示值的符号,是一个名字,他的本质是值: var x; //----声明一个变量: 值通过等号“=”赋给变量,x = 16; 对象是名/值对的集合,或字符串到 ...

  10. Java性能优化权威指南-读书笔记(五)-JVM性能调优-吞吐量

    吞吐量是指,应用程序的TPS: 每秒多少次事务,QPS: 每秒多少次查询等性能指标. 吞吐量调优就是减少垃圾收集器消耗的CPU周期数,从而将更多的CPU周期用于执行应用程序. CMS吞吐调优 CMS包 ...

随机推荐

  1. HDU1846 Brave Game(巴什博弈)

    十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫<勇敢者的游戏>(英文名称:Zathura),一直到现在,我依然对于电影中的部分电脑特技印象深刻. 今天,大家选择 ...

  2. cmake 简介

    CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的 ...

  3. Python发送邮件以及对其封装

    对Python发送邮件进行封装 Python发送邮件分为四步 连接到smtp服务器 登陆smtp服务器 准备邮件 发送邮件 导入所需要的包 import smtplib from email.mime ...

  4. 【python测试开发栈】—理解python深拷贝与浅拷贝的区别

    内存的浅拷贝和深拷贝是面试时经常被问到的问题,如果不能理解其本质原理,有可能会答非所问,给面试官留下不好的印象.另外,理解浅拷贝和深拷贝的原理,还可以帮助我们理解Python内存机制.这篇文章将会通过 ...

  5. rails 中各种去重查询操作

    Table.select("DISTINCT name").map(&:name) : DISTINCT name去重查询name Table.active.map{|x| ...

  6. shell 100

    1.编写hello world脚本 #!/bin/bash# 编写hello world脚本 echo "Hello World!"2.通过位置变量创建 Linux 系统账户及密码 ...

  7. CCF-CSP题解 201512-3 画图

    画图时思路应该清晰一点.我是将坐标\((x,y)\)映射到\(canvas[y][x]\)上. 连线注意\(+\)号的情况,填充写好\(dfs\)就好了. #include <bits/stdc ...

  8. CCF-CSP题解 201604-4 游戏

    bfs #include <bits/stdc++.h> const int maxn = 100; using namespace std; int n, m, t; bool hasD ...

  9. 使用where 过滤数据

    --本章主要内容是MySQL中使用where搜索条件进行过滤数据. where条件在from子句后面给出,如下所示: select name,price from shops where price& ...

  10. Object类和异常

    Object类(所有类的顶级父类) 今天说的两个方法: equals:         用于比较两个对象是否相同,它其实是使用两个对象的内存地址进行比较,底层默认使用的是==比较运算符来判断的.    ...