一、理解什么是数字证书
 
 
理解数字证书等概念,无数次想好好看看数字证书,CA什么的,都没看懂,直到昨天看到了这篇博文,基本上是理解了
 
二、阿里云证书的CA证书使用情况
 
比如我在阿里云申请了一个域名lile.capatain.com,然后我要实现对这个域名能实现https,那么该怎么办呢?
 
阿里云的文档
1)首先去阿里云购买一个证书(在云盾那里),付钱之后才填写资料
 
2)然后补全资料
     填写域名
     填写个人信息
     企业组织信息
     上传相关信息:(重要的是这一步)
      这里需要生成CSR证书请求文件,阿里云的有两种选择,一种是系统生成CSR方式,一种是自己生成CSR,使用他的系统生成CSR方式,将自动生成证书和私钥,并且在证书申请成功后可直接在证书管理列表中下载证书和私钥
      
3)待审核通过后,就可以管理自己的证书列表了,使用了,如nginx,apache等。
 
三、自己扮演CA机构签发证书
 
因为我现在不需要真正的买一个CA证书,所以就自己当CA机构模拟一下,然后给自己的服务器颁发证书
 
这里模拟需分清楚两个角色:CA证书颁发机构、服务器申请方
 
CA证书颁发机构:
 
CA机构
自己扮演CA角色,必须准备好CA机构相关的文件:CA私钥、CSR证书请求文件,根据这两个生成CA根证书
 
1:生成CA证书私钥
openssl genrsa -out server.key 1024
 
2:生成CSR文件
openssl req -new -key ca.key -out ca.csr
 
3:命令行生成CA根证书
openssl x509 -req -in ca.csr -signkey ca.key -out ca.crt
 
以上是CA机构的文件准备完毕,下面为HTTPS服务器颁发证书
 
服务器申请方:
 
申请数字证书之前,必须准备好证书私钥和证书请求文件CSR(Certificate Signing Request,简称CSR)。CSR文件是公钥证书原始文件,里面包含了申请者的基本信息,如Common Name、Organization,同时也包含了申请者的公钥,需要提交给CA认证中心进行审核
 
手动生成CSR文件一般需要填写的信息:
 
• Organization Name(O): 申请单位名称法定名称,可以是中文或英文。
• Organization Unit(OU): 申请单位的所在部门,可以是中文或英文。
• Country Code(C): 申请单位所属国家,只能是两个字母的国家码。如:中国只能是 CN。
• State or Province(S): 申请单位所在省名或州名,可以是中文或英文。
• Locality(L): 申请单位所在城市名,可以是中文或英文。
• Common Name(CN): 申请SSL证书的具体网站域名。
 
1)使用OPENSSL生成私钥
 
openssl genrsa -out server.key 1024
 
2)生成CSR证书请求文件:
 
openssl req -new -key server.key -out server.csr
 
准备工作全部做好之后,自建的CA机构就可以根据服务器提供的证书请求文件CSR颁发证书了
 
openssl x509 -req -sha256 -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt
 
四、nginx测试
 
这样证书颁发就完成了,也就是server.crt这个文件,接下来假如到nginx做测试:
 
1:使用这个功能的模块ngx_http_ssl_module
      这个模块并不是默认就有的,必须得在安装编译的时候指定(--with-http_ssl_module),编译才有
 
2:这个模块要求Openssl
 
3:修改配置文件
      server_name  lile.captain.com;
      listen 443 ssl;
      ssl_certificate /root/test/ca/server.crt;
      ssl_certificate_key    /root/test/ca/server.key;
 
      打开ssl,建议使用listen 443 ssl,而不是ssl on;
 

4:在浏览器的安全选项里,导入CA根证书

      
 
 

5:在浏览器输入地址访问

      
     可以看到是没有问题的,这是火狐浏览器,用谷歌浏览器的话会提示这不是安全链接
 

客户端与服务端的交互过程如下:
1:客户端对域名lile.captain.com发起请求的时候,服务端会先把这个域名对应的证书文件发送给客户端
2:客户端接收到这个域名的证书文件,然后使用自己浏览器里给域名lile.captian.com颁发证书的CA根证书里CA公钥,对lile.captain.com这个域名证书文件进行解密,得到这个证书的hash值以及hash算法,客户端用hash算法对证书做一次hash,取得hash值与之前解密得到的hash值进行对比,一样说明此证书文件没有被更改过,然后客户端就可以使用证书里的公钥和服务端进行通信了
3:客户端会随机生成一个字符串发送给服务端,服务端用私钥加密发送给客户端,然后客户端用公钥解密,如果是的就认为对方是服务端
4:然后客户端随机生成对称密钥,并把对称密钥和生成对称密钥的算法用公钥加密发送给服务端
5:服务端得到后,用自己的私钥解密,然后服务端和客户端就开始了用堆成密钥通信的过程了
6:......通信......
 
相关博客

