用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
运行成功,屏幕会提示一步一步输入个人信息:
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才能相互通信
首先运行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 | 可以不填 |
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才能相互通信
相关文章推荐
- /etc/rc.d/rc与/etc/rc.d/init.d的关系介绍 linux中chkconfig 启动程序顺序
- 小议:如何用PowerShell彻底删除Site Collection?
- 最简单的视频网站(JavaEE+FFmpeg)
- Tomcat等应用启动脚本中的-D参数 [java的系统参数传递]
- getopt和getopt_long函数使用详解
- Linux程序设计(第2版)
- 《Linux 环境C程序设计》阅读笔记
- Linux的运行级别和chkconfig用法
- linux下的C编程学习记录
- Linux命令行和shell脚本编程宝典
- Emgu入门引导——加载并显示图像(OpenCV风格)
- openwrt 端口转发
- linux下网卡配vlan
- Linux脚本程序
- RabbitMQ三种Exchange模式(fanout,direct,topic)介绍
- 通过eclipse启动tomcat设置JAVA_OPTS失败的解决方案
- 我学shell编程2
- Linux sudo权限管理的脚本
- 我学shell程序的记录
- shell中的内建命令, 函数和外部命令