一文读懂什么是CA证书
Normal
0
7.8 磅
0
2
false
false
false
EN-US
ZH-CN
X-NONE
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;}
//单纯使用公私钥进行加解密,会存在公钥被替换伪造的风险,无法判断公钥是否属于服务提供商。
//所以,公钥需要通过CA机构的认证。
//CA机构用自己的私钥,对服务提供商的相关信息及公钥进行加密生成数字证书。
//在进行安全连接的时候,服务提供商将证书一同发给用户。
//用户收到证书后,从他的CA认证机构下载证书/公钥,验证服务提供商证书的合法性。
//最后,从证书中提取服务商提供的公钥,加、解密信息进行通信。
名词解释:
CA: Certificate Authority,证书中心/证书授权中心/电子认证服务机构,负责管理和签发证书的,受公众信任足够权威的第三方机构,检查证书持有者身份的合法性,并签发证书,以防证书被伪造或篡改。
CA证书: CA颁发的证书, 或数字证书,包含证书拥有者的身份信息,CA机构签名,公钥等。
证书编码:
DER编码,二进制DER编码。
PEM编码,用于ASCII(BASE64)编码,文件由 "-----BEGIN"开始,"-----END"结束。
证书文件后缀:
.pem(openssl默认,PEM编码的文件) .crt(Unix/Linux,DER或PEM编码都可以) .cer(windows,二进制) .der(二进制)
秘钥文件:
.key
服务器证书申请文件/证书签名请求文件:
.req .csr
使用openssl模拟秘钥证书的生成过程:
openssl x509工具主要用于输出证书信息, 签署证书请求文件、自签署、转换证书格式等。它就像是一个完整的小型的CA工具箱。
1.生成服务器私钥:
1.1.需要经常输入密码:
openssl genrsa -des3 -out server_private.key 2048 会有输入密码的要求
1.2.去除密码:
openssl rsa -in server_private.key -out server_private.key
1.3.无密码证书秘钥:
openssl genrsa -out server_private.key 2048
//1.4.生成公钥:
//openssl rsa -in server_private.key -pubout -out server_public.key
.生成 服务器证书申请文件/证书签名请求文件 .req:
2.1.openssl req -new -key server_private.key -out server.req
会让输入Country Name 填 CN; Common Name 填 ip 也可以不填。
#查看server.req
2.2.openssl req -in server.req -text
.生成CA私钥:
3.1.openssl genrsa -out ca_private.key 2048
.生成 CA证书申请文件/证书签名请求文件 .req:
4.1.openssl req -new -key ca_private.key -out ca_request.req
#查看ca_request.req
4.2.openssl req -in ca_request.req -text
.创建CA证书,用来给服务器的证书签名:(这个证书请求本来应由更高级的CA用它的private key对这个证书请求进行签发,由于此时模拟的CA是 root CA,没有更高级的CA了,所以要进行自签发,用 自己的private key 对 自己的证书请求 进行签发。)
5.1.openssl x509 -req -in ca_request.req -signkey ca_private.key -days 365 -out ca.pem
#查看证书
5.2.openssl x509 -in ca.pem -noout -text
.CA用自己的CA证书ca.pem 和 私钥ca_private.key 为 server.req 文件签名,生成服务器证书,:
6.1.openssl x509 -req -in server.req -CA ca.pem -CAkey ca_private.key -days 365 -CAcreateserial -out server.pem
#查看证书
6.2.openssl x509 -in server.pem -noout -text
#查看公钥
6.3.openssl x509 -in server.pem -noout -pubkey
.查看服务器证书的modulus和服务器私钥的modulus,应该一样:
7.1.openssl x509 -in server.pem -noout -modulus
7.2.openssl rsa -in server_private.key -noout -modulus
.用户访问https网站,服务器会用private key加密数据传输,同时会把证书传给用户,里面有public key信息,用于解密数据。
用户使用公钥机密的时候,要确认此公钥是否是服务商的,是否是受信任的。
用户从服务商证书中发现,其证书是由某CA签发的,从CA官网下载他的证书,发现它由 更高级CA签发 或者 是root证书,自签发的。
这时就可以一级一级的验证证书的合法性,最终确认服务商的证书是否被信任。
验证后就可以使用公钥解密信息,进行通信。
openssl verify -CAfile ca.pem server.pem
. ls 出现以下文件:
ca.pem ca_private.key ca_request.req ca.srl server.pem server_private.key server.req
.从证书导出公钥:
openssl x509 -in server.pem -noout -pubkey -out server_public.key
.使用公钥加密,私钥解密:
openssl rsautl -encrypt -in test.txt -inkey server_public.key -pubin -out test_encrypt.txt
openssl rsautl -decrypt -in test_encrypt.txt -inkey server_private.key -out test_decrypt.txt
.不想浏览器发出警告,就导入ca.pem文件:
.查看证书内容:
13.1.打印出证书的内容:openssl x509 -in server.pem -noout -text
13.2.打印出证书的系列号:openssl x509 -in server.pem -noout -serial
13.3.打印出证书的拥有者名字:openssl x509 -in server.pem -noout -subject
13.4.以RFC2253规定的格式打印出证书的拥有者名字:openssl x509 -in server.pem -noout -subject -nameopt RFC2253
13.5.打印出证书的MD5特征参数:openssl x509 -in server.pem -noout -fingerprint
13.6.打印出证书有效期:openssl x509 -in server.pem -noout -dates
13.7.打印出证书公钥:openssl x509 -in server.pem -noout -pubkey
.证书秘钥要使用相同的编码格式
.证书格式转换:
PEM转DER格式:openssl x509 -inform pem -in server.pem -outform der -out server.der
DER转PEM格式:openssl x509 -inform der -in server.der -outform pem -out server.pem0
Normal
0
7.8 磅
0
2
false
false
false
EN-US
ZH-CN
X-NONE
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:普通表格;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:10.5pt;
mso-bidi-font-size:11.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;
mso-font-kerning:1.0pt;}
一文读懂什么是CA证书的更多相关文章
- [转帖]一文读懂 HTTP/2
一文读懂 HTTP/2 http://support.upyun.com/hc/kb/article/1048799/ 又小拍 • 发表于:2017年05月18日 15:34:45 • 更新于:201 ...
- 一文读懂HTTP/2及HTTP/3特性
摘要: 学习 HTTP/2 与 HTTP/3. 前言 HTTP/2 相比于 HTTP/1,可以说是大幅度提高了网页的性能,只需要升级到该协议就可以减少很多之前需要做的性能优化工作,当然兼容问题以及如何 ...
- 一文读懂AI简史:当年各国烧钱许下的愿,有些至今仍未实现
一文读懂AI简史:当年各国烧钱许下的愿,有些至今仍未实现 导读:近日,马云.马化腾.李彦宏等互联网大佬纷纷亮相2018世界人工智能大会,并登台演讲.关于人工智能的现状与未来,他们提出了各自的观点,也引 ...
- 一文读懂高性能网络编程中的I/O模型
1.前言 随着互联网的发展,面对海量用户高并发业务,传统的阻塞式的服务端架构模式已经无能为力.本文(和下篇<高性能网络编程(六):一文读懂高性能网络编程中的线程模型>)旨在为大家提供有用的 ...
- 从HTTP/0.9到HTTP/2:一文读懂HTTP协议的历史演变和设计思路
本文原作者阮一峰,作者博客:ruanyifeng.com. 1.引言 HTTP 协议是最重要的互联网基础协议之一,它从最初的仅为浏览网页的目的进化到现在,已经是短连接通信的事实工业标准,最新版本 HT ...
- 一文读懂 深度强化学习算法 A3C (Actor-Critic Algorithm)
一文读懂 深度强化学习算法 A3C (Actor-Critic Algorithm) 2017-12-25 16:29:19 对于 A3C 算法感觉自己总是一知半解,现将其梳理一下,记录在此,也 ...
- [转帖]MerkleDAG全面解析 一文读懂什么是默克尔有向无环图
MerkleDAG全面解析 一文读懂什么是默克尔有向无环图 2018-08-16 15:58区块链/技术 MerkleDAG作为IPFS的核心数据结构,它融合了Merkle Tree和DAG的优点,今 ...
- [转帖]从HTTP/0.9到HTTP/2:一文读懂HTTP协议的历史演变和设计思路
从HTTP/0.9到HTTP/2:一文读懂HTTP协议的历史演变和设计思路 http://www.52im.net/thread-1709-1-2.html 本文原作者阮一峰,作者博客:r ...
- 一文读懂HDMI和VGA接口针脚定义
一文读懂HDMI和VGA接口针脚定义 摘自:http://www.elecfans.com/yuanqijian/jiekou/20180423666604.html HDMI概述 HDMI是高清 ...
随机推荐
- iview 和 Elemet UI 源码比较
(近期给自己立了个小flag,读源码,每周至少读1篇源码) 下面来谈谈iview 和 Elemet UI 这两个基于Vue 的UI 框架源码的基本结构以及区别. 一.文件结构开发主要放在根文件夹下的s ...
- C# 视频监控系统(提供源码分享)
去过工厂或者仓库的都知道,在工厂或仓库里面,会有很多不同的流水线,大部分的工厂或仓库,都会在不同流水线的不同工位旁边安装一台电脑,一方面便于工位上的师傅把产品的重要信息录入系统,便于公司系统数据采集分 ...
- 论JS函数传参时:值传递与引用传递的区别
什么是值传递:值传递是指在调用函数时将实际参数(实参)复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数. 值传递的总结:也就是说,将实参复制到函数中的这个过程叫值传递 什么是 ...
- python自动化第二课 - python基础
1.标识符(identitifier),识别身份 定义:在编程语言中,标识符就是用户编程时使用的名字,用于给变量.常量.函数.语句块等命名 标识符命令规范: 1)英文,数字以及下划线(_)但不能以数字 ...
- Java原来还可以这么学:如何搞定面试中必考的集合类
原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者. 系列文章介绍 本文是<五分钟学Java>系列文章的一篇 本系列文章主要围绕Java程序员必须掌握的核心技能,结合我个人三年 ...
- DIY 作品 及 维修 不定时更新
手机电池DIY充电宝 2块,优质手机电池加一个升压ic ,焊上一个 usb 母头.比买的强多了. 还能调压,最高调到24V 可以带白光焊台. 更换手机 SIM/SD 卡二合一 贴上高温胶带,吹下来. ...
- Python3 面向对象之:多继承
多继承 class ShenXian: # 神仙 def fei(self): print("神仙都会⻜") class Monkey: # 猴 def chitao(self): ...
- 洛谷P1000超级马里奥的神奇解法
话说上过洛谷的都知道,有一道经典例题P1000超级马里奥,这一题,可以说是非常简单非常经典,但是就算如此,还是可以人才辈出,我是个比较循规蹈矩的人(雾),所以我的代码就比较平常,也就是直接输出了所要求 ...
- 学习 CSS 之用 CSS 3D 实现炫酷效果
一.前言 把大象关进冰箱需要几步?三步,把冰箱门打开,把大象关进去,把冰箱门关上. 用 CSS 实现 3D 效果需几步?三步,设置透视效果 perspective,改变元素载体为 preserve-3 ...
- 解决vue在控制台的 NavigationDuplicated 报错
解决问题: 点击相同的链接,会有一个重复key的报错 const originalPush = Router.prototype.push Router.prototype.push = functi ...