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

用openssl自做CA自签发SSL证书

2015-09-14 16:36 423 查看
本人运行环境:openssl-1.0.1p,vs2010

首先运行CMD,跳转到..\openssl-1.0.1p\out32dll 目录下,比如我的:

c:>cd c:\openssl-1.0.1p\out32dll

c:\openssl-1.0.1p\out32dll

然后依次执行下面的步骤,生成对应的文件:

1.首先要生成服务器端的私钥(key文件):

openssl genrsa -des3 -out server.key 1024

运行时会提示输入密码,此密码用于加密key文件(参数des3便是指加密算法),以后每当需读取此文件,输入密码后还要确认一下,输两遍。

去除key文件口令的命令:

openssl rsa -in server.key -out server.key

2.openssl req -new -key server.key -out server.csr -config openssl.cnf

生成Certificate Signing Request(CSR),生成的csr文件交给CA签名后形成服务端自己的证书.

这个地方有可能会报如下错误:

WARNING: can't open config file: /usr/local/ssl/openssl.cnf

error on line -1 of openssl.cnf

9748:error:02001002:system library:fopen:No such file or directory:.\crypto\bio\

bss_file.c:168:fopen('openssl.cnf','rb')

9748:error:2006D080:BIO routines:BIO_new_file:no such file:.\crypto\bio\bss_file

.c:171:

9748:error:0E078072:configuration file routines:DEF_LOAD:no such file:.\crypto\c

onf\conf_def.c:195:

具体的解决方法参考文章:http://www.vcerror.com/?p=2027

运行成功,屏幕会提示一步一步输入个人信息:

Country Name (2 letter code)使用国际标准组织(ISO)国码格式,填写2个字母的国家代号。中国请填写CN。
State or Province Name (full name)省份,比如填写Shanghai
Locality Name (eg, city)城市,比如填写Shanghai
Organization Name (eg, company)组织单位,比如填写公司名称的拼音
Organizational Unit Name (eg, section)比如填写IT Dept
Common Name (eg, your websites domain name):行使 SSL 加密的网站地址。请注意这里并不是单指您的域名,而是直接使用 SSL 的网站名称 例如:pay.abc.com。 一个网站这里定义是:

abc.com 是一个网站;

www.abc.com 是另外一个网站;

pay.abc.com 又是另外一个网站。
Email Address邮件地址,可以不填
A challenge password可以不填
An optional company name可以不填

Common Name (e.g. server FQDN or YOUR name) []:localhost #服务器主机名,或用服务器IP

CN

HeNan

ZhengZhen

Bin

Development

VCerror

VCerror

[ENTER]

[ENTER]

3.对客户端也作同样的命令生成key及csr文件:

openssl genrsa -des3 -out client.key 1024

openssl req -new -key client.key -out client.csr -config openssl.cnf


4.CSR文件必须有CA的签名才可形成证书,可以自己做CA

openssl req -new -x509 -keyout ca.key -out ca.crt -config openssl.cnf

5.用生成的CA的证书为刚才生成的server.csr,client.csr文件签名:

Openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf

Openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config openssl.cnf


这里可能出错如下错误:

WARNING: can't open config file: /usr/local/ssl/openssl.cnf

Using configuration from openssl.cnf

Loading 'screen' into random state - done

Enter pass phrase for ca.key:

I am unable to access the ./demoCA/newcerts directory

./demoCA/newcerts: No such file or directory

具体的解决方法参考文章:http://www.vcerror.com/?p=2029

在给客户端文件签名的时候可能会出现下面的错误:

failed to update database

TXT_DB error number 2

具体的解决方法参考文章:http://www.vcerror.com/?p=2031

client使用的文件有:ca.crt,client.crt,client.key

server使用的文件有:ca.crt,server.crt,server.key


所需要的全部文件便生成了.



只有用同样的ca.crt签名的client.crt和server.crt才能相互通信
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: