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

用openssl签发证书

2007-09-04 14:57 197 查看
 

用openssl签发证书

参考:http://www.imacat.idv.tw/tech/sslcerts.html.zh-cn

配置环境

在/home目录下建立ssl目录:

cd /home
mkdir ssl
cd ssl


建立几个要用到的目录:

mkdir private certs newscerts crl

其中private主要用来存放私钥的.

certs用于存入签出的书

将配置文件复制到当前目录

cp /usr/share/ssl/openssl.cnf  /home/ssl/

设定环境变量
export OPENSSL_CONF="/home/ssl/openssl.cnf"

更改openssl.cnf中的配置:
dir = /home/ssl
产生一个随机数文件:
openssl rand -out /home/ssl/private/.rand

建立根证书:

1.制作私钥:

openssl genrsa -des3 -out private/ca.key.pem 2048
这来细细讲一下这条命令:
openssl 指进入openssl环境,genrsa是openssl中的一个小应用程序,用来产生rsa私钥。-des3是指将产生的私钥用triple DES进行加密。这是个可选项,还有-des -idea都是对称加密算法,随你自己选择. -out就是指定输出了,如果不加这个选项的话,就会将输出发到标准输出中.2048指私钥的长度,单们是bit,默认是512
输入这条命令后,产生私钥,提示你设定密码.
2.填写证书申请表:
openssl req -new -key private/ca.key.pem -out ca.req.pem
提示你私钥的密码,一步一步输入就行了。
因为证书中要有公钥,和个人信息,所以我们指定私钥,程序推导出公钥,供申请表用。
3.自己签定根签书:
opessl x509 -req -days 1000 -shda1 -extensions v3_ca -signkey private/ca.key.pem -in ca.req.pem -out certs/ca.crt.pem
其中的days是指证书的有效天数,shda1是消息摘要函数算法,默入为md5,-signkey指定用于签证的私钥.
运行过程中,要输入私钥的密码和设定书密码。
这样,根证书就签好了。现在可以删除证书申请表:
rm -rf ra.req.cem
4.建立hash索引:
openssl x509 -hash -noout -in ca.crt.pem
这一步这也不知道是什么意思!

制做服务器端的用ca签名的证书:

1、产生一个rsa私钥,在此,我们不用密码保护。
openssl genrsa -out private/serverkey.pem 1024
2、填写证书申请表:
openssl req -new -key private/serverkey.pem -out server.req.pem
3、用先前产生的认证中心的私钥对申请表进行签名:
openssl x509 -req -days 100 -sha1 -extensions v3_req -CA certs/ca.crt.pem -CAkey private/ca.key.pem -CAserial ca.srl -CAcreateserial -in server.req.pem -out certs/server.crt.pem
基中的CA选项指定的是认证中心的证书,也就是上面我们自签名产生的证书,CAkey就是认证中心的私钥,CAserial也许是指签发产生的序列号吧!!
好了,这个证书就签好了。删掉申请表:
rm -rf server.req.pem

如果我们想将证书转成p12格式的:
openssl pkcs12 -export -clcerts -in certs/server.crt.pem -inkey private/serverkey.pem -out certs/server.p12

 

Tags:

linux

openssl

x509
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息