首页 > 其他分享 >.pem文件,.csr文件,.key文件。。。区别

.pem文件,.csr文件,.key文件。。。区别

时间:2022-12-07 15:33:07浏览次数:59  
标签:文件 公钥 证书 openssl rsa pem key csr

三、.pem文件,.csr文件,.key文件。。。区别

做项目时在阿里云上申请的证书,下载Nginx对应的证书时,发现有两个文件一个以.key结尾,一个以.pem结尾,而自定义生成证书时,发现有三种后缀名所以想要弄清楚这几种文件的区别,故搜索了相关资料。

  1. 首先有几个概念:

    总得来说这些文件都与X.509证书和密钥文件有关,从文件编码上分,只有两大类:
* PEM格式:使用Base64 ASCII进行编码的纯文本格式
* DER格式:二机制格式

而CRT, CER,KEY这几种证书和密钥文件,在存储为物理文件时,既可以是PEM格式,也可以DER格式。

* CER:一般用于windows的证书文件格式
* CRT:一般用于Linux的证书,包含公钥和主体信息
* KEY:一般用于密钥,特别是私钥

打个比方:CER,CRT,KEY相当于论文,说明书等,有规定好的行文格式与规范,而PEM和DER相当于txt格式还是word格式。
2. 如何打开.pem 文件和.der文件以及两种文件的转换
假设有一个baidu.crt文件, 这个crt文件的实际格式其实是pem, 有一个der格式的文件baidu.der想要看到这两个文件的实际内容,可以使用命令

openssl x509 -in baidu.crt -text -noout 
openssl x509 -inform der -in baidu.der -text -noout

两者文件的转化,使用命令

# pem转der
openssl x509 -outform der -in baidu.pem -out baidu.der
# der转pem
openssl x509 -inform der -in baidu.der -out baidu.crt

3.自定义生成公私钥对
我们生成一个RSA的公钥和密钥对

openssl genpkey -algorithm rsa -out rsa_private.key

该命令生成了一个 私钥公钥对,也就是说rsa_private.key这个文件同时包含了私钥和公钥,很多文章对这里有误解
我们是可以从该文件中,提取出公钥的

openssl rsa -pubout -in rsa_private.key  -out rsa_pub.key

现在我们有公钥和私钥了,怎么加密解密???
先生成一个测试文件:

$echo "this is a test" > text

对该文件进行加密:

#采用公钥对文件进行加密
$openssl rsautl -encrypt -in text -inkey rsa_pub.key -pubin -out text.en
#采用私钥解密文件
$openssl rsautl -decrypt -in text.en -inkey rsa_private.key 
this is a test

既然是非对称加密,那我们尝试下用私钥加密,用公钥解密。
这里需要注意的是,私钥加密在openssl中对应的是-sign这个选项,公钥解密对应的是-verify这个选项,如下:

#用私钥对文件进行加密(签名)
$openssl rsautl -sign -in text -inkey rsa_private.key -out text.en
#用公钥对文件进行解密(校验)
$openssl rsautl -verify -in text.en -inkey rsa_pub.key -pubin
this is a test

ok,以上大概介绍了公钥和私钥,那现在有一个问题:
公钥是公开分发的,那当你拿到一个公司(个人)的公钥之后,怎么确定这个公钥就是那个公司(个人)的???而不是一个别人篡改之后的公钥??而且公钥上没有任何的附加信息,标记当前公钥的所属的实体,相关信息等。

为了解决这个问题,人们引入了如下两个概念:
(1)证书:公钥信息 + 额外的其他信息(比如所属的实体,采用的加密解密算法等)= 证书。证书文件的扩展名一般为crt。
(2)CA:证书认证中心;拿到一个证书之后,得先去找CA验证下,拿到的证书是否是一个“真”的证书,而不是一个篡改后的证书。如果确认证书没有问题,那么从证书中拿到公钥之后,就可以与对方进行安全的通信了,基于非对称加密机制。CA自身的分发及安全保证,一般是通过一些权威的渠道进行的,比如操作系统会内置一些官方的CA、浏览器也会内置一些CA

