一、数字证书

1、数字证书实际上是存在于计算机上的一个记录,是由CA签发的一个声明,证明证书主体("证书申请者"拥有了证书后即成为"证书主体")与证书中所包含的公钥的惟一对应关系

2、数字证书包含的内容:

  • 申请者的名称及相关信息
  • 申请者的地址信息
  • 申请者的公钥
  • 签发证书的CA的名称
  • 签发证书的CA的数字签名(用发证机关的私钥加密的特征码)
  • 证书有效期

3、x509证书的包含的内容:

  • 公钥及其有效期限
  • 证书的合法拥有者
  • 证书该如何被使用
  • CA的信息
  • CA签名的校验码

4、CRL:证书吊销列表;CRL中记录的是已经发出去的、没有过期的但已经被撤销的证书

二、PKI

1、PKI:Public Key Infrastructure

2、 PKI的核心就是CA及其信任关系

3、PKI的实现架构

  • TLS/SSL:使用x509证书
  • OpenGPG
    • SSL:Secure Socket Layer,安全的套接字层;只是一个库,可以将http、smtp、ftp等应用层协议封装成https、smtps、ftps
    • TLS:Transport Layer SecurityTLSv1版本相当于SSLv3

三、CA

1、 CA(Certificate Authority)是数字证书认证中心的简称,是指发放、管理、废除数据证书的机构

2、CA的作用是检查证书持有者身份的合法性,并签发证书(在证书上签字),以防证书被伪造或篡改,以及对证书和密钥进行管理

四、证书申请及签署步骤

1、生成申请请求

2、RA核验

3、CA签署

4、获取证书

五、openssl

1、对称加密的实现工具有openssl和gpg两种

  • openssl:OpenSSLssl的开源实现,是一个软件,由三部分组成:

    • libcrypto:加密库
    • libssl:TLS/SSL协议的实现。基于会话的实现了身份认证、数据机密性和会话完整性的TLS/SSL
    • openssl:多用途命令行工具。能够实现单向加密、对称加密、非对称加密、生成一对密钥、私有证书颁发机构等功能

2、OpenSSL

  • 语法:openssl command [ command_opts ] [ command_args ]
  • command:
    • enc:加密/解密
    • -e:加密
    • -d:解密
    • -new:生成新证书签署请求
    • -x509:专用于CA生成自签证书
    • -key:生成请求时用到的私钥文件
    • -days number:证书的有效期限
    • -out /path/to/somecertfile:证书的保存路径

3、x509证书管理:

  • -in  /path/from/cert_file -noout -text|-subject|-serial    #查看证书中的信息
  • crl:管理吊销证书列表
    • -in /path/from/crl_file.crl -noout -text           #查看crl文件
  • ca:管理CA

六、使用openssl创建私有CA

1、CA的配置文件:/etc/pki/tls/openssl.cnf

  • [root@localhost ~]# cd /etc/pki/tls/
    [root@localhost tls]# vim openssl.cnf
    ............
    # Load default TLS policy configuration
    openssl_conf = default_modules
    [ default_modules ]
    ssl_conf = ssl_module
    [ ssl_module ]
    system_default = crypto_policy
    [ crypto_policy ]
    .include /etc/crypto-policies/back-ends/opensslcnf.config
    [ new_oids ]
    .............  

2、使用OpenSSL给CA创建一对密钥

 //首先在/etc/pki文件下创建CA目录
