您的位置:首页 > 运维架构

通过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举例:

[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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