通过OPENSSL建立证书以及CSR证书签名过程
2013-01-14 21:54
375 查看
CSR证书签名过程:
1。用户先拥有一个自己的密钥
openssl genrsa -des3 -out my.key 1024
建立密钥,以为1024位加密。
2。通过密钥建立自己的CSR文件,其中cnf文件为配置文件,openssl也自带cnf文件
openssl req -new -config my.cnf -key my.key -out my.csr
建立csr文件
cnf举例:
============之后为服务器要做的事=========
3。提交给服务器签名生成证书
openssl ca -batch -config ca.cnf -key 123456 -in my.csr -out my.crt
123456假设为根证书的密码
ca.cnf举例:
预先在sslPath目录下建立dbfile,serialfile,rootcrtfile以及rootkeyfile
dbfile 空
serialfile 自定义,随意设个数字,例如21
rootcrtfile 服务端证书
rootkeyfile 服务端密钥
===============如果csr与私钥在客户端,则此过程无法在服务器端完成========
4。生成PKCS12文件。
openssl pkcs12 -export -in my.crt -inkey my.key -password pass:$userpass -out my.pfx
$userpass为证书的密码保护,可有可无。
另,签名csr文件时似乎不能重复签名。在配置里需要做一点改动,否则会失败。例如serial必须保证unique等等
补充一些文件格式:
在Security编程中,有几种典型的密码交换信息文件格式:
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
查看csr文件细节:
openssl req -in my.csr -noout -text
1。用户先拥有一个自己的密钥
openssl genrsa -des3 -out my.key 1024
建立密钥,以为1024位加密。
2。通过密钥建立自己的CSR文件,其中cnf文件为配置文件,openssl也自带cnf文件
openssl req -new -config my.cnf -key my.key -out my.csr
建立csr文件
cnf举例:
[req] default_bits=1024 distinguished_name=req_distinguished_name prompt=no string_mask=nombstr req_extensions=v3_req [req_distinguished_name] CN=fin1983@hotmail.com [v3_req] nsCertType=server,client basicConstraints=critical,CA:false
============之后为服务器要做的事=========
3。提交给服务器签名生成证书
openssl ca -batch -config ca.cnf -key 123456 -in my.csr -out my.crt
123456假设为根证书的密码
ca.cnf举例:
[ca] default_ca=default_CA [default_CA] dir=/tmp/sslPath certs=/tmp/sslPath new_certs_dir=/tmp/sslPath database=/tmp/sslPath/dbfile serial=/tmp/sslPath/serialfile certificate=/tmp/sslPath/rootcrtfile private_key=/tmp/sslPath/rootkeyfile default_crl_days=30 default_startdate=070307000000Z default_enddate=371231000000Z default_md=md5 preserve=yes x509_extensions=user_cert policy=policy_anything crl_extensions=crl_ext [policy_anything] commonName=supplied [user_cert] subjectAltName=email:copy basicConstraints=critical,CA:false
预先在sslPath目录下建立dbfile,serialfile,rootcrtfile以及rootkeyfile
dbfile 空
serialfile 自定义,随意设个数字,例如21
rootcrtfile 服务端证书
rootkeyfile 服务端密钥
===============如果csr与私钥在客户端,则此过程无法在服务器端完成========
4。生成PKCS12文件。
openssl pkcs12 -export -in my.crt -inkey my.key -password pass:$userpass -out my.pfx
$userpass为证书的密码保护,可有可无。
另,签名csr文件时似乎不能重复签名。在配置里需要做一点改动,否则会失败。例如serial必须保证unique等等
补充一些文件格式:
在Security编程中,有几种典型的密码交换信息文件格式:
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
查看csr文件细节:
openssl req -in my.csr -noout -text
相关文章推荐
- PHP通过OpenSSL生成证书、密钥并且加密解密数据,以及公钥,私钥和数字签名的理解
- windows下使用openssl建立自签名证书的过程
- 使用OpenSSL建立根CA及自签名证书制作过程
- 使用OpenSSL建立根CA及自签名证书制作过程 [转载]
- 【Android】如何创建自己的证书文件,如何为apk以及zip文件签名 openssl
- 精心为您准备的Openssl实现私有CA的详细过程,以及如何配置安装证书 推荐
- Ssldump 编译过程、解密过程以及通过openssl在iis上配置https服务器
- 基于X.509证书和SSL协议的身份认证过程实现(OpenSSL可以自己产生证书,有TCP通过SSL进行实际安全通讯的实际编程代码)good
- Mac 下Nodejs 使用 https 的过程以及使用openssl生成私钥、公钥和证书
- 原来win+apache实现ssl的证书认证如此简单 +使用openssl来生成CA证书、申请证书、颁发证书以及撤销证书的过程
- 使用openssl工具来验证服务器证书以及握手过程
- 使用openssl来生成CA证书、申请证书、颁发证书以及撤销证书的过程
- 通过签名查看项目SHA1、MD5、SHA256以及相关证书信息
- 的工具生成数字证书,和用程序给数字证书签名、以及用签名后的数学证书签名applet突破applet的访问权限的过程
- 通过openssl搭建CA中心并验证签名证书有效
- CentOS通过OpenSSL生成自签名证书
- 数字证书签发,授权等相关以及https建立通信过程
- 使用openssl来生成CA证书、证书申请、颁发证书以及撤销证书的过程
- 使用证书对数据进行签名、验签、加密、解密以及openssl的常用方法
- U3D 安卓通过openssl创建的电子证书进行HTTPS 加密访问