baby sword‘s blog baby sword‘s blog
首页
  • java基础
  • java进阶
大数据
  • mysql

    • mysql索引
    • mysql日志
  • redis

    • 单机下的redis
    • 集群下的redis
  • Spring
  • springboot
  • RPC
  • netty
  • mybatis
  • maven
  • 消息队列
  • kafka
  • zookeeper
  • rocketmq
  • 七大设计原则
  • 创建型模式
  • 结构型模式
  • 行为型模式
  • SpringCloud

    • eureka
  • SpringCloud Alibaba

    • nacos
  • 计算机网络
  • 操作系统
  • 算法
  • 个人项目
  • 个人面试面经
  • 八股记忆
  • 工作积累
  • 逻辑题
  • 面试

    • 百度后端实习二面
GitHub (opens new window)

zhengjian

不敢承担失去的风险,是不可能抓住梦想的
首页
  • java基础
  • java进阶
大数据
  • mysql

    • mysql索引
    • mysql日志
  • redis

    • 单机下的redis
    • 集群下的redis
  • Spring
  • springboot
  • RPC
  • netty
  • mybatis
  • maven
  • 消息队列
  • kafka
  • zookeeper
  • rocketmq
  • 七大设计原则
  • 创建型模式
  • 结构型模式
  • 行为型模式
  • SpringCloud

    • eureka
  • SpringCloud Alibaba

    • nacos
  • 计算机网络
  • 操作系统
  • 算法
  • 个人项目
  • 个人面试面经
  • 八股记忆
  • 工作积累
  • 逻辑题
  • 面试

    • 百度后端实习二面
GitHub (opens new window)
  • 华仔聊技术

  • 业务设计

  • 场景设计

  • 运维

  • 安全

    • 证书公钥私钥
      • 一. 什么是证书
      • 二. 数字证书的原理
      • 三. 怎么生成证书
        • 1. 流程
        • 2. 步骤
      • 四. X.509证书的常见应用
        • 1.TLS/SSL证书——确保Web服务器的安全
        • 2.数字签名和文档签名
        • 3.代码签名
        • 4.电子邮件证书
        • 5.SSH密钥
        • 6.数字身份
        • 什么是PKI和X.509
      • 参考
    • 浏览器如何验证证书安全性
  • 面试

  • mac相关工具推荐

  • 开发工具

  • 人工智能

  • 推荐

  • 阅读

  • 工具

  • 计划

  • 产品

  • 云原生

  • go

  • QVM

  • 软件设计师

  • 极客时间

  • 单元测试

  • 其他
  • 安全
xugaoyi
2023-10-18
目录

证书公钥私钥

# 一. 什么是证书

数字证书是一种权威性的电子文档,它提供了一种在 Internet 上验证身份的方式。 其作用类似于司机的驾驶执照或日常生活中的身份证。 它是由一个权威机构——CA证书授权(Certificate Authority)中心发行的,人们可以在互联网交往中用它来识别对方的身份。即以数字证书为核心的加密技术可以对网络上传输的信息进行加密和解密、数字签名和签名验证,确保网上传递信息的机密性、完整性,以及交易实体身份的真实性,签名信息的不可否认性。当然在数字证书认证的过程中,数字证书认证中心(CA)作为权威的、公正的、 可信赖的第三方,其作用是至关重要的。数字证书也必须具有性和可靠性。

# 二. 数字证书的原理

数字证书采用公钥密码体制,即利用一对互相匹配的密钥进行加密、解密。每个用户拥有一把仅为本人所掌握的私有密钥(私钥),用它进行解密和签名;同时拥有一把公共密钥(公钥)并可以对外公开,用于加密和验证签名。 ①加密: 当发送一份保密文件时,发送方使用接收方的公钥对数据加密,而接收方则使用自己的私钥解密,这样,信息就可以安全无误地到达目的地了,即使被第三方截获,由于没有相应的私钥,也无法进行解密。通过数字的手段保证加密过程是一个不可逆过程,即只有用私有密钥才能解密。在公开密钥密码体制中,常用的一种是RSA体制。

