一、理解什么是数字证书
 
 
理解数字证书等概念,无数次想好好看看数字证书,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. 激活Pychram

    最近更新了Intellij IDEA到2018.1.5之后,使用之前的授权服务器(http://idea.imsxm.com)会提示Outdated License Server Detected,大 ...

  2. centos install jdk

    =========== 查询jdk版本 ===========yum search jdk =========== 安装jdk 64位开发版 ===========yum -y install jav ...

  3. vue中插入Echarts示例(菜鸟记录)

  4. windows常见软件库

    1.护卫神软件库 http://soft.huweishen.com/special/1.html 2.护卫神windows资料库 http://v.huweishen.com/ 3.国超软件下载 h ...

  5. springboot启动配置原理之三(事件监听机制)

    ApplicationContextInitializer public class HelloApplicationContextInitializer implements Application ...

  6. Python自学:第二章 动手试一试

    print(1 + 7) print(16 - 8) print(2 * 4) print(8 / 1) 输出为: 8 8 8 8.0 message = " print("I l ...

  7. SSH框架学习摸索记

    Unable to load configuration. - bean - jar:file:/E:/tomcat-7.0.11/webapps/struts/WEB-INF/lib/struts ...

  8. 基于socket实现http请求

    异步非阻塞模块原理 # 基于socket实现http请求 import socket # 多路IO复用模块 import select socket_list= [] url_list = [&quo ...

  9. linux安装nginx,遇坑解决

    1.nginx官网下载tar包,解压linux下: 2.进入解压文件夹,执行./configure: 3.报错,原因没有安装nginx相关依赖,如gcc环境,PCRE依赖库 ,zlib 依赖库 ,Op ...

  10. 【log4j】使用注意事项

    实际过程中,使用log4j遇到的一些问题,进行总结: 1.log4j.properties文件的放置路径: 必须放在src的根目录下,这样就不需要额外的加载了 2.申明一个log对象 Logger l ...