证书文件格式

个人信息交换 (PKCS #12)

个人信息交换格式(PFX,也称为 PKCS #12)支持安全存储证书、私钥和证书路径中的所有证书。
PKCS #12 是唯一可用于导出证书及其私钥的文件格式。

加密消息语法标准 (PKCS #7)

PKCS #7 格式支持存储证书和证书路径中的所有证书。

DER 编码的二进制 X.509

区别编码规则 (DER) 格式支持存储单个证书。该格式不支持存储私钥或证书路径。

Base64 编码的 X.509

Base64 格式(PEM)支持存储单个证书。该格式不支持存储私钥或证书路径。

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编码。

其他

转自 http://blog.csdn.net/sdcxyz/article/details/47220129

证书类型
x509的证书编码格式有两种
1.PEM(Privacy-enhanced Electronic Mail) 是明文格式的 以 —–BEGIN CERTIFICATE—–开头,已—–END CERTIFICATE—–结尾,中间是经过base64编码的内容,apache需要的证书就是这类编码的证书 查看这类证书的信息的命令为 :openssl x509 -noout -text -in server.pem
其实PEM就是把DER的内容进行了一次base64编码
2.DER 是二进制格式的证书 查看这类证书的信息的命令为 :openssl x509 -noout -text -inform der -in server.der

扩展名
.crt 证书文件 ,可以是DER(二进制)编码的,也可以是PEM( ASCII (Base64) )编码的 ,在类unix系统中比较常见
.cer 也是证书 常见于Windows系统 编码类型同样可以是DER或者PEM的,windows 下有工具可以转换crt到cer
.csr 证书签名请求 一般是生成请求以后发送给CA,然后CA会给你签名并发回证书
.key 一般公钥或者密钥都会用这种扩展名,可以是DER编码的或者是PEM编码的 查看DER编码的(公钥或者密钥)的文件的命令为 openssl rsa -inform DER -noout -text -in xxx.key 查看PEM编码的(公钥或者密钥)的文件的命令为 openssl rsa -inform PEM -noout -text -in xxx.key
.p12 证书 包含一个X509证书和一个被密码保护的私钥

生成证书签名请求 用openssl req
给证书签名 用 openssl x509
自签名证书的Issuer和Subject是一样的
证书的三个作用 加密通信和身份验证(验证对方确实是对方声称的对象)和数据完整性(无法被修改,修改了会被知)

一. 自签名证书:
1.生成服务器私钥 openssl genrsa -des3 -out server.key 4096
2.生成证书签名请求 openssl req -new -key server.key -out server.csr 这里要填一大堆东西 保证Common name跟你的域名或者IP相同
3.对上一步生成的证书签名请求进行签名 openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
4.生成无需密码的服务器私钥 ,如果私钥是有密码的,则每次启动web服务器都会要求你输入密码
openssl rsa -in server.key -out server.key.insecure
mv server.key server.key.secure
mv server.key.insecure server.key
确保你的私钥的安全性 因为该证书无法被吊销 chmod 999 server.key.secure server.key
还有一个简单的方法一步创建私钥和自签名请求
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout apache.key -out apache.crt
这里的apache.key为私钥 apache.crt为证书
二.创建私有CA,然后用该CA给证书进行签名
1.创建CA私钥 openssl genrsa -des3 -out ca.key 4096
2.生成CA的自签名证书 openssl req -new -x509 -days 365 -key ca.key -out ca.crt 其实CA证书就是一个自签名证书
3.生成服务端私钥 openssl genrsa -des3 -out server.key 4096
4.需要签名的对象(服务端)生成证书签名请求 openssl req -new -key server.key -out server.csr
这里注意证书签名请求当中的Common Name必须区别与CA的证书里面的Common Name
5.用步骤2创建的CA证书给步骤4生成的签名请求进行签名
openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt
三.查看信息
openssl rsa -noout -text -in server.key 查看私钥信息
openssl req -noout -text -in server.csr 查看签名请求信息
openssl rsa -noout -text -in ca.key 查看ca的私钥信息
openssl x509 -noout -text -in ca.crt 查看证书信息
openssl crl -text -in xx.crl 查看一个证书吊销列表信息
openssl x509 -purpose -in cacert.pem 查看一个证书的额外信息
openssl rsa -in key.pem -pubout -out pubkey.pem 从一个私钥里面提取出公钥
openssl rsa -noout -text -pubin -in apache.pub 查看一个公钥的信息
openssl verify -CAfile 指定CA文件路径 apache.crt 验证一个证书是否是某一个CA签发
openssl s_client -connect 192.168.20.51:443 模拟一个ssl客户端访问ssl服务器 如果服务端要求客户端提供证书 则在加上 -cert 和-key参数 比如 openssl s_client -connect 192.168.20.51:443 -cert client.crt -key client.key
openssl pkcs12 -in path.p12 -out newfile.crt.pem -clcerts -nokeys 从p12文件里面提取证书openssl pkcs12 -in path.p12 -out newfile.key.pem -nocerts -nodes 从p12文件里面提取私钥
现代浏览器检查一个证书是否仍然有效 两种方法 OCSP (Online Certificate Status Protocol,在线证书状态协议) 和crl (Certificate Revoke List ,证书吊销列表)
这些信息在CA的证书里面应该得有,否则浏览器无法检查由该CA签过的证书是否还继续有效 (这句话属于猜测)
可以试一下导出给京东或者淘宝签名的CA证书 并用openssl x509 -noout -text -in ca.crt 查看一下,就能看到这两类信息京东的证书是由GeoTrustSSL进行签名的,导出GeoTrustSSL CA的证书 然后查看该CA的信息其中有一段信息是这样

X509v3 CRL Distribution Points:   

    Full Name:  
      URI:http://g1.symcb.com/crls/gtglobal.crl  

Authority Information Access:   
    OCSP - URI:http://g2.symcb.com  

这里说明了它的证书吊销列表地址和OSCP协议地址

easy-rsa这个包封装了这些操作,可以很方便的创建CA和证书 这个工具是为了配合openvpn使用的,不过也可以用来创建WEB证书

easy-rsa的特点是 使用方便不需要记忆大量的命令 而且配置文件里面有各种信息可以使你生成带有扩展信息的签名 比如 CA:TRUE等信息
1.安装easy-rsa
yum install easy-rsa
2.然后拷贝整个目录到工作目录 比如当前目录
cp -r /usr/share/easy-rsa/2.0 .
3.进入工作目录 cd 2.0
4.修改vars文件 修改国家省市代码 Common Name等,修改完以后导入一下
. vars
5: 清除一下 ./clean-all
6.创建CA证书 ./build-ca 运行完这一步 在keys目录下就生成了 ca.crt(CA证书),ca.key(CA私钥)
7.创建服务端证书 ./build-key-server 域名或者ip(有域名填域名没域名写ip) 这样就创建好服务端证书和私钥了
8.安装CA的证书到客户端 然后安装服务端的证书和私钥到APACHE

apache的ssl配置
把生成的服务端的证书和私钥拷贝到一个目录 保证私钥的安全性
然后安装apache的ssl模块
yum install mod_ssl
修改 vim /etc/httpd/conf.d/ssl.conf
修改 SSLCertificateFile 指令为证书文件的路径
修改 SSLCertificateKeyFile 修改为私钥文件的路径

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值