# [转]openssl的证书格式转换

- URL: https://wuming.si/blog/1228/
- Author: Aaron
- Published: 2016-12-01
- Language: zh-Hans
- Categories: Technology, Uncategorized
- Originally published at: https://blog.wo.ai/archives/1228

## 证书转换

PKCS 全称是 Public-Key Cryptography Standards ，是由 RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准，PKCS 目前共发布过 15 个标准。 常用的有：  
PKCS#7 Cryptographic Message Syntax Standard  
PKCS#10 Certification Request Standard  
PKCS#12 Personal Information Exchange Syntax Standard  
X.509是常见通用的证书格式。所有的证书都符合为Public Key Infrastructure (PKI) 制定的 ITU-T X509 国际标准。  
PKCS#7 常用的后缀是： .P7B .P7C .SPC  
PKCS#12 常用的后缀有： .P12 .PFX  
X.509 DER 编码(ASCII)的后缀是： .DER .CER .CRT  
X.509 PAM 编码(Base64)的后缀是： .PEM .CER .CRT  
.cer/.crt是用于存放证书，它是2进制形式存放的，不含私钥。  
.pem跟crt/cer的区别是它以Ascii来表示。  
pfx/p12用于存放个人证书/私钥，他通常包含保护密码，2进制方式  
p10是证书请求  
p7r是CA对证书请求的回复，只用于导入  
p7b以树状展示证书链(certificate chain)，同时也支持单个证书，不含私钥。 

### 1\. CA证书

用openssl创建CA证书的RSA密钥(PEM格式)：
    
    
    openssl genrsa -des3 -out ca.key 1024

### 2\. 创建CA证书有效期为一年

用openssl创建CA证书(PEM格式,假如有效期为一年)：
    
    
    openssl req -new -x509 -days 365 -key ca.key -out ca.crt -config openssl.cnf

openssl是可以生成DER格式的CA证书的，最好用IE将PEM格式的CA证书转换成DER格式的CA证书。

### 3\. x509转换为pfx
    
    
    openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt

### 4\. PEM格式的ca.key转换为Microsoft可以识别的pvk格式
    
    
    pvk -in ca.key -out ca.pvk -nocrypt -topvk

### 5\. PKCS#12 到 PEM 的转换
    
    
    openssl pkcs12 -nocerts -nodes -in cert.p12 -out private.pem  验证   openssl pkcs12 -clcerts -nokeys -in cert.p12 -out cert.pem

### 6\. 从 PFX 格式文件中提取私钥格式文件 (.key)
    
    
    openssl pkcs12 -in mycert.pfx -nocerts -nodes -out mycert.key

### 7\. 转换 pem 到到 spc
    
    
       openssl crl2pkcs7 -nocrl -certfile venus.pem  -outform DER -out venus.spc

用 -outform -inform 指定 DER 还是 PAM 格式。例如：
    
    
    openssl x509 -in Cert.pem -inform PEM -out cert.der -outform DER

### 8\. PEM 到 PKCS#12 的转换
    
    
    openssl pkcs12 -export -in Cert.pem -out Cert.p12 -inkey key.pem

IIS 证书
    
    
    cd c:\openssl 　　　　　　　　　  set OPENSSL_CONF=openssl.cnf 　　　　　　　　　  openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt

server.key和server.crt文件是Apache的证书文件，生成的server.pfx用于导入IIS

### 9\. How to Convert PFX Certificate to PEM Format for SOAP
    
    
    $ openssl pkcs12 -in test.pfx -out client.pem  Enter Import Password:  MAC verified OK  Enter PEM pass phrase:  Verifying - Enter PEM pass phrase:
