zoukankan      html  css  js  c++  java
  • 关于密码学算法与数字证书相关的文章

    图片来源:三张图让你全面掌握加密解密技术

    什么是公钥和私钥?

    公钥和私钥就是俗称的不对称加密方式。公钥(Public Key)与私钥(Private Key)是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分。公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。

    通过这种算法得到的密钥对能保证在世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,则必须用另一个密钥才能解密。比如用公钥加密的数据就必须用私钥才能解密,如果用私钥进行加密也必须用公钥才能解密,否则将无法成功解密。

    数字证书的原理

    数字证书采用公钥体制,即利用一对互相匹配的密钥对进行加密、解密。每个用户自己设定一把特定的仅为本人所知的私有密钥(私钥),用它进行解密和签名;同时设定一把公共密钥(公钥)并由本人公开,为一组用户所共享,用于加密和验证签名。

    由于密钥仅为本人所有,这样就产生了别人无法生成的文件,也就形成了数字签名。

    数字证书是一个经证书授权中心(CA)数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。数字证书还有一个重要的特征就是只在特定的时间段内有效。

    主流数字证书都有哪些格式?

    一般来说,主流的Web服务软件,通常都基于OpenSSL和Java两种基础密码库。

    • Tomcat、Weblogic、JBoss等Web服务软件,一般使用Java提供的密码库。通过Java Development Kit (JDK)工具包中的Keytool工具,生成Java Keystore(JKS)格式的证书文件。
    • Apache、Nginx等Web服务软件,一般使用OpenSSL工具提供的密码库,生成PEM、KEY、CRT等格式的证书文件。
    • IBM的Web服务产品,如Websphere、IBM Http Server(IHS)等,一般使用IBM产品自带的iKeyman工具,生成KDB格式的证书文件。
    • 微软Windows Server中的Internet Information Services(IIS)服务,使用Windows自带的证书库生成PFX格式的证书文件。

    如何判断证书文件是文本格式还是二进制格式?

    您可以使用以下方法简单区分带有后缀扩展名的证书文件:

    • *.DER或*.CER文件: 这样的证书文件是二进制格式,只含有证书信息,不包含私钥。
    • *.CRT文件: 这样的证书文件可以是二进制格式,也可以是文本格式,一般均为文本格式,功能与 *.DER及*.CER证书文件相同。
    • *.PEM文件: 这样的证书文件一般是文本格式,可以存放证书或私钥,或者两者都包含。 *.PEM 文件如果只包含私钥,一般用*.KEY文件代替。
    • *.PFX或*.P12文件: 这样的证书文件是二进制格式,同时包含证书和私钥,且一般有密码保护。

    密钥管理工具

    MakeCert(已过期,推荐使用 Powershell New-SelfSignedCertificate)
    微软证书创建工具生成仅用于测试目的的 X.509 证书。它创建用于数字签名的公钥和私钥对,并将其存储在证书文件中。此工具还将密钥对与指定发行者的名称相关联,并创建一个 X.509 证书,该证书将用户指定的名称绑定到密钥对的公共部分。

    OpenSSL
    OpenSSL 是一个强大且应用广泛的安全基础库工具。

    OpenSSL 创建RSA私钥 (2048位)
    openssl genrsa -out  private_key.pem 2048
    openssl rsa -in private_key.pem -pubout -out public_key.pem

    Keytool
    Keytool工具是 JDK 中自带的密钥管理工具,可以制作Keystore(jks)格式的证书文件,可以从下载JDK工具包来获取Keytool工具。

    证书格式转换

    以下证书格式之间是可以互相转换的

    image

    • 将JKS格式证书转换成PFX格式

      您可以使用JDK中自带的Keytool工具,将JKS格式证书文件转换成PFX格式。例如,您可以执行以下命令将 server.jks证书文件转换成server.pfx证书文件:

      keytool -importkeystore -srckeystore D:server.jks -destkeystore D:server.pfx
              -srcstoretype JKS -deststoretype PKCS12
    • 将PFX格式证书转换为JKS格式

      您可以使用JDK中自带的Keytool工具,将PFX格式证书文件转换成JKS格式。例如,您可以执行以下命令将 server.pfx证书文件转换成server.jks证书文件:

      keytool -importkeystore -srckeystore D:server.pfx -destkeystore D:server.jks
              -srcstoretype PKCS12 -deststoretype JKS
    • 将PEM/KEY/CRT格式证书转换为PFX格式

      您可以使用 OpenSSL工具,将KEY格式密钥文件和CRT格式公钥文件转换成PFX格式证书文件。例如,将您的KEY格式密钥文件(server.key)和CRT格式公钥文件(server.crt)拷贝至OpenSSL工具安装目录,使用OpenSSL工具执行以下命令将证书转换成server.pfx证书文件:

      openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt
    • 将PFX转换为PEM/KEY/CRT

      您可以使用 OpenSSL工具,将PFX格式证书文件转化为KEY格式密钥文件和CRT格式公钥文件。例如,将您的PFX格式证书文件拷贝至OpenSSL安装目录,使用OpenSSL工具执行以下命令将证书转换成server.pem证书文件KEY格式密钥文件(server.key)和CRT格式公钥文件(server.crt):

      openssl pkcs12 -in server.pfx -nodes -out server.pem
      openssl rsa -in server.pem -out server.key
      openssl x509 -in server.pem -out server.crt

    REFER:
    数字证书原理
    http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html
    数字签名是什么?
    http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html
    数字证书常见标准
    https://www.cnblogs.com/cuimiemie/p/6442685.html
    keytool和openssl生成的证书转换
    https://www.cnblogs.com/cuimiemie/p/6442668.html
    数字证书应用综合揭秘(包括证书生成、加密、解密、签名、验签)
    https://www.cnblogs.com/leslies2/p/7442956.html
    浅谈常见的七种加密算法及实现
    https://juejin.im/post/5b48b0d7e51d4519962ea383
    证书及证书管理(keytool工具实例)
    https://www.cnblogs.com/benwu/articles/4891758.html
    https://www.alibabacloud.com/help/zh/faq-detail/42214.htm

    https://github.com/google/tink

  • 相关阅读:
    Windows SDK编程(Delphi版) 之 应用基础,楔子
    一个小问题引发的论证思考
    Delphi 组件开发教程指南(7)继续模拟动画显示控件
    用PyInstaller将python转成可执行文件exe笔记
    使用 .Net Memory Profiler 诊断 .NET 应用内存泄漏(方法与实践)
    Microsof Office SharePoint 2007 工作流开发环境搭建
    How to monitor Web server performance by using counter logs in System Monitor in IIS
    LINQ之Order By
    window 性能监视器
    内存泄露检测工具
  • 原文地址:https://www.cnblogs.com/Irving/p/9442247.html
Copyright © 2011-2022 走看看