通过OPENSSL建立证书以及CSR证书签名过程

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
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值