zoukankan      html  css  js  c++  java
  • 数字证书DER、 PEM等编码格式以及PKCS1,PKCS8

    我们知道,在 HTTPS(HTTP over SSL)请求的 SSL 握手阶段,服务端以数字证书的方式将 RSA 公钥传给客户端,以保证公钥在传输过程中不被篡改,而公钥将用于加密后续数据传输对称加密的密钥;

    我们下面来了解一下证书的标准、编码格式以及常见的文件扩展名。

    X509 文件扩展名

    首先我们要理解文件的扩展名代表什么。DER、PEM、CRT和CER这些扩展名经常令人困惑。很多人错误地认为这些扩展名可以互相代替。尽管的确有时候有些扩展名是可以互换的,但是最好你能确定证书是如何编码的,进而正确地标识它们。正确地标识证书有助于证书的管理。

    编码 (也用于扩展名)

    .DER : 扩展名DER用于二进制DER编码的证书。这些证书也可以用CER或者CRT作为扩展名。比较合适的说法是“我有一个DER编码的证书”,而不是“我有一个DER证书”。

    .PEM :  扩展名PEM用于ASCII(Base64)编码的各种X.509 v3 证书。文件开始由一行"—– BEGIN …“开始。如“BEGIN RSA PRIVATE KEY”

    常用的扩展名

    CRT : 扩展名CRT用于证书。证书可以是DER编码,也可以是PEM编码。扩展名CER和CRT几乎是同义词。这种情况在各种unix/linux系统中很常见。

    CER : CRT证书的微软型式。可以用微软的工具把CRT文件转换为CER文件(CRT和CER必须是相同编码的,DER或者PEM)。扩展名为CER的文件可以被IE识别并作为命令调用微软的cryptoAPI(具体点就是rudll32.exe cryptext.dll, CyrptExtOpenCER),进而弹出一个对话框来导入并/或查看证书内容。

    KEY : 扩展名KEY用于PCSK#8的公钥和私钥。

    这些公钥和私钥可以是DER编码或者PEM编码。

    CRT文件和CER文件只有在使用相同编码的时候才可以安全地相互替代。

    公钥加密标准(Public Key Cryptography Standards, PKCS),BEGIN RSA PRIVATE KEY是PKCS#1,BEGIN PRIVATE KEY是PKCS#8
  • 相关阅读:
    django虚拟环境中报E: 无法定位软件包 sqliteman
    创建django项目
    Django虚拟环境安装
    python学习笔记(三)
    python学习笔记(二)
    python学习笔记(一)
    python 类属性和实例属性
    决策树的基本ID3算法
    KNN算法的简单实现
    webClient
  • 原文地址:https://www.cnblogs.com/twoheads/p/12860257.html
Copyright © 2011-2022 走看看