[root@localhost ~]# cd /etc/pki/
[root@localhost pki]# mkdir CA //进入CA目录,首先创建private目录,然后在该目录下创建密钥文件(此步骤必须做)
[root@localhost pki]# cd CA/
[root@localhost CA]# mkdir private
[root@localhost CA]# (umask 077;openssl genrsa -out private/cakey.pem 2048) //OpenSSL生成密钥,括号*必须要*
Generating RSA private key, 2048 bit long modulus (2 primes)
.........................+++++
............+++++
e is 65537 (0x010001)
//创建成功 [root@localhost CA]# ls
cakey.pem //提取公钥,该步骤是查看公钥,可以不做
[root@localhost CA]# openssl rsa -in private/cakey.pem -pubout
writing RSA key
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvhWEEfPKL8rtAuEqVdeu
yXRNHCVVHFimq32RD+YtXXJt63Rgl2/jAkTETxBUSlvmqfxL2WN3AKiRzvyqMpxS
skRwda3HHGezWSMNbSbl9VzL+/7KOOgOgmow+HRuFzWzW17MCy98I12eUpldFWFm
BcjOX/rcBynWJP96r/9wFqzsQ8JpJ5cUeDlUul91pyh5NCsXpr3RhMO0ZaITttj7
r3/yDdNmpVHxVtD6o9oGeNF9ihE1/62vgAsDxoPEmsv7xRbouMQPhlugEeXxgc6L
Z+AfvmuycozyhxaKWTDX+XIubcWd7Wv3i21V5IO36D4sSya/WsWU9CZ34QBkrZ6M
8wIDAQAB
-----END PUBLIC KEY-----

3、使用OpenSSL给CA生成自签署证书

 //生成自签署证书
