文档章节

常用的证书格式转换

niceguy_php
 niceguy_php
发布于 2014/04/02 23:21
字数 1077
阅读 2175
收藏 7

一直对电子证书的文件后缀比较头大,搞不清这些后缀的关系,终于在网上搜到一个比较简明的文章,试着翻译一下:)


证书与编码

本至上,X.509证书是一个数字文档,这个文档根据RFC 5280来编码并/或签发。

实际上,“X.509证书”经常被用来指代IETF的PKIX(Public Key Infrastructure)证书和X.509 v3 证书标准中的CRL(Certificate Revocation List)。


X509 文件扩展名

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


编码 (也用于扩展名)

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

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


常用的扩展名

  • .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文件只有在使用相同编码的时候才可以安全地相互替代。




1.从pfx格式的证书提取出密钥和证书 
set OPENSSL_CONF=openssl.cnf 
openssl pkcs12 -in my.pfx -nodes -out server.pem 
openssl rsa -in server.pem -out server.key 
openssl x509 -in server.pem -out server.crt 
PEM格式的证书与DER格式的证书的转换 
openssl x509 -in cert.pem -inform PEM -out cert.der -outform DER 
openssl x509 -in ca.cer -inform DER -out ca.pem -outform  PEM 
几种典型的密码交换信息文件格式: 
DER-encoded certificate: .cer, .crt 
PEM-encoded message: .pem 
PKCS#12 Personal Information Exchange: .pfx, .p12 
PKCS#10 Certification Request: .p10 
PKCS#7 cert request response: .p7r 
PKCS#7 binary message: .p7b 
.cer/.crt是用于存放证书,它是2进制形式存放的,不含私钥。 
.pem跟crt/cer的区别是它以Ascii来表示。 
pfx/p12用于存放个人证书/私钥,他通常包含保护密码,2进制方式 
p10是证书请求 
p7r是CA对证书请求的回复,只用于导入 
p7b以树状展示证书链(certificate chain),同时也支持单个证书,不含私钥 

算法 
base64不是加密算法,但也是SSL经常使用的一种算法,它是编码方式,用来把asc码和二进制码转来转去的。 

openssl x509部分命令 
打印出证书的内容: 
openssl x509 -in cert.pem -noout -text 
打印出证书的系列号 
openssl x509 -in cert.pem -noout -serial 
打印出证书的拥有者名字 
openssl x509 -in cert.pem -noout -subject 
以RFC2253规定的格式打印出证书的拥有者名字 
openssl x509 -in cert.pem -noout -subject -nameopt RFC2253 
在支持UTF8的终端一行过打印出证书的拥有者名字 
openssl x509 -in cert.pem -noout -subject -nameopt oneline -nameopt -escmsb 
打印出证书的MD5特征参数 
openssl x509 -in cert.pem -noout -fingerprint 
打印出证书的SHA特征参数 
openssl x509 -sha1 -in cert.pem -noout -fingerprint 
把PEM格式的证书转化成DER格式 
openssl x509 -in cert.pem -inform PEM -out cert.der -outform DER 
把一个证书转化成CSR 
openssl x509 -x509toreq -in cert.pem -out req.pem -signkey key.pem 
给一个CSR进行处理,颁发字签名证书,增加CA扩展项 
openssl x509 -req -in careq.pem -extfile openssl.cnf -extensions v3_ca -signkey key.pem -out cacert.pem 
给一个CSR签名,增加用户证书扩展项 
openssl x509 -req -in req.pem -extfile openssl.cnf -extensions v3_usr -CA cacert.pem -CAkey key.pem -CAcreateserial

本文转载自:http://sdzbqh.iteye.com/blog/1517456

niceguy_php
粉丝 2
博文 34
码字总数 8351
作品 0
成都
程序员
私信 提问
OpenSSL 转换证书格式

OpenSSL 转换证书格式 原创 2016-08-30 景峯 Netkiller 工作中我相信你一定会遇到处理数字证书的时候。各种平台,各种语言,它们采用的证书格式与标准都不相同,多多少少存在一些差异。实际上...

neo-chen
2016/09/08
193
0
使用 OpenSSL 实现私钥和证书的转换

近期在项目中iOS需要用到APNs的推送,而公司的iOS女同事(纯哥)只给了我2个p12格式的文件。突然发现,证书的转换问题还是比较常见的,比如之前支付开发。而在程序中,实际需要使用的是pem格式的证...

局长
2016/09/05
7.4K
4
阿里云下载的https 证书在tomcat 上安装教程

文章是在阿里云上转过来的 安装证书 Tomcat支持JKS格式证书,从Tomcat7开始也支持PFX格式证书,两种证书格式任选其一。 文件说明: 1. 证书文件1539490276504.pem,包含两段内容,请不要删除...

wangyanbao
2018/10/18
290
0
证书文件编码格式介绍

原文: http://blog.csdn.net/mycoolx/article/details/6730435OpenSSL中虽然使用PEM作为基本的文件编码格式,但是,由于不同的对象其封装和标准格式不太一样,所以经常会导致读者产生迷惑。...

Tenderrain
2017/12/06
0
0
openssl数字证书常见格式与协议介绍

证书主要的文件类型和协议有: PEM、DER、PFX、JKS、KDB、CER、KEY、CSR、CRT、CRL 、OCSP、SCEP等。 PEM – Openssl使用 PEM(Privacy Enhanced Mail)格式来存放各种信息,它是 openssl 默认采...

澈明
2012/09/06
2.9K
0

没有更多内容

加载失败,请刷新页面

加载更多

实战项目-学成在线(一)

之前看的黑马程序员实战项目之一,打算以博客的形式写出来,也让自己重新温习一下。 1、项目背景 略(就是当前这东西很火,我们重点在开发,这些就略过) 2、功能模块 门户,学习中心,教学管...

lianbang_W
26分钟前
2
0
基于Vue的数字输入框组件开发

本文转载于:专业的前端网站➫基于Vue的数字输入框组件开发 1、概述 Vue组件开发的API:props、events和slots 2、组件代码 github地址:https://github.com/MengFangui/VueInputNumber 效果:...

前端老手
35分钟前
2
0
百度地图根据经纬度获取运动轨迹

<!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="initial-scale=1.0, user-scalable=n......

泉天下
37分钟前
4
0
学习记录(day04-axios增删改查、v-for循环、页面加载成功处理函数)

[TOC] 1.1 基本语法:插值表达式 <template> <div> {{username}} <br/> {{1+2+3}} <br/> {{'你的名字是:' + username}} <br/> {{'abc'.split('')}} </div><......

庭前云落
今天
3
0
CentOS Linux 7上将ISO映像文件写成可启动U盘

如今,电脑基本上都支持U盘启动,所以,可以将ISO文件写到U盘上,用来启动并安装操作系统。 我想将一个CentOS Linux 7的ISO映像文件写到U盘上,在CentOS Linux 7操作系统上,执行如下命令: ...

大别阿郎
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部