网络安全 / crt、pem、pfx、cer、key 作用及区别

一、编码格式

同样的 X.509 证书,可能有不同的编码格式,目前有以下两种编码格式。

1、PEM - Privacy Enhanced Mail

打开看文本格式,以“-----BEGIN...”开头,“-----END...”结尾,内容是 BASE64 编码。

查看 PEM 格式证书的信息:openssl x509 -in certificate.pem -text -noout

Apache 和 UNIX 服务器偏向于使用这种编码格式。

2、DER - Distinguished Encoding Rules

打开看是二进制格式,不可读。

查看 DER 格式证书的信息:openssl x509 -in certificate.der -inform der -text -noout

Java 和 Windows 服务器偏向于使用这种编码格式。

二、相关的文件扩展名

这是比较误导人的地方,虽然我们已经知道有 PEM 和 DER 这两种编码格式,但文件扩展名并不一定就叫“PEM”或者“DER”,常见的扩展名除了 PEM 和 DER 还有以下这些,它们除了编码格式可能不同之外,内容也有差别,但大多数都能相互转换编码格式。

1、CRT

CRT 应该是 certificate 的三个字母,其实还是证书的意思。常见于 UNIX 系统,有可能是 PEM 编码,也有可能是 DER 编码,大多数应该是 PEM 编码,相信你已经知道怎么辨别。

2、CER

还是 certificate,还是证书。常见于 Windows 系统,同样的可能是 PEM 编码,也可能是 DER 编码,大多数应该是 DER 编码。

3、KEY

通常用来存放一个公钥或者私钥,并非 X.509 证书。编码同样的,可能是 PEM,也可能是 DER。

查看 KEY 的办法:openssl rsa -in mykey.key -text -noout  

如果是 DER 格式的话,同理应该这样了:openssl rsa -in mykey.key -text -noout -inform der

4、CSR

Certificate,Signing Request,即证书签名请求。这个并不是证书,而是向权威证书颁发机构获得签名证书的申请,其核心内容是一个公钥(当然还附带了一些别的信息)。在生成这个申请的时候,同时也会生成一个私钥,私钥要自己保管好。做过 iOS APP 的朋友都应该知道是,怎么向苹果申请开发者证书的吧。

查看的办法:openssl req -noout -text -in my.csr (如果是 DER 格式的话照旧加上 -inform der,这里不写了)。

5、PFX/P12

predecessor of PKCS#12,对 unix 服务器来说,一般 CRT 和 KEY 是分开存放在不同文件中的,但 Windows 的 IIS 则将它们存在一个 PFX 文件中,(因此这个文件包含了证书及私钥)这样会不会不安全?应该不会,PFX 通常会有一个“提取密码”,你想把里面的东西读取出来的话,它就要求你提供提取密码,PFX 使用的时 DER 编码,如何把 PFX 转换为 PEM 编码?

openssl pkcs12 -in for-iis.pfx -out for-iis.pem -nodes

这个时候会提示你输入提取代码,for-iis.pem 就是可读的文本。

生成 pfx 的命令类似这样:openssl pkcs12 -export -in certificate.crt -inkey privateKey.key -out certificate.pfx -certfile CACert.crt

其中 CACert.crt 是 CA(权威证书颁发机构)的根证书,有的话也通过 -certfile 参数一起带进去。这么看来,PFX 其实是个证书密钥库。

三、自己的理解

PEM 和 DER是不同的编码方式,PEM在 linux 上常用,DER 在 window 上常用,可以相互转换。

在 linux 上常用 crt 和 key 俩文件,在 window 常用 PFX,PFX 里边包含证书和私钥,可以用来生成,也可以通过证书和私钥合成 PFX,都是可以的。

 

转载于:https://www.cnblogs.com/workharder/p/13051052.html

 

(SAW:Game Over!)

1. 配置 linux1 为 apache2 服务器,使用 skills.com 或 any.skills.com(any 代表任意网址前缀,用 linux1.skills.com 和 web.skills.com 测试)访问时, 8 / 13 自动跳转到 www.skills.com 。 禁止使用 ip 地 址 访 问 , 默 认 首 页 文 档 /var/www/html/index.html 的内容为"Apache"。 在 linux1 上安装 apache2 服务器,编辑 /etc/apache2/sites-available/skills.conf 文件,添加以下内容: <VirtualHost *:80> ServerName skills.com ServerAlias any.skills.com Redirect 301 / http://www.skills.com/ </VirtualHost> 禁止使用 IP 地址访问可以在 /etc/apache2/apache2.conf 文件中添加以下内容: <Directory /var/www/html> Options -Indexes AllowOverride None Require all granted <RequireAny> Require not ip 127...1 Require not ip ::1 </RequireAny> </Directory> 默认首页文档为 /var/www/html/index.html,可以在该文件中添加 "Apache"。 2. 把/etc/ssl/skills.crt 证书文件和/etc/ssl/skills.key 私钥文件转换成含有证书和私钥的/etc/ssl/skills.pfx 文件;然后把/etc/ssl/skills.pfx 转换为含有证书和私钥的/etc/ssl/skills.pem文件,再从/etc/ssl/skills.pem 文件中提取证书和私钥分别到/etc/ssl/apache.crt 和/etc/ssl/apache.key。 使用 openssl 命令可以完成这些操作: 将证书和私钥转换成 PFX 格式: openssl pkcs12 -export -out /etc/ssl/skills.pfx -inkey /etc/ssl/skills.key -in /etc/ssl/skills.crtPFX 文件转换成 PEM 格式: openssl pkcs12 -in /etc/ssl/skills.pfx -out /etc/ssl/skills.pem -nodes 从 PEM 文件中提取证书和私钥: openssl x509 -in /etc/ssl/skills.pem -out /etc/ssl/apache.crt openssl rsa -in /etc/ssl/skills.pem -out /etc/ssl/apache.key 3. 客户端访问 apache 服务时,必需有 SSL 证书的代码 在 /etc/apache2/sites-available/skills.conf 文件中添加以下内容: <VirtualHost *:443> ServerName www.skills.com ServerAlias any.skills.com DocumentRoot /var/www/html SSLEngine on SSLCertificateFile /etc/ssl/apache.crt SSLCertificateKeyFile /etc/ssl/apache.key </VirtualHost> 这样客户端访问 https://www.skills.com 或 https://any.skills.com 时就需要 SSL 证书了。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值