zoukankan      html  css  js  c++  java
  • Public Key Infrastructure(PKI)的基本概念和Certificate的创建

    一.PKI的作用
    公钥加密也叫做非对称加密,它用一对密钥来进行加密和解密,用某用户密钥加密后所得的信息,只能用该用户的解密密钥才能解密。如果知道了其中一个,并不能计算出另外一个。因此如果公开了一对密钥中的一个,并不会危害到另外一个的秘密性质。称公开的密钥为公钥;不公开的密钥为私钥。
    在用户使用公钥加密时并不能确定使用的公钥的可信性,Public Key Infrastructure就是通过引入一个可信的第三方certification authority(CA)来确保公钥的完整性和持有人的身份。

    二.X.509PKI的结构
    X.509 public key infrastructure标准的结构如下
    -- X.509 signed certificate
    ---------------------------------------------------------------------
    SignedContent ::= SEQUENCE
    {
      certificate         CertificateToBeSigned,
      algorithm           Object Identifier,
      signature           BITSTRING
    }

    ---------------------------------------------------------------------
    -- X.509 certificate to be signed
    ---------------------------------------------------------------------
    CertificateToBeSigned ::= SEQUENCE
    {
      version                 [0] CertificateVersion DEFAULT v1,
      serialNumber            CertificateSerialNumber,
      signature               AlgorithmIdentifier,
      issuer                  Name
      validity                Validity,
      subject                 Name
      subjectPublicKeyInfo    SubjectPublicKeyInfo,
      issuerUniqueIdentifier  [1] IMPLICIT UniqueIdentifier OPTIONAL,
      subjectUniqueIdentifier [2] IMPLICIT UniqueIdentifier OPTIONAL,
      extensions              [3] Extensions OPTIONAL
    }

    关于数据结构的更多信息见http://msdn.microsoft.com/en-us/library/bb540790(v=vs.85).aspx

    三.Store certificate
    如果需要用windows service权限访问certificate,则使用local machine store.需要管理员权限存。
    如果是用户权限访问,则使用current user store

    在MMC snap-in里查看数字证书
    1.运行mmc。
    2.在File目录下点Add/Remove Snap In
    3.点Add加入想要查看的Certificates。
    查看和Internet Explorer有关的数字证书
    在Internet Options里面选Content tab里面的Certificates

    四.创建certificate
    可以用Windows SDK下的makecert.exe来创建用于开发的certificate.需要创建两个certificate,先创建一个self-signed root authority certificate,再创建一个用root authority certificate签名的certificate。
    在Visual Studio Command Prompt下运行makecert [options] outputCertificateFile来创建
    makecert的参数详见
    http://msdn.microsoft.com/en-us/library/bfsktky3.aspx
    http://www.cnblogs.com/gengaixue/archive/2009/02/20/1394933.html
    补充说明:
    1.-pe 将所生成的私钥标记为可导出。可导出就是在certificate的detail label下面可以点copy to file将私钥导出,默认是不可导出的。
    2.-ss store 指定证书的store name,输出证书即存储在那里。
    store name对应的是MMC里面Personal,Trusted Root Certification Authorities等子路径。
    具体的对应如下:
    AuthRoot:third-party certificate authorities
    CertificateAuthority:intermediate certificate authorities
    Disallowed:Untrusted certificates(revoked certificates)
    My:personal
    Root:trusted root certificate authorities
    TrustedPeople:trusted people
    TrustedPublisher:trusted publishers
    AddressBook:The X.509 certificate store for other users
    3.-$ authority
     指定证书的签名权限,必须设置为 commercial(对于商业软件发行者使用的证书)或 individual(对于个人软件发行者使用的证书)。
    设置authority会在Certificate的detail label里面增加两个Field:Enhanced Key Usage和Key Usage Restriction.
    4.-cy certType
     指定证书类型。有效值是 end(对于最终实体)和 authority(对于证书颁发机构)。
     -h number
     指定此证书下面的树的最大高度。
    分别设定Basic Constraints中的Subject Type和Path Length Constraint
    其他配置有待更进一步的学习

    了解了怎么使用MakeCert.exe工具就可以分别创建证书了。
    先创建self signed的证书并认为它是可信的。

    makecert -n "CN=RootCA" -r -sv RootCA.pvk RootCA.cer -ss Root

    再用root certificate签名创建其他的证书并导入到Personal下。

    makecert -iv RootCA.pvk -n "CN=MySignedCA" -ic RootCA.cer MySignedCA.cer -ss My



    作者:Jingle Guo
    出处:http://www.cnblogs.com/studynote/
    若标题中有“转载”字样,则本文版权归原作者所有。若无转载字样,本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    校验身份证有效性
    JAVA实现redis超时失效key 的监听触发
    Java8中时间日期库的20个常用使用示例
    ppt制作元素采集
    查找数据的网站
    在centos7中python3的安装注意
    使用yum安装不知道到底安装在什么文件夹
    linux为什么不可以添加硬链接
    五一之起一台服务器玩玩-花生壳配置
    centos6.5-vsftp搭建
  • 原文地址:https://www.cnblogs.com/studynote/p/2975742.html
Copyright © 2011-2022 走看看