Openssl Windows下编译过程
1、下载openssl源代码以及相应的vc工程
2、下载perl工具,如:ActivePerl-5.8.8.820-MSWin32-x86-274739.msi
3、安装ActivePerl
4、打开控制台程序,在openssl解压后的目录下执行Perl Configure VC-WIN32命令,注意,一定要在这个目录下执行该命令,否则找不到Configure文件,当然,你也可以指定完整的Configure文件路径。
5、openssl目录下运行ms\do_ms.bat
6、打开VC工程,batch build所有工程,输出的文件在out32dll里面
Openssl 建立CA过程
1、编译openssl
2、生成目录树
CA认证中心需要下列相关目录,请手动建立下列目录。
CARoot
|__certs
|__newcerts
|__private
|__crl
3、在private目录下生成随机数文件.rnd
可以用C:\CARoot>edit private\.rnd这种方式生成
4、生成文本数据库文件
CARoot根目录下手动创建一个空的文本数据库文件index.txt
5、生成证书序列号文件
在CARoot下创建证书序列号文件serial,使用文本编辑器打开,在文件中输入"01";(文件内容无银号),
或者使用命令$echo 01>serial (注意确认serial文件内容为01,并且无引号)。
C:\CARoot>echo 01 > serial
6、修改配置文件
将$OPENSSL_HOME下的apps\openssl.cnf拷贝到CARoot目录下,然后修改CA的配置文件
修改openssl.cnf文件
将下面部分修改:
[ CA_default ]
dir = ./demoCA # 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
修改后
RANDFILE = $ENV::HOME/private/.rnd
(修改默认的随机数文件的位置)
[ 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/private/ca.crt # The CA certificate
serial = $dir/serial # The current serial number
crl = $dir/crl.cer # The current CRL
private_key = $dir/private/ca.key# The private key
RANDFILE = $dir/private/.rnd # private random number file
7、产生CA私钥
genrsa -out private\ca.key -rand private\.rnd 2048
genrsa -out private\ca.key -rand private\.rnd -des3 2048 (生成des3加密的私钥文件)
生成2048位的私钥文件,为保障安全使用第二种,用des3加密。
8、生成CA证书
req -new -x509 -days 3650 -key private\ca.key -out private\ca.crt -config openssl.cnf
(查看证书文件:x509 -in cacert.pem -text -noout)
-------------分界线后面是CA操作-----------------
9、生成自签名证书请求,并签发证书
生成密钥
genrsa -out certs\cert.key -rand private\.rnd -des3 2048
生成证书请求
req -new -x509 -days 3650 -key certs\cert.key -out certs\cert.crt -config openssl.cnf
签发自签名证书
ca -ss_cert certs\cert.crt -config openssl.cnf -policy policy_anything -out certs\signedcert.crt
10、生成普通证书请求,并签发证书
生成密钥及证书请求
req -newkey rsa:1024 -keyout certs\mycert.key -out certs\mycert.pem -config openssl.cnf
签发证书
ca -in certs\mycert.pem -out newcerts\mycert.cer -policy policy_anything -config openssl.cnf
11、证书文件和密钥文件合并成pfx文件
pkcs12 -export -in certs\cert.crt -inkey certs\cert.key -out certs\mypkcs12.pfx
pkcs12 -export -in certs\ciecc-ipedo.cer -inkey certs\ciecc-ipedo.key -out certs\ipedo.pfx
12、通过请求生成cer和key文件
ca -in certs\certreq.txt -config openssl.cnf -policy policy_anything -out certs\newipedo.cer
13、启动OSCP服务器
openssl ocsp -index ./index.txt -CA ./cacert.pem -rsigner ./cacert.pem -rkey ./private/cakey.pem -port 8888
openssl ocsp -index ./index.txt -CA ./private/ca.crt -rsigner ./private/ca.crt -rkey ./private/ca.key -port 8888
14、OCSP查询
openssl ocsp -issuer demoCA/cacert.pem -cert ssl.crt/server.crt -host 0.0.0.0:8888
1、吊销已签发的证书可以使用ca中的 -revoke 命令:
openssl ca -revoke client.pem -keyfile ca.key -cert ca.crt
这里可能会有一个问题,因为默认的情况下index.txt文件应该放在demoCA文件夹下面,因此需要在这里建立一个demoCA文件夹并建立一个index.txt文件,就可以了
2、证书被吊销之后,还需要发布新的CRL文件:
openssl ca -gencrl -out ca.crl -keyfile ca.key -cert ca.crt
验证证书的状态:
verify -CAfile /usr/share/ssl/certs/ca-bundle.crt -purpose any -verbose amd.cer