[root@localhost CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN //国家的名称,使用两个字母表示
State or Province Name (full name) []:HB //省份的名称,同样也使用两个字母表示
Locality Name (eg, city) [Default City]:WH //城市的名称,同样使用两个字母表示
Organization Name (eg, company) [Default Company Ltd]:www.qiangge.com //公司的名称(一般设主机名)
Organizational Unit Name (eg, section) []:www.qiangge.com //部门的名称(一般设与公司名称一样)
Common Name (eg, your name or your server's hostname) []:www.qiangge.com //主机的名称,就是自己的网站的域名
Email Address []:123@123.com //自己的邮箱地址 //读取证书内容,该步骤可以不做,只是查看一下
[root@localhost CA]# openssl x509 -text -in cacert.pem
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
1b:7d:ab:b9:fd:4a:03:ab:cc:e5:e1:7f:2b:75:7f:66:7b:1d:49:bb
Signature Algorithm: sha256WithRSAEncryption
Issuer: C = CN, ST = HB, L = WH, O = www.qiangge.com, OU = www.qiangge.com, CN = www.qiangge.com, emailAddress = 123@123.com
Validity
Not Before: Aug 25 09:18:12 2020 GMT
Not After : Aug 25 09:18:12 2021 GMT
Subject: C = CN, ST = HB, L = WH, O = www.qiangge.com, OU = www.qiangge.com, CN = www.qiangge.com, emailAddress = 123@123.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public-Key: (2048 bit)
.............

4、在CA目录下创建certs、newcerts、crl三个目录

[root@localhost CA]# pwd
/etc/pki/CA
[root@localhost CA]# mkdir certs newcerts crl
[root@localhost CA]# ls
cacert.pem certs crl newcerts private

5、在CA目录下创建index.txt和serial并给予序列号

[root@localhost CA]# touch index.txt && echo 01 > serial
[root@localhost CA]# ls
cacert.pem certs crl index.txt newcerts serial private
[root@localhost CA]# cat serial
01

七、使用OpenSSL给客户端生成证书签署

1、使用OpenSSL给客户端(需求者)生成密钥文件(我这使用httpd作客户端)

//首先在/etc/httpd/目录下创建一个ssl目录,用来存放密钥文件
[root@localhost ~]# cd /etc/httpd/
[root@localhost httpd]# mkdir ssl
[root@localhost httpd]# ls
conf conf.d conf.modules.d logs modules run ssl state //使用OpenSSL创建密钥文件
[root@localhost httpd]# cd ssl
[root@localhost ssl]# (umask 077;openssl genrsa -out httpd.key 2048)
Generating RSA private key, 2048 bit long modulus (2 primes)
............................................................+++++
..............................................................+++++
e is 65537 (0x010001) [root@localhost ssl]# ls
httpd.key

2、使用OpenSSL给客户端生成证书签署(证书签署来自刚刚创建的CA,由CA颁发数字证书)

[root@localhost ssl]# pwd
/etc/httpd/ssl
[root@localhost ssl]# openssl req -new -key httpd.key -days 365 -out httpd.csr
Ignoring -days; not generating a certificate
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:CN //跟创建CA自签证书步骤一样
State or Province Name (full name) []:HB
Locality Name (eg, city) [Default City]:WH
Organization Name (eg, company) [Default Company Ltd]:www.qiangge.com
Organizational Unit Name (eg, section) []:www.qiangge.com
Common Name (eg, your name or your server's hostname) []:www.qiangge.com
Email Address []:123@123.com Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: //(询问是否创建给证书创建密码);直接回车,不需要加密码
An optional company name []: //直接回车即可

3、客户端把证书签署请求文件发送给CA

发送语法
scp httpd.csr root@CA端IP:/root 由于我自己创建的CA,都是在我本地,所以不需要发送证书请求文件

4、CA签署提交上来的证书请求文件

[root@localhost ssl]# ls
httpd.csr httpd.key
[root@localhost ssl]# openssl ca -in ./httpd.csr -out httpd.crt -days 365
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches the signature
Signature ok
Certificate Details:
Serial Number: 1 (0x1)
Validity
Not Before: Aug 25 10:33:13 2020 GMT
Not After : Aug 25 10:33:13 2021 GMT
Subject:
countryName = CN
stateOrProvinceName = HB
organizationName = www.qiangge.com
organizationalUnitName = www.qiangge.com
commonName = www.qiangge.com
emailAddress = 123@123.com
X509v3 extensions:
X509v3 Basic Constraints:
CA:FALSE
Netscape Comment:
OpenSSL Generated Certificate
X509v3 Subject Key Identifier:
56:87:C5:89:88:3D:23:15:50:4E:12:C0:6D:57:97:7B:A7:47:19:9E
X509v3 Authority Key Identifier:
keyid:76:58:7D:1B:66:AD:A2:99:AD:D5:89:14:BF:79:DB:B1:9E:3A:79:4F Certificate is to be certified until Aug 25 10:33:13 2021 GMT (365 days)
Sign the certificate? [y/n]:y //确认是否需要签名 1 out of 1 certificate requests certified, commit? [y/n]y //确认证书的请求是否提交
Write out database with 1 new entries
Data Base Updated

5、CA把签署好的数字证书(http.crt)颁发给客户端

颁发语法:
scp httpd.crt root@客户端IP:/etc/httpd/ssl/ 由于我是在本地自己给自己颁发证书所以不需要做该步骤

SSL数字证书颁发的更多相关文章

  1. [转]浅谈https\ssl\数字证书

    浅谈https\ssl\数字证书 http://www.cnblogs.com/P_Chou/archive/2010/12/27/https-ssl-certification.html 全球可信的 ...

  2. 浅谈https\ssl\数字证书

    全球可信的SSL数字证书申请:http://www.shuzizhengshu.com 在互联网安全通信方式上,目前用的最多的就是https配合ssl和数字证书来保证传输和认证安全了.本文追本溯源围绕 ...

  3. 【转】浅谈https\ssl\数字证书

    转载请注明出处:http://www.cnblogs.com/P_Chou/archive/2010/12/27/https-ssl-certification.html 全球可信的SSL数字证书申请 ...

  4. https证书/即SSL数字证书申请途径和流程

    国际CA机构GlobalSign中国 数字证书颁发中心网站:http://cn.globalsign.com    https证书即SSL数字证书,是广泛用 于网站通讯加密传输的解决方案,是提供通信保 ...

  5. HTTPS协议工作原理(SSL数字证书)

    目录 HTTPS SSL协议的工作过程 SSL数字证书的查看 HTTPS 我们都知道HTTP协议是明文传输的,并且不能验证对方的身份,而且不能保证数据的完整性.而当我们在网络上进行购物电子交易时,电子 ...

  6. OpenSSL 与 SSL 数字证书概念贴

    SSL/TLS 介绍见文章 SSL/TLS原理详解(http://seanlook.com/2015/01/07/tls-ssl). 如果你想快速自建CA然后签发数字证书,请移步 基于OpenSSL自 ...

  7. 对称(DES/AES)与非对称(RSA/SSL/数字证书)加密介绍及实际应用

    本文不对具体的算法做深入研究,只是讲解各种安全算法的原理和使用场景. 一.数据校验算法 数据校验,是为保护数据的完整性,用一种指定的算法对原始数据计算出的一个校验值.当接收方用同样的算法再算一次校验值 ...

  8. 通俗理解数字签名,ssl数字证书和https

    前言 最近在开发关于PDF合同文档电子签章的功能,大概意思就是在一份PDF合同上签名,盖章,使其具有法律效应.签章有法律效应必须满足两个条件: 能够证明签名,盖章者是谁,无法抵赖 PDF合同在签章后不 ...

  9. SSL数字证书Nginx配置部署

    由于小程序和Ios端的需要,公司的项目需要从原来的http协议扩展到https协议,因为项目本来就有采用nginx做了负载均衡,但是之前配置nginx的时候并没有配置关于https的内容,所以需要做这 ...

随机推荐

  1. 翻译:《实用的Python编程》07_04_Function_decorators

    目录 | 上一节 (7.3 返回函数) | 下一节 (7.5 装饰方法) 7.4 函数装饰器 本节介绍装饰器(decorator).因为这是一个高级主题,所以我们只做简单介绍. 译注:根据译者个人的猜 ...

  2. [Fundamental of Power Electronics]-PART I-4.开关实现-4.3 开关损耗/4.4 小结

    4.3 开关损耗/4.4 小结 使用半导体器件实现开关后,我们现在可以讨论变换器中损耗和低效的另一个主要来源:开关损耗.如前所述,半导体器件的导通和关断转换需要几十纳秒到几微秒的时间.在这些开关转换期 ...

  3. spring-cloud-consul 服务注册发现与配置

    下面是 Spring Cloud 支持的服务发现软件以及特性对比(Eureka 已停止更新,取而代之的是 Consul): Feature euerka Consul zookeeper etcd 服 ...

  4. Java(171-194)【接口、多态】

    1.接口概述与生活举例 接口就是一种公共的规范标准 只要符合规范标准,就可以大家通用 2.接口的定义基本格式  public interface 接口名称 {       // 抽象方法      / ...

  5. 使用VS Code从零开始开发调试.NET 5

    使用VS Code 从零开始开发调试.NET 5.无需安装VS 2019即可开发调试.NET 5应用. VS Code 全称是 Visual Studio Code,Visual Studio Cod ...

  6. Win10双系统安装Gentoo-(附Networkmanagr/Gnome安装)

    安装Gentoo 本文主要参考的是官方Wiki,还有一些网友的经验,在后面的具体安装步骤里会分享对应网友的一些解决办法和相关文章 官方Wiki:https://wiki.gentoo.org/wiki ...

  7. SAAS云平台搭建札记: (四) AntD For React使用react-router-dom路由接收不同参数页面不刷新的问题

    在.net开发员眼里,如果使用MVC,根据路由匹配原则,可以通过各种方式接收参数,比如 /Post/List/1, /Post/List/2,或者 /Post/List?id=1,/Post/List ...

  8. Redis 与 Python 交互

    1. Python 库安装 2. 交互代码范例 3. Redis 操作封装 4. 应用范例:用户登录 1. Python 库安装 联网安装 pip install redis 使用源码安装 到中文官网 ...

  9. 🍎

    江湖中有一本练了就能天下无敌的葵花宝典,大家都想得到它.如果有一天葵花宝典被公开了,人人都有机会练,到底是好事还是坏事呢? 这会成为一个灾难. 因为一个人拥有时,练不练是一个人的事.大家都拥有,练不练 ...

  10. 2. robot framework 关键字,变量,循环

    1 关键字的使用 RF的能力是由关键字提供的,所以,我们必须对RF的常用关键字有个了解,这样才能把RF用好. 最常用的关键字就在RF的标准库中 http://robotframework.org 其中 ...