openssl安装

首先安装perl工具,下载地址:

Download & Install Perl - ActiveStateDownload Perl 5.32 and 5.28 from ActiveState & get precompiled Perl distribution. ActiveState Perl is free to download.https://www.activestate.com/activeperl/downloads

我下载了 这个版本(安装过程下一步下一步即可)

OpenSSL window生成pem证书 openssl生成密钥及证书_windows

我安装在 C:\Perl64

然后下载openssl:

/source/index.htmlhttps://www.openssl.org/source/

下载压缩包

OpenSSL window生成pem证书 openssl生成密钥及证书_microsoft_02

下载后解压在 perl 同一个目录下

OpenSSL window生成pem证书 openssl生成密钥及证书_密钥长度_03

安装Visual Studio2013

下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux

三个都安装完成后,检查环境变量

C:\Program Files (x86)\Microsoft Visual Studio12.0\VC\bin;

C:\Perl64\bin;

c:\windows\system32

接下来开始关键部分

1、打开VC开发人员命令工具:(以管理员身份运行)

OpenSSL window生成pem证书 openssl生成密钥及证书_服务器_04

OpenSSL window生成pem证书 openssl生成密钥及证书_密钥长度_05

 使用cd命令将目录指向D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin(PS:自己的VC安装路径), 命令行键入vcvars32,运行vcvars32.bat..完成后进入OpenSSL源码的目录(C:\openssl)

2、编译配置 (cd到OpenSSL目录下)

在命令行中键入"perl configure VC-WIN32 no-asm --prefix=c:\openssl"(PS:--prefix=c:\openssl命令为指定安装位置)

OpenSSL window生成pem证书 openssl生成密钥及证书_服务器_06

输出一大串后

3、创建Makefile文件

输入nmake命令 这次会输出很多东西,稍微等命令执行完。

OpenSSL window生成pem证书 openssl生成密钥及证书_perl_07

4、然后输入 nmake test

可以打开openssl目录下的 install 文件看里面的说明安装过程来安装

这里有不同操作系统下的安装步骤

OpenSSL window生成pem证书 openssl生成密钥及证书_服务器_08

5、接下来 输入 nmake install

上诉4中执行结果最后 会有个 pass ,表示通过 即可install了 ,如果没通过需要查看test中输出的错误并解决。

OpenSSL window生成pem证书 openssl生成密钥及证书_microsoft_09

openssl生成私钥

介绍

openssl genrsa 用于生成rsa私钥文件,生成是可以指定私钥长度和密码保护。
语法
openssl genrsa[-out filename] [-passout arg] [-des] [-des3] [-idea] [-f4] [-3] [-rand file(s)] [-engine id] [numbits]
选项说明:
-out filename:私有密钥输出文件名,缺省为标准输出。
-passout arg:输出文件口令保护存放方式。
-f4:指定E为0x1001;
-3:指定E为3;
-rand file(s):随机种子。
-engine id:硬件引擎。
numbits:生成密钥的位数。必须是本指令的最后一个参数。如果没有指明,则产生512bit长的参数。
-des|-des3|-idea|-aes128|-aes192|-aes256:指定私钥口令保护算法,如果不指定,私钥将被明文存放。
一般使用
[cpp] view plain copy
1. E:\OpenSSL\foo>openssl genrsa -out rsa_pri.pme  
2. Loading 'screen' into random state - done  
3. Generating RSA private key, 512 bit long modulus  
4. .++++++++++++  
5. ...............++++++++++++  
6. e is 65537 (0x10001)  
从输出可以看出,密钥长度是512bit。我们也可以指定密钥长度,密钥长度越长越安全,但使用密钥进行加解密时所耗费的时间也会变长。非对称密钥提高安全性的同时也带来了算法所耗费的大量时间,非对称密钥不对大块数据进行加密,应用领域是数字签名,密钥分发等小数据加密。
numbits   密钥长度(单位bit)
[cpp] view plain copy
1. openssl genrsa -out rsa_pri.pem 1024  
-passout arg
对生成的rsa私钥文件施加密码保护,例如:使用idea算法对私钥文件进行密码保护。
[cpp] view plain copy
1. openssl genrsa  -idea -passout pass:123 -out rsa_pri.pem  
-F4 / -3    指数(我不知道,算法里面的东西吧),默认是65537,例如上例中输出的最后一句话,e is 65537 (0x10001)
[cpp] view plain copy
1. E:\OpenSSL\foo>openssl genrsa  -3  -out rsa_pri.pem 2000  
2. Loading 'screen' into random state - done  
3. Generating RSA private key, 2000 bit long modulus  
4. ......................+++  
5. .............+++  
6. e is 3 (0x3)  
使用openssl生成证书
创建私钥
openssl genrsa -out ca-key.pem -des 1024

文件名为 ca-key.pem 长度为1024,以des加密方式存放 ,不加-des是明文方式

OpenSSL window生成pem证书 openssl生成密钥及证书_microsoft_10

 

密码 我输了1234

文件默认生成在当前目录下

OpenSSL window生成pem证书 openssl生成密钥及证书_perl_11

 

通过CA私钥生成CSR

csr:

对于服务器SSL证书, 在申请服务器数字证书时一定要先在服务器上生成 CSR 文件 ( Certificate Signing Request 证书签名请求文件)

openssl req -new -key ca-key.pem -out ca-csr.pem

OpenSSL window生成pem证书 openssl生成密钥及证书_windows_12

 

通过CSR文件和私钥生成CA证书

openssl x509 -req -in ca-csr.pem -signkey ca-key.pem -out ca-cert.pem

OpenSSL window生成pem证书 openssl生成密钥及证书_密钥长度_13

 

ok 这样就创建好了CA证书

下面这个是一个例子,创建服务器端证书,在csr生成是加入了配置文件,用CA证书来创建服务器的证书,

最后加入了一个打包证书的操作。

创建服务器端证书

为服务器生成私钥

openssl genrsa -out server-key.pem -des 1024
密码1234
利用服务器私钥文件服务器生成CSR
openssl req -new -key server-key.pem -config openssl.cnf -out server-csr.pem
新建一个配置文件 openssl.cnf 输入以下配置信息:
[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
[req_distinguished_name]
countryName = Country Name (2 letter code)
countryName_default = CN
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = BeiJing
localityName = Locality Name (eg, city)
localityName_default = YaYunCun
organizationalUnitName = Organizational Unit Name (eg, section)
organizationalUnitName_default = Domain Control Validated
commonName = Internet Widgits Ltd
commonName_max = 64
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
#注意这个IP.1的设置,IP地址需要和你的服务器的监听地址一样
IP.1 = 127.0.0.1
---------------------------------配置文件结束----------------------------
通过服务器私钥文件和CSR文件生成服务器证书
openssl x509 -req -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -in server-csr.pem -out server-cert.pem -extensions v3_req -extfile openssl.cnf
打包证书
openssl pkcs12 -export -in server-cert.pem -inkey server-key.pem -certfile ca-cert.pem -out server.pfx
export密码1234