数字证书的理解以及自建CA机构颁发证书的更多相关文章

  1. 基于OpenSSL自建CA和颁发SSL证书

    关于SSL/TLS介绍见文章 SSL/TLS原理详解.关于证书授权中心CA以及数字证书等概念,请移步 OpenSSL 与 SSL 数字证书概念贴 . openssl是一个开源程序的套件.这个套件有三个 ...

  2. (11) openssl req(生成请求证书、私钥和自建CA)

    伪命令req大致有3个功能:生成证书请求文件.验证证书请求文件和创建根CA. 由于openssl req命令选项较多,所以先各举几个例子,再集中给出openssl req的选项说明.若已熟悉opens ...

  3. 自建CA实现HTTPS

    说明:这里是Linux服务综合搭建文章的一部分,本文可以作为自建CA搭建https网站的参考. 注意:这里所有的标题都是根据主要的文章(Linux基础服务搭建综合)的顺序来做的. 如果需要查看相关软件 ...

  4. 自建 CA 中心并签发 CA 证书

    目录 文章目录 目录 CA 认证原理浅析 基本概念 PKI CA 认证中心(证书签发) X.509 标准 证书 证书的签发过程 自建 CA 签发证书并认证 HTTPS 网站的过程 使用 OpenSSL ...

  5. 自建CA证书搭建https服务器

    由于CA收费,所以可以自建CA,通过将CA导入浏览器实现https的效果,曾经12306购票就需要自行导入网站证书. 关于https 2015年阿里巴巴将旗下淘宝.天猫(包括移动客户端)全站启用HTT ...

  6. 理解加密算法——创建CA机构,签发证书并开始TLS通信

    1 不安全的TCP通信 普通的TCP通信数据是明文传输的,所以存在数据泄露和被篡改的风险,我们可以写一段测试代码试验一下,NODE.JS代码: TCP Server: const net=requir ...

  7. shell脚本实现openss自建CA和证书申请

    #!/bin/bash # #******************************************************************** #Author: Ma Xue ...

  8. 十二张图:从0开始理解对称/非对称加密、CA认证、以及K8S各组件颁发证书原由

    目录 一.对称加密 二.对称加密-不安全 三.非对称加密 四.非对称加密-不安全 五.对称加密和非对称加密结合 六.对称加密和非对称加密结合-不安全 七.Https的做法-引入CA机构 八.乘胜追击理 ...

  9. openssl ca(签署和自建CA)

    用于签署证书请求.生成吊销列表CRL以及维护已颁发证书列表和这些证书状态的数据库.因为一般人无需管理crl,所以本文只介绍openssl ca关于证书管理方面的功能. 证书请求文件使用CA的私钥签署之 ...

随机推荐

  1. html css js 细节

    细节1 1.Chrome中文界面下会将小于12px的字体默认显示为12px,解决方法:在CSS中加入-webkit-text-size-adjust:none; 2.link可以加载除CSS以外的其他 ...

  2. Axure 页面内多组内容切换的实现 + 利用一个内联框架实现百度地图访问

    Axure  页面内多组内容切换的实现,场景:点击某个元件的时候,会显示响应的页面 操作:将显示的页面设置为动态面板,如图所示应该设置动态面板的状态为三个状态,分别为点击qq账号.手机账号.邮箱账号时 ...

  3. 《SQL 基础教程》第二章:查询基础

    这一章的结构如下: SELECT 语句基础 算术运算符和比较运算符 逻辑运算符 SELECT 语句可用于查询数据,并且可以设定条件来查询具有特定值的记录.条件的设定就需要算数运算符.比较运算符和逻辑运 ...

  4. VUE环境搭建、创建项目、vue调试工具

    环境搭建 第一步 安装node.js 打开下载链接:   https://nodejs.org/en/download/    这里下载的是node-v6.9.2-x64.msi; 默认式的安装,默认 ...

  5. 『TensorFlow』命令行参数解析

    argparse很强大,但是我们未必需要使用这么繁杂的东西,TensorFlow自己封装了一个简化版本的解析方式,实际上是对argparse的封装 脚本化调用tensorflow的标准范式: impo ...

  6. MapServer Tutorial——MapServer7.2.1教程学习——第一节:MapServer的基本配置管理,静态地图应用以及MapFile文件

    MapServer Tutorial——MapServer7.2.1教程学习——第一节:MapServer的基本配置管理,静态地图应用以及MapFile文件 前言 万事开头难,有了<MapSer ...

  7. css颜色的五种表示方法

    一.最简单.最古老的颜色类型在CSS颜色的关键词,如red blue等. 二.十六进制值,如#0000. 三.RGB: rgb(255,0,0),这是给定的三个参数表示的红色,绿色和蓝色通道的颜色值每 ...

  8. Andriod Studio两种签名机制V1和V2的区别

    Android Studio 2.2以上版本打包apk的时候,我们会发现多了个签名版本(v1.v2)选择,如下图红色方框所示 问题描述(v1和v2) Android 7.0中引入了APK Signat ...

  9. linux 中mv命令

    mv 命令是一个与cp类似的命令,但是它并非创建文件或目录的复制品/副本.不管你在使用什么版本的Linux系统,mv 都默认安装在你的Linux系统上了.来看一下 mv 命令在日常操作中的一些例子. ...

  10. day36-多进程多线程一

    多进程 概念:进程是程序在计算机上的一次执行活动.当你运行一个程序,你就启动了一个进程.显然,程序是死的(静态的),进程是活的(动态的).进程可以分为系统进程和用户进程.凡是用于完成操作系统的各种功能 ...