②签名 用户也可以采用自己的私钥对信息加以处理,由于密钥仅为本人所有,这样就产生了别人无法生成的文件,也就形成了数字签名。采用数字签名,能够确认以下两点:

  • 保证信息是由签名者自己签名发送的,签名者不能否认或难以否认;
  • 保证信息自签发后到收到为止未曾作过任何修改,签发的文件是真实文件。

数字证书可用于发送安全电子邮件、访问安全站点、网上证券、网上招标采购、网上签约、网上办公、网上缴费、网上税务等网上安全电子事务处理和安全电子交易活动。数字证书的格式一般采用X.509国际标准。

证书的组成部分: image.png

# 三. 怎么生成证书

# 1. 流程

要理解创建证书的每一步操作必须要先理解创建证书的流程和每一步的含义。生成证书的标准流程是这样的:

  1. 生成自己的私钥文件(.key)
  2. 基于私钥生成证书请求文件(.csr)
  3. 将证书请求文件(.csr)提交给证书颁发机构(CA),CA会对提交的证书请求中的所有信息生成一个摘要,然后使用CA根证书对应的私钥进行加密,这就是所谓的“签名”操作,完成签名后就会得到真正的签发证书(.cer或.crt)
  4. 用户拿到签发后的证书,可能需要导入到自己的密钥库中,如Java的keystore,或根据需要再进行各种格式转换(.pem .p12 .jks等等)

注意:

  1. 第1/2两步可以通过一个命令合并完成。
  2. 第3步向公认可信的CA机构申请证书是线上线下都要进行操作的一系列流程,申请的公司或组织还要提交各种资质和证明,与企业申请某种执照或办理某种手续性质类似,但企业最终拿到的就是一个CA签名的证书文件。所以,对于企业内部应用来说,完全可以自己创建自己的根证书,自己给自己签发证书,然后通过域控手段强制用户浏览器接受来自相应CA签发的证书。
  3. 再次解释一下“签名”的含义,这个概念很关键。在CA签发的证书中,包含申请者的公钥在内,几乎所有的数据都是明文的,也都是申请者自己提供的(当然CA需要审核),签发的证书唯一多出来的信息就是基于申请者提供的所有信息生成了一份摘要,然后用CA自己的私钥对摘要进行了加密,这段加密后的密文被称之为“签名”,这部分数据是返还的签发证书(.cer或.crt)中多出来的关键数据。

# 2. 步骤

①创建私钥 openssl genrsa -out my.key 2048

-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAzZLUPeAdve2nKhWI6nGhKxIcGmU3oAg3cHpiqYSC4eo7rnx+
DUvCRhWmKuHQXrhT+JW1p8HpsTQTdfQ2PnVE4VsTw4u9tv2u5egpQQuRN96moTaO
RTJ0YqQTUItwumAmnyZxXEdptJmh2byaUtNdEbgm+3cMhPGKg20GLo/GCmWrFeHc
g3V8kAAepe4xIvTR3eR0/NixNROsMD1D26jpU+hapaQ6rjBaZlvXVN488l9dSuWx
BicaMq5cbYPuQIqBClXV9EGxNfwUzIBJRhjcQdwoAYAqGBa9tWRxk/5wesxMAAk0
SJfD/2upK0s6KOAjymrfmS2KDM/He9HO5wjHVwIDAQABAoIBADQm1bVE0AbI7amd
gPiJDywQEhUYLH5q1zWvtqvutA2AENf5OTlCSOzivR8P3n7JIHRl9omyhgiwf2dj
Jwe9VFYfduoa32w2+1HUDfM0bgjQcVFgt8MSQ7hqi4PZfCWsEuA5LnUMoOJyPz8v
u67bdDb0kt8kmoZ3iH5DAFh7nPAx2hb8FaTKQXR7yFCKngPFXKsjnQyBDPV7jrU0
ZhxpO51kgLaErqsQm3T945oJvHZxuK1P5OnthqVtsejsE2e1lMyOMrwwRDRhvgD5
bvL3fPVZ0hyaJBWNFFwlOP0FgfEuDDZb0F9gZ9gR8aMELNxl6HtTkfT0fc07ytEY
qUCdU2ECgYEA8zD/cZGeJZBQU1uIX7wVqgvs1FnZtXD5QPc3ACLqmsCDWwHHsbKU
QyfJYNusKN8+wGGUdnrobgcgK4XXPBExEFw2C3aMGsDb/0Kj32H9D2YlpOofRARF
06/W71CPqE4RFfAOceEK6O4Fnap9v5nqnY6f+7bvLKSJiiMpsz4+4r8CgYEA2Gaf
JsgVondeTEFz6eDEuf87V9XOdWYMAPfApbMGjUu7gCHqUCOP6y7IxroHkss/qv/p
gdZg0MVXUwQ4zxL4zBP6qbgU3KExqYdn8pWixsdYaRAbYi/CmITV5AjCpy67rrYm
UsD3om2qA6qYNH2cDQkiPHkp575KnJzgPgHO+WkCgYAJqp/stroPii33MkM4cvR1
fuXaBvxFXwk5UNpJ0hl7Lz3JZ0e1w4BrLvCtPe4Y7c7DvN023GnSvcvEjxxgEdre
aJvpVrv48EOOYOq8nVt+ujOy22+Et5rC8FFdz9j1+qxpL9KTKjvRyGxGuRkofYi6
3Il1au8U2jFxYTZuHoJHZwKBgARht5FCdeWvQxKKNL2klncpqtrxclfANDgEzDrO
sDBGO0qx5RuwTKa3cMtNUv/u66AbxG+jlpxDkqwUps3SlYUUVnv/RTTecrH7Eui/
jOc3fBvMfrFzRB5weiA+6SoXcSdtesMsMxdv3wRp/OD7NiCxcacF0QpnOP2I06WN
xdIZAoGAfYH82QtQDR/qAdmAfHfyaO6+xqugoMDN2XZgYHuuz4t5fX/Dv1jzfQqY
NRxym/aWdUbh9DMJMruCEAHLm7dGtJYu8tu69/SdhnkNJ0M5gwXiORLXw8hjmZyo
nWDxKlBiYEAlDO0mq8D+sRN05LtPAp2hJwkVWwUCI5P6ZkulaOc=
-----END RSA PRIVATE KEY-----
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

②基于私钥创建证书签名请求 openssl req -new -key my.key -out my.csr -subj "/C=CN/ST=shanghai/L=shanghai/O=example/OU=it/CN=domain1/CN=domain2"

-----BEGIN CERTIFICATE REQUEST-----
MIICuzCCAaMCAQAwdjELMAkGA1UEBhMCQ04xETAPBgNVBAgMCHNoYW5naGFpMREw
DwYDVQQHDAhzaGFuZ2hhaTEQMA4GA1UECgwHZXhhbXBsZTELMAkGA1UECwwCaXQx
EDAOBgNVBAMMB2RvbWFpbjExEDAOBgNVBAMMB2RvbWFpbjIwggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQDNktQ94B297acqFYjqcaErEhwaZTegCDdwemKp
hILh6juufH4NS8JGFaYq4dBeuFP4lbWnwemxNBN19DY+dUThWxPDi722/a7l6ClB
C5E33qahNo5FMnRipBNQi3C6YCafJnFcR2m0maHZvJpS010RuCb7dwyE8YqDbQYu
j8YKZasV4dyDdXyQAB6l7jEi9NHd5HT82LE1E6wwPUPbqOlT6FqlpDquMFpmW9dU
3jzyX11K5bEGJxoyrlxtg+5AioEKVdX0QbE1/BTMgElGGNxB3CgBgCoYFr21ZHGT
/nB6zEwACTRIl8P/a6krSzoo4CPKat+ZLYoMz8d70c7nCMdXAgMBAAGgADANBgkq
hkiG9w0BAQsFAAOCAQEAROJhlZW0Aqwka1luKnHEpk8FPyz8xebpbsrFdbpTezI4
31y3LJHqsaehBg7lm2ZrL5pu7w4xTnHgato+JMQ7u5JWARQYkAQ44JhgComOIor9
jZFXmevbaxqHSmGHiazEEu1rgckicG2rLgs3HqVdHI5O22iP9ntCeFruR74tpEl3
dueyZEZD8izcn1k9y+5gC3v1ZSqrhnxVk4HJ/hAnZ5A+odAqBbXSNPPqPh7/8Nj/
qWkWXS+tYGmkt03tk+PERin0aBjR/pR0itgIH/LzPRweWRISPMJxU42nHVvKmvuG
d+7EidrgDOSSSJD814xWIEFA3vhG+H7z/h3BbmCPSg==
-----END CERTIFICATE REQUEST-----
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

