OpenSSL生成

时间:2024-04-09 13:23:06

一、编译OpenSSL

在编译OpenSSL前,需要正确安装Perl,因为在编译OpenSSL时需要使用到该程序

下载最新版本的Perl:http://downloads.activestate.com/ActivePerl/Windows/5.8/ActivePerl-5.8.8.822-MSWin32-x86-280952.zip。然后安装之。

下载最新版本的OpenSSL:http://www.openssl.org/source/openssl-0.9.8g.tar.gz

然后将源码释放的c:\openssl-0.9.8g目录中。

首先将VS2008的nmake的环境变量加入的cmd中:

在cmd中执行 *:\Program Files\MicrosoftVisual Studio 9.0\VC\bin\vcvars32.bat


进入openssl源码目录。
cd c:\openssl-0.9.8.g

运行configure:
perl Configure VC-WIN32 --prefix=c:/openssl

创建Makefile文件:
ms\do_ms

编译动态库:
nmake -f ms\ntdll.mak
编译静态库:
nmake -f ms\nt.mak

测试动态库:
nmake -f ms\ntdll.mak test
测试静态库:
nmake -f ms\nt.mak test

安装动态库:
nmake -f ms\ntdll.mak install
安装静态库:
nmake -f ms\nt.mak install

清除上次动态库的编译,以便重新编译:
nmake -f ms\ntdll.mak clean
清除上次静态库的编译,以便重新编译:
nmake -f ms\nt.mak clean

64位编译:

运行configure:
perl Configure VC-WIN64A 或 perl Configure debug-VC-WIN64A

创建Makefile文件:注意路径中的斜线。
ms\do_win64a

编译动态库:
nmake -f ms\ntdll.mak

编译静态库:
nmake -f ms\nt.mak

请使用vs2008自带的64位命令行编译环境,即使用“vs2008安装目录/VC/bin/amd64/”下的nmake.exe。如果在编译过程中报有关cl或ml的错误,则在命令行下运行与nmake.exe同级目录的vcvarsamd64.bat设置适当的环境变量以启用64位命令行编译。

 

SSL协议一般要用到证书,可以用openssl工具生成:

1、生成RSA**的方法 
openssl genrsa -des3 -out privkey.pem 2048 

这个命令会生成一个2048位的**,同时有一个des3方法加密的密码,如果你不想要每次都输入密码,可以改成: 
openssl genrsa -out privkey.pem 2048 

建议用2048位**,少于此可能会不安全或很快将不安全。 

2
、生成一个证书请求 
openssl req -new -key privkey.pem -out cert.csr 

这个命令将会生成一个证书请求,当然,用到了前面生成的**privkey.pem文件 
这里将生成一个新的文件cert.csr,即一个证书请求文件,你可以拿着这个文件去数字证书颁发机构(即CA)申请一个数字证书。CA会给你一个新的文件cacert.pem,那才是你的数字证书。 

如果是自己做测试,那么证书的申请机构和颁发机构都是自己。就可以用下面这个命令来生成证书: 
openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095 

这个命令将用上面生成的**privkey.pem生成一个数字证书cacert.pem 

 OpenSSL生成

 

 

 

 

//生成私钥

openssl genrsa -out private.pem 2048

//生成公钥

openssl rsa -in private.pem -pubout >public.pem

 

 

x509证书一般会用到三类文,key,csr,crt。

Key 是私用**openssl格,通常是rsa算法。

Csr 是证书请求文件,用于申请证书。在制作csr文件的时,必须使用自己的私钥来签署申,还可以设定一个**。

crt是CA认证后的证书文,(windows下面的,其实是crt),签署人用自己的key给你签署的凭证。 

 

1.key的生成 

openssl genrsa -des3 -out server.key 2048 

这样是生成rsa私钥,des3算法,openssl格式,2048位强度。server.key是**文件名。为了生成这样的**,需要一个至少四位的密码。可以通过以下方法生成没有密码的key:

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

 

server.key就是没有密码的版本了。 

 

2. 生成CA的crt

openssl req -new -x509 -key server.key -out ca.crt -days3650 

生成的ca.crt文件是用来签署下面的server.csr文件。 

 

3. csr的生成方法

openssl req -new -key server.key -out server.csr 

需要依次输入国家,地区,组织,email。最重要的是有一个common name,可以写你的名字或者域名。如果为了https申请,这个必须和域名吻合,否则会引发浏览器警报。生成的csr文件交给CA签名后形成服务端自己的证书。 

 

4. crt生成方法

CSR文件必须有CA的签名才可形成证书,可将此文件发送到verisign等地方由它验证,要交一大笔钱,何不自己做CA呢。

openssl x509 -req -days 3650 -in server.csr -CA ca.crt-CAkey server.key -CAcreateserial -out server.crt

输入key的**后,完成证书生成。-CA选项指明用于被签名的csr证书,-CAkey选项指明用于签名的**,-CAserial指明***文件,而-CAcreateserial指明文件不存在时自动生成。

最后生成了私用**:server.key和自己认证的SSL证书:server.crt

证书合并:

cat server.key server.crt > server.pem

 

 

简要介绍了使用openssl来生成CA证书、申请证书、颁发证书以及撤销证书的过程。

 

1.   首先建立CA**
openssl genrsa -des3 -out ca.key 1024 (创建**)
chmod 400 ca.key (修改权限为仅root能访问)
openssl rsa -noout -text -in ca.key (查看创建的证书)

2.   利用CA**自签署CA证书
openssl req -config openssl.cnf -new -x509 -days 3650 -key ca.key -out ca.crt

 

chmod 400 ca.crt (修改权限为仅root能访问)
openssl x509 -noout -text -in ca.crt (查看创建的证书)

3.   创建服务器证书签署申请
openssl genrsa -des3 -out client.key 1024
chmod 400 client.key (修改权限为仅root能访问)
openssl rsa -noout -text -in client.key (查看创建的证书)

4.   利用证书签署申请生成请求
openssl req -config openssl_client.cnf -new -key client.key -out client.csr
openssl req -noout -text -in client.csr (查看创建的请求)

5.   进行证书签署
这时候需要先设置一下openssl的配置文件。
modify openssl.cnf并根据这个配置文件创建相应的目录和文件。
在创建了serial文件之后,还需要添加当前的八进制的serial number,如:01
然后执行:
openssl ca -config openssl_client.cnf -keyfile ca.key -cert ca.crt -inclient.csr -out client.pem -days 1095
这个certificate是BASE64形式的,要转成PKCS12才能装到IE,/NETSCAPE上.所以还要:
openssl pkcs12 -export -in client.pem -inkey client.key -out clinet.pfx

6.   证书撤销
openssl ca -keyfile ca.key -cert ca.crt -revoke client.pem
这时数据库被更新证书被标记上撤销的标志,需要生成新的证书撤销列表:
openssl ca -gencrl -keyfile ca.key -cert ca.crt -out crl/test.crl
查看证书撤销列表:
openssl crl -noout -text -in crl/test.crl
证书撤销列表文件要在WEB站点上可以使用,必须将crldays或crlhours和crlexts加到证书中:
openssl ca -gencrl -config /etc/openssl.cnf -crldays 7 -crlexts crl_ext -outcrl/sopac-ca.crl

 OpenSSL生成