美文网首页
证书管理系统开发

证书管理系统开发

作者: 是你的小凉凉呀 | 来源:发表于2020-05-25 14:05 被阅读0次

    1.数字证书格式

    RFC 3280 规定了 X.509 数字证书的基本格式

    X.509 数字证书结构

    X.509 证书域组成

    分类 标识符 说明
    证书内容(待签名) tbsCertificate 包含持有者公钥、持有者信息、签发者信息等
    签名算法 signatureAlgorithm 包含摘要算法和公钥算法
    签名值 signatureValue 使用签名算法,对证书内容 tbsCertificate 进行签名后的结果

    X.509 证书内容

    分类 标识符 说明
    版本号 version 用于区分证书格式版本,最新版本为 v3,缺省值为 v1
    序列号 serialNumber 证书唯一标识
    签名算法 signature 必须与证书域名中的签名算法相同
    证书签发者 issure 用于区分证书签发者,包含证书签发者身份信息
    证书有效期 validity 由生效日期和失效日期组成
    证书持有者 subject 用于区分证书持有者,包含证书持有者身份信息
    证书持有者公钥 subjectPublicKeyInfo 包含证书持有者公钥信息
    证书签发者ID issuerUniqueID 表示证书签发者唯一标识
    证书持有者ID subjectUniqueID 表示证书持有者唯一标识
    扩展项 extension 包含其他可扩展信息

    issure 和 subject 包含的主要属性类型

    分类 OID 说明
    country id-at 6 国家,C
    organization id-at10 单位,O
    organizational-unit id-at 11 部门,OU
    distinguished name qualifier id-at 46 DN 限定符
    state or province name id-at 8 省份或州,ST
    common name id-at 3 通用名称,CN
    serial number id-at 5 序列号,SN
    locality id-at 7 城市,L
    domain component 域名组件,等同于 DNS,DC
    title id-at 12 头衔
    surname id-at 4
    given name id-at 42
    initials id-at 43 首字母缩写
    pseudonym id-at 65 假名
    generation qualifier id-at 44 时代限定符,如老、小、第四代等
    email address pkcs-9 1 电子邮箱

    2.KeyUsages

    密钥用法

    仅仅加密 Encipher Only
    仅仅解密 Decipher Only
    数字签名 Digital Signature
    认可签名 Non Repudiation
    密钥加密 key Encipherment
    数据加密 Data Encipherment
    密钥协商 key Agreement
    证书签名 Key CertSign
    CRL 签名 Crl Sign

    增强密钥用法

    Microsoft 信任列表签名 (1.3.6.1.4.1.311.10.3.1)
    合格的部属 (1.3.6.1.4.1.311.10.3.10)
    密钥恢复 (1.3.6.1.4.1.311.10.3.11)
    许可证服务器确认 (1.3.6.1.4.1.311.10.6.2)
    生存时间签名 (1.3.6.1.4.1.311.10.3.13)
    Microsoft 时间戳 (1.3.6.1.4.1.311.10.3.2)
    加密文件系统 (1.3.6.1.4.1.311.10.3.4)
    文件恢复 (1.3.6.1.4.1.311.10.3.4.1)
    根列表签名者 (1.3.6.1.4.1.311.10.3.9)
    数字权利 (1.3.6.1.4.1.311.10.5.1)
    密钥数据包许可证 (1.3.6.1.4.1.311.10.6.1)
    文档签名 (1.3.6.1.4.1.311.10.3.12)
    证书申请代理 (1.3.6.1.4.1.311.20.2.1)
    智能卡登录 (1.3.6.1.4.1.311.20.2.2)
    私钥存档 (1.3.6.1.4.1.311.21.5)
    Windows 硬件驱动程序验证 (1.3.6.1.4.1.311.10.3.5)
    密钥恢复代理 (1.3.6.1.4.1.311.21.6)
    代码签名 (1.3.6.1.5.5.7.3.3)
    时间戳 (1.3.6.1.5.5.7.3.8)
    客户端身份验证 (1.3.6.1.5.5.7.3.2)
    安全电子邮件 (1.3.6.1.5.5.7.3.4)
    服务器身份验证 (1.3.6.1.5.5.7.3.1)
    IP 安全用户 (1.3.6.1.5.5.7.3.7)
    IP 安全 IKE 中级 (1.3.6.1.5.5.8.2.2)
    OEM Windows 系统组件验证 (1.3.6.1.4.1.311.10.3.7)
    IP 安全终端系统 (1.3.6.1.5.5.7.3.5)
    IP 安全隧道终止 (1.3.6.1.5.5.7.3.6)
    目录服务电子邮件复制 (1.3.6.1.4.1.311.21.19)
    内嵌 Windows 系统组件验证 (1.3.6.1.4.1.311.10.3.8)
    Windows 系统组件验证 (1.3.6.1.4.1.311.10.3.6)
    所有颁发的策略 (2.5.29.32.0)

    证书类型

    (1)根证书
    密钥用法:认可签名,证书签名,CRL签名
    keyUsage=nonRepudiation, keyCertSign,cRLSign

    (2)代码签名
    密钥用法:数字签名
    增强密钥用法:代码签名
    keyUsage=digitalSignature
    extendedKeyUsage=codeSigning

    (3)计算机
    密钥用法:数字签名,密钥协商
    增强密钥用法:服务器验证,客户端验证
    keyUsage=digitalSignature,keyAgreement
    extendedKeyUsage=serverAuth,clientAuth

    (4)WEB服务器
    密钥用法:数字签名,认可签名,密钥加密,数据加密,密钥协商
    增强密钥用法:服务器验证
    keyUsage=digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment,keyAgreement
    extendedKeyUsage=serverAuth

    (5)客户端
    密钥用法:数字签名,认可签名,密钥加密,数据加密
    增强密钥用法:客户端验证
    keyUsage=digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment
    extendedKeyUsage=clientAuth

    (6)信任列表签名
    密钥用法:数字签名
    增强密钥用法:信任列表签名
    keyUsage=digitalSignature
    extendedKeyUsage=msCTLSign

    (7)时间戳
    密钥用法:数字签名,认可签名,密钥加密,数据加密
    增强密钥用法:时间戳
    keyUsage=digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment
    extendedKeyUsage=timeStamping

    (8)IPSEC
    密钥用法:数字签名,认可签名,密钥加密,数据加密
    增强密钥用法:IP安全IKE中级
    keyUsage=digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment
    extendedKeyUsage=1.3.6.1.5.5.8.2.2

    (9)安全Email
    密钥用法:数字签名,认可签名,密钥加密,数据加密
    增强密钥用法:安全电子邮件
    keyUsage=digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment
    extendedKeyUsage=emailProtection

    (10)智能卡登陆
    密钥用法:数字签名,密钥协商,仅仅解密
    增强密钥用法:密钥恢复,加密文件系统,智能卡登陆
    keyUsage=digitalSignature,keyAgreement,decipherOnly
    extendedKeyUsage=1.3.6.1.4.1.311.10.3.11,msEFS,1.3.6.1.4.1.311.20.2.2

    3.openssl

    通过openssl的命令行能够轻松的将pkcs#12格式的证书解析成pem后缀的证书文件,方便程序调用

    从pfx中获取CA证书
    openssl pkcs12 -in client.pfx -password pass:11111111 -nokeys -cacerts -out ca.pem

    从pfx中获取客户端证书
    openssl pkcs12 -in client.pfx -password pass:11111111 -clcerts -nokeys -out clientcert.pem

    从pfx中获取客户端私钥

    openssl pkcs12 -in client.pfx -password pass:11111111 -nocerts -out clientkey.pem

    解析密钥:
    从pfx中获取密钥对
    openssl pkcs12 -in w.pfx -password pass:111111 -nocerts -out w.key

    从密钥对提取私钥
    openssl rsa -in w.key -out w-private.key

    从密钥对提取公钥
    openssl rsa -in w.key -pubout -out w-public.key

    因为RSA算法使用的是pkcs8模式补足,需要对提取的私钥进一步处理(可选)
    openssl pkcs8 -in 1_pri.key -out 1_pri.p8 -outform der -nocrypt -topk8

    相关文章

      网友评论

          本文标题:证书管理系统开发

          本文链接:https://www.haomeiwen.com/subject/nvdyahtx.html