③使用自己的私钥(.key)签署自己的证书签名请求(.csr),生成自签名证书(.crt) openssl x509 -req -in my.csr -out my.crt -signkey my.key -days 3650

-----BEGIN CERTIFICATE-----
MIIDczCCAlsCFCBFmebkFXDdkUehKbJXjvVEKdsSMA0GCSqGSIb3DQEBCwUAMHYx
CzAJBgNVBAYTAkNOMREwDwYDVQQIDAhzaGFuZ2hhaTERMA8GA1UEBwwIc2hhbmdo
YWkxEDAOBgNVBAoMB2V4YW1wbGUxCzAJBgNVBAsMAml0MRAwDgYDVQQDDAdkb21h
aW4xMRAwDgYDVQQDDAdkb21haW4yMB4XDTIzMTAxNzAzMzM1N1oXDTMzMTAxNDAz
MzM1N1owdjELMAkGA1UEBhMCQ04xETAPBgNVBAgMCHNoYW5naGFpMREwDwYDVQQH
DAhzaGFuZ2hhaTEQMA4GA1UECgwHZXhhbXBsZTELMAkGA1UECwwCaXQxEDAOBgNV
BAMMB2RvbWFpbjExEDAOBgNVBAMMB2RvbWFpbjIwggEiMA0GCSqGSIb3DQEBAQUA
A4IBDwAwggEKAoIBAQDNktQ94B297acqFYjqcaErEhwaZTegCDdwemKphILh6juu
fH4NS8JGFaYq4dBeuFP4lbWnwemxNBN19DY+dUThWxPDi722/a7l6ClBC5E33qah
No5FMnRipBNQi3C6YCafJnFcR2m0maHZvJpS010RuCb7dwyE8YqDbQYuj8YKZasV
4dyDdXyQAB6l7jEi9NHd5HT82LE1E6wwPUPbqOlT6FqlpDquMFpmW9dU3jzyX11K
5bEGJxoyrlxtg+5AioEKVdX0QbE1/BTMgElGGNxB3CgBgCoYFr21ZHGT/nB6zEwA
CTRIl8P/a6krSzoo4CPKat+ZLYoMz8d70c7nCMdXAgMBAAEwDQYJKoZIhvcNAQEL
BQADggEBAMfVpbEHpfJZ2bArPHQTA0k7tCIAv928ICRECk4W3MDCiupcQS5l+Y0h
mOmRqnAMKu4PiBDU2GmX0lVQMXGnrHu3WDO0Fli9+zT/x5Sm/eoHEKIGsftPB7UQ
+4dU2T9PyNnUKyR7RX6+FNmlzoMtR0/R5IeGvP6vmXaoBamLx1u74x3AqwTVcP9o
+HMhp6xR+IUvlIJ0A0tsOg36JYbvuiKwpf1vRMPwYtOAqRfhxGpIjC/Ah3je1NOQ
i6lBESNaIhOiHYAUoyO/Kw/t6FrC3vUd8YvPl2r8K4bcklI35e6O0K3MVixpx5kD
4JCi4pDnj1bXJ1OFI4PtE5oXKw4KRoA=
-----END CERTIFICATE-----
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

注意以上都是生成一个私有的证书过程,如果是企业级,需要去CA进行认证才行

从上面可以看出,无论是私钥、证书签名请求还是证书,都是使用了base64的编码。

如何查看上面生成的这三类信息? # 查看KEY信息

openssl rsa -noout -text -in myserver.key # 查看CSR信息 openssl req -noout -text -in myserver.csr # 查看证书信息 openssl x509 -noout -text -in ca.crt

例如我们来查看一下证书的信息:

Certificate:
    Data:
        Version: 1 (0x0)
        Serial Number:
            20:45:99:e6:e4:15:70:dd:91:47:a1:29:b2:57:8e:f5:44:29:db:12
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C = CN, ST = shanghai, L = shanghai, O = example, OU = it, CN = domain1, CN = domain2
        Validity
            Not Before: Oct 17 03:33:57 2023 GMT
            Not After : Oct 14 03:33:57 2033 GMT
        Subject: C = CN, ST = shanghai, L = shanghai, O = example, OU = it, CN = domain1, CN = domain2
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    00:cd:92:d4:3d:e0:1d:bd:ed:a7:2a:15:88:ea:71:
                    a1:2b:12:1c:1a:65:37:a0:08:37:70:7a:62:a9:84:
                    82:e1:ea:3b:ae:7c:7e:0d:4b:c2:46:15:a6:2a:e1:
                    d0:5e:b8:53:f8:95:b5:a7:c1:e9:b1:34:13:75:f4:
                    36:3e:75:44:e1:5b:13:c3:8b:bd:b6:fd:ae:e5:e8:
                    29:41:0b:91:37:de:a6:a1:36:8e:45:32:74:62:a4:
                    13:50:8b:70:ba:60:26:9f:26:71:5c:47:69:b4:99:
                    a1:d9:bc:9a:52:d3:5d:11:b8:26:fb:77:0c:84:f1:
                    8a:83:6d:06:2e:8f:c6:0a:65:ab:15:e1:dc:83:75:
                    7c:90:00:1e:a5:ee:31:22:f4:d1:dd:e4:74:fc:d8:
                    b1:35:13:ac:30:3d:43:db:a8:e9:53:e8:5a:a5:a4:
                    3a:ae:30:5a:66:5b:d7:54:de:3c:f2:5f:5d:4a:e5:
                    b1:06:27:1a:32:ae:5c:6d:83:ee:40:8a:81:0a:55:
                    d5:f4:41:b1:35:fc:14:cc:80:49:46:18:dc:41:dc:
                    28:01:80:2a:18:16:bd:b5:64:71:93:fe:70:7a:cc:
                    4c:00:09:34:48:97:c3:ff:6b:a9:2b:4b:3a:28:e0:
                    23:ca:6a:df:99:2d:8a:0c:cf:c7:7b:d1:ce:e7:08:
                    c7:57
                Exponent: 65537 (0x10001)
    Signature Algorithm: sha256WithRSAEncryption
         c7:d5:a5:b1:07:a5:f2:59:d9:b0:2b:3c:74:13:03:49:3b:b4:
         22:00:bf:dd:bc:20:24:44:0a:4e:16:dc:c0:c2:8a:ea:5c:41:
         2e:65:f9:8d:21:98:e9:91:aa:70:0c:2a:ee:0f:88:10:d4:d8:
         69:97:d2:55:50:31:71:a7:ac:7b:b7:58:33:b4:16:58:bd:fb:
         34:ff:c7:94:a6:fd:ea:07:10:a2:06:b1:fb:4f:07:b5:10:fb:
         87:54:d9:3f:4f:c8:d9:d4:2b:24:7b:45:7e:be:14:d9:a5:ce:
         83:2d:47:4f:d1:e4:87:86:bc:fe:af:99:76:a8:05:a9:8b:c7:
         5b:bb:e3:1d:c0:ab:04:d5:70:ff:68:f8:73:21:a7:ac:51:f8:
         85:2f:94:82:74:03:4b:6c:3a:0d:fa:25:86:ef:ba:22:b0:a5:
         fd:6f:44:c3:f0:62:d3:80:a9:17:e1:c4:6a:48:8c:2f:c0:87:
         78:de:d4:d3:90:8b:a9:41:11:23:5a:22:13:a2:1d:80:14:a3:
         23:bf:2b:0f:ed:e8:5a:c2:de:f5:1d:f1:8b:cf:97:6a:fc:2b:
         86:dc:92:52:37:e5:ee:8e:d0:ad:cc:56:2c:69:c7:99:03:e0:
         90:a2:e2:90:e7:8f:56:d7:27:53:85:23:83:ed:13:9a:17:2b:
         0e:0a:46:80
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

我们可以看到证书中有公钥和签名信息。 如何通过证书获取公钥: openssl x509 -in XX.cer -pubkey -noout > XX.pem

root@k1:~/crt# cat my.pem 
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzZLUPeAdve2nKhWI6nGh
KxIcGmU3oAg3cHpiqYSC4eo7rnx+DUvCRhWmKuHQXrhT+JW1p8HpsTQTdfQ2PnVE
4VsTw4u9tv2u5egpQQuRN96moTaORTJ0YqQTUItwumAmnyZxXEdptJmh2byaUtNd
Ebgm+3cMhPGKg20GLo/GCmWrFeHcg3V8kAAepe4xIvTR3eR0/NixNROsMD1D26jp
U+hapaQ6rjBaZlvXVN488l9dSuWxBicaMq5cbYPuQIqBClXV9EGxNfwUzIBJRhjc
QdwoAYAqGBa9tWRxk/5wesxMAAk0SJfD/2upK0s6KOAjymrfmS2KDM/He9HO5wjH
VwIDAQAB
-----END PUBLIC KEY-----
1
2
3
4
5
6
7
8
9
10

# 四. X.509证书的常见应用

许多Internet协议都依赖于X.509,另外还有许多应用程序都在使用PKI技术,包括Web服务器安全、数字签名、文档签名以及数字身份。

# 1.TLS/SSL证书——确保Web服务器的安全

PKI是SSL协议和TLS协议的基础,他们又是浏览器HTTPS安全连接的基础。如果没有SSL证书建立安全连接,网络犯罪分子就可以利用互联网或其他IP网络来拦截消息,常见的犯罪案例是中间人攻击。

# 2.数字签名和文档签名

除了用于保护传输数据安全之外,基于PKI的证书还可以用于数字签名和文档签名。 数字签名和文档签名是一种特殊类型的电子签名,它能够利用PKI来验证签名者的身份,还能验证签名文档的完整性。数字签名不能以任何方式更改或复制,因为签名是通过生成散列来创建的,该散列通过发件人的私钥进行加密。这种加密验证将签名绑定到原始信息上,可以确保发送者经过身份验证,还能保证信息本身未被篡改。

# 3.代码签名

代码签名通过对应用程序、驱动程序或软件程序进行数字签名,帮助应用开发商为这些程序提供进一步的保护。通过代码签名,终端用户可以相信代码没有受到第三方的篡改和破坏。为了保障代码的安全性和可信度,代码签名证书提供了软件开发商的签名、公司名称和时间戳。

# 4.电子邮件证书

电子邮件证书又叫做S/MIME邮件安全证书,可以验证电子邮件发件人身份并加密邮件内容,防止网络钓鱼攻击。通过加密和解密邮件及附件,验证邮件发送方的身份,S/MIME邮件安全证书可以保证邮件的真实性和完整性。

# 5.SSH密钥

SSH又叫做安全外壳协议,而SSH密钥是X.509证书的一种形式,它提供在安全外壳协议中使用的安全访问凭证。由于SSH协议广泛用于云服务、网络环境、文件传输工具和配置管理工具中的远程通信,因此大多数组织使用SSH密钥来验证身份并保护它们免遭误用和恶意攻击。SSH密钥可以提高安全性,实现连接过程、单点登录机制(SSO)、身份和访问管理的自动化。

# 6.数字身份

X.509数字证书还提供有效的数字身份认证。随着数据和应用程序从传统网络扩展到移动设备、公有云、私有云和物联网设备,身份认证变得越来越重要。数字证书不仅限于对设备进行身份验证,还可用于对人员、数据或应用程序进行身份验证。如今,由于网络攻击者越来越擅长于窃取密码,基于PKI的数字证书使用无密码身份认证来提高安全性,防止密码凭证丢失或被盗取。

# 什么是PKI和X.509