ok,那接下来的问题:
我想给自己,给公司、给我的某个服务器申请一个证书,该怎么搞???
公钥私钥对可以在自己的本地通过相关的工具(如openssl、ssh_keygen)产生,那公钥怎么包装成一个证书,并且要在CA那边“注册”一下,不然,别人拿到你的证书之后,去CA那边验证不过,会认为是一个不可信证书。

(1)先生成一个秘钥对

#生成一个公钥密钥对
openssl genpkey -algorithm rsa -out rsa_private.key

(2)基于该私钥我们生成一个CSR(证书签名请求)

openssl req -new -key rsa_private.key -out server.csr

(3)将该CSR文件发给CA,“注册一下”,当然了这个过程是收费的,要钱的。这里,我们把自己当作一个CA,自己给自己注册一下,当然了,产生的证书是没人认可的。

openssl x509 -req -days 365 -in server.csr -signkey rsa_private.key -out mycert.crt

其实这个过程就是第一部分自定义生成SSL证书的过程。

本文参考:

1.SSL中,公钥、私钥、证书(pem、crt、cer、key、csr)的后缀名都是些啥
2.关于PEM, DER, CRT, CER,KEY等各类证书与密钥文件后缀的解释
3.证书相关:rsa、crt文件、key文件、csr文件

标签:文件,公钥,证书,openssl,rsa,pem,key,csr
From: https://www.cnblogs.com/rachel-zh/p/16956086.html

相关文章

  • Linux文件夹执行权限不够怎么办?如何处理?
    在Linux中,文件夹的执行权限不够是非常普遍的情况,那么遇到这种情况该如何处理呢?我们可以通过修改权限来解决该问题,其中比较常用的命令是chmod,接下来我们来看看详细的内......
  • Class类文件结构
    Class文件是一组以8位字节为基础单位的二进制流。1. 魔数与Class文件的版本Class文件的头4个字节称为魔数(MagicNumber),它的唯一作用是确定这个文件是否为一个能被虚拟......
  • tar.gz打包压缩文件
    功能:把某文件夹内的图片,视频打包压缩成.tar.gz文件,并把文件随机重命名,生成对应的json文件运行效果如下图:    """功能:把文件夹内的所有文件打包压缩"......
  • SpringBoot pom.xml配置文件详解
    <?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xsi:sch......
  • 【Linux】Linux的文件目录
    1.Linux文件Linux系统中一切皆文件2.Linux目录结构/是指根目录,文件系统的入口就是/,所有的目录、文件、设备都在/之下~是当前用户的主目录:如果是root用户就是/root/目......
  • 一文掌握 Go 文件的写入操作
    耐心和持久胜过激烈和狂热。哈喽大家好,我是陈明勇,今天分享的知识是Go文件的写入操作。如果本文对你有帮助,不妨点个赞,如果你是Go语言初学者,不妨点个关注,一起成长一起进步......
  • c# 反射获取所有实现接口的类,解决未能加载文件或程序集的问题
    Type[]types=AppDomain.CurrentDomain.GetAssemblies().SelectMany(a=>a.GetTypes().Where(t=>t.GetInterfaces().Contains(typeof(ICon......
  • CSV__04--python使用迭代器读取csv文件出现读取结果为空的解决办法
    1迭代器的概念迭代器(iterator)有时又称光标(cursor)是程序设计的软件设计模式,可在容器对象(container,例如链表或数组)上遍访的接口。2迭代器的特点强制性:必须将元素从迭代......
  • Vscode——#include <Eigen/Core>及#include <Eigen/Dense> compilation terminated.(找不
    一、问题描述检查路径/usr/include中确实存在eigen3/Eigen/Dense的文件夹,该路径已经被写入了IDE的includepath。二、原因分析Eigen被默认安装到了usr/include/eigen3里了(系......
  • FFmpeg合并视频和音频文件
    使用IDM下载Bilibili的视频会出现音视频分离的问题,通常文件大的是视频(没有声音),文件小的是单独的音频。将两个文件都下载下来后,可以使用FFmpeg将其合并成一个视频文件。首......