x509证书一般会用到三类文,key,csr,crt。
Key 是私用密钥openssl格,通常是rsa算法。
Csr 是证书请求文件,用于申请证书。在制作csr文件的时,必须使用自己的私钥来签署申,还可以设定一个密钥。
Crt 是CA认证后的证书文,(windows下面的,其实是crt),签署人用自己的key给你签署的凭证。
一、准备工作
ubuntu下新建文件夹/etc/certstore/,接下来的所有操作都在改文件夹下进行。
首先在/usr/lib/ssl/文件夹下拷贝文件openssl.cnf文件到/etc/certstore/文件夹下,并将该配置文件的路径修改为当前路径,如下
[ CA_default ]
dir = ./ # Where everything is kept
certs = $dir/certs # Where the issued certs are kept #内部文件需生成(用户证书)
crl_dir = $dir/crl # Where the issued crl are kept
database = $dir/index.txt # database index file.
new_certs_dir = $dir/newcerts # default place for new certs. #内部文件在生成用户证书时自动生成(用户公钥)
certificate = $dir/cacert.pem # The CA certificate #需生成(根证书)
serial = $dir/serial # The current serial number
crl = $dir/crl.pem # The current CRL #
private_key = $dir/private/cakey.pem # The private key #需生成(根私钥)
RANDFILE = $dir/private/.rand # private random number file然后添加或创建一些文件或文件夹,如下
#mkdir -p ./{private,certs,newcerts,crl}
#touch index.txt
#echo 01 > serial二、生成CA证书的步骤:
1.生成CA证书的RSA密钥对
/etc/certstore# openssl genrsa -des3 -out ./private/cakey.pem 2048这样是生成rsa私钥,des3算法,openssl格式,2048位强度。server.key是密钥文件名。为了生成这样的密钥,需要一个至少四位的密码。可以通过以下方法生成没有密码的key:
# openssl rsa -in server.key -out server.key*2.生成CA证书请求
/etc/certstore# openssl req -new -days 365 -key ./private/cakey.pem -out ./private/careq.pem (cert.csr)(CSR文件必须有CA的签名才可形成证书.可将此文件发送到verisign等地方由它验证,要交一大笔钱,何不自己做CA呢.)
*3.对CA证书请求进行签名
#openssl ca -selfsign -in ./private/careq.pem -out cacert.pem4.(合并步骤2&3)一步完成CA证书请求及签名
/etc/certstore# openssl req -new -x509 -days 3650 -key ./private/cakey.pem -out cacert.pem -config openssl.cnf5.查看pem证书:
# openssl x509 -in cacert.pem -text -noout三、生成CA自签名证书/etc/certstore# openssl genrsa -des3 -out ./certs/cert.key -rand ./private/.rnd 2048/etc/certstore# openssl req -new -x509 -days 3650 -key ./certs/cert.key -out ./certs/cert.crt -config openssl.cnf/etc/certstore# openssl ca -ss_cert ./certs/cert.crt -policy policy_anything -out ./certs/signedcert.crt -config openssl.cnf用第一步生成的CA证书(cacert.pem)加密第二步生成的证书(./certs/cert.crt)
第一步生成的证书是供大家用的(大家用同一个),第二步生成的每个人单独生成一个。(1)查看key私钥文件:
# openssl rsa -in ./certs/cert.key -text -noout(2)将pem证书装换成der证书的方法:
# openssl x509 -in tom.crt -out cert.der -outform DER(3)如果创建证书失败,失败后重做的方法:
serial文件中删除证书序列号; index.txt数据库文件中删除该证书的条目; 重新创建证书就可以了。四、此时,文件结构如下:
.
|-- certs
| |-- cert.crt
| |-- cert.key
| `-- signedcert.crt
|-- crl
|-- newcerts
| `-- 01.pem
|-- prvate
| `-- cakey.pem
|-- cacert.pem
|-- index.txt
|-- index.txt.attr
|-- index.txt.old
|-- openssl.cnf
|-- serial
`-- serial.old了解了这些基础步骤之后,就可以通过脚本,甚至 makefile 的方式来将这些工作自动化。
CA.pl 和 CA.sh 便是对 OpenSSL 的 CA 相关功能的简单封装,在 Debian 系统中,安装了 OpenSSL 后,可以在 /usr/lib/ssl/misc/ 目录下找到这两个文件。
而 makefile 的解决方案则可以参考这里 。
