PKI(Public Key Infrastructure,公钥基础设施)的证书是在 PKI 系统中使用的一种数字证书。PKI 是一种基于非对称加密的体系结构,用于管理和认证公钥的使用。 PKI 证书包含了以下信息:

  1. 主题(Subject):证书的拥有者或实体的标识信息,通常包括名称、组织、国家等。
  2. 颁发者(Issuer):证书颁发机构(Certification Authority,CA)的标识信息,即签发该证书的权威机构。
  3. 公钥(Public Key):证书中包含了公钥,用于加密、验证签名或进行密钥交换等操作。
  4. 有效期(Validity):证书的生效日期和过期日期,指示证书的有效时间范围。
  5. 序列号(Serial Number):证书的唯一序列号,用于区分不同的证书。
  6. 签名(Signature):证书颁发者对证书内容的数字签名,用于验证证书的完整性和真实性。

PKI 证书通常用于实现以下功能:

  • 身份认证:通过验证证书的签发机构和数字签名,可以确认证书中公钥的拥有者的身份。
  • 加密通信:使用证书中的公钥加密数据,只有拥有相应私钥的实体才能解密数据。
  • 数字签名:使用证书中的私钥对数据进行签名,可以确保数据的完整性和不可否认性。
  • 密钥交换:通过交换证书中的公钥,实现在不安全通道上安全地交换对称加密算法所使用的密钥。

PKI 证书在安全通信、身份认证、数字签名和加密等领域起着重要作用,广泛应用于网络通信、电子商务、虚拟专用网络(VPN)等各种安全场景。

X.509 数字证书是一种标准化的数字证书格式,用于在公钥基础设施(PKI)中进行公钥的认证和管理。它是由ITU-T(国际电信联盟电信标准化部门)定义的一项标准,具体规范在 X.509 技术建议书中定义。 X.509 数字证书采用了一种层次化的结构来组织和表示证书中的各个组件。证书中包含了以下信息:

  1. 版本(Version):指示证书的格式版本,通常表示为一个整数。
  2. 序列号(Serial Number):证书的唯一序列号,用于区分不同的证书。
  3. 签名算法标识(Signature Algorithm Identifier):指示用于签名证书的算法类型。
  4. 颁发者(Issuer):证书颁发机构(Certification Authority,CA)的标识信息,即签发该证书的权威机构。
  5. 有效期(Validity):证书的生效日期和过期日期,指示证书的有效时间范围。
  6. 主题(Subject):证书的拥有者或实体的标识信息,通常包括名称、组织、国家等。
  7. 主题公钥信息(Subject Public Key Info):证书中包含了公钥,用于加密、验证签名或进行密钥交换等操作。
  8. 颁发者唯一标识(Issuer Unique Identifier):可选字段,用于标识颁发者。
  9. 主题唯一标识(Subject Unique Identifier):可选字段,用于标识主题。
  10. 扩展字段(Extensions):可选字段,提供了额外的证书信息,如密钥用途、扩展密钥用途、颁发者信息等。
  11. 签名值(Signature Value):证书颁发者对证书内容的数字签名,用于验证证书的完整性和真实性。

X.509 数字证书根据标准格式,可以在不同的系统和应用中进行交换和使用。它们在公钥基础设施中用于身份认证、加密通信、数字签名、密钥交换等安全操作,提供了一种可靠的方式来验证公钥的拥有者身份和保证通信的安全性。

# 参考

openssl 查看证书 (opens new window) 使用OpenSSL生成/签发证书的原理、流程与示例 (opens new window) 数字证书是什么原理,有什么作用? (opens new window) SSL的加密和解密过程 (opens new window) https://www.cnblogs.com/phpper/p/9175750.html (opens new window) Git认证方式https和ssh的原理及比较 (opens new window) git ssh 配置与原理 (opens new window) 非对称加解密,私钥和公钥到底是谁来加密,谁来解密 (opens new window)

编辑 (opens new window)
上次更新: 2024/02/22, 14:03:19
linux环境变量介绍
浏览器如何验证证书安全性

← linux环境变量介绍 浏览器如何验证证书安全性→

最近更新
01
spark基础
02-22
02
mysql读写分离和分库分表
02-22
03
数据库迁移
02-22
更多文章>
Theme by Vdoing | Copyright © 2019-2024 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式