openssl安装
首先安装perl工具,下载地址:
我下载了 这个版本(安装过程下一步下一步即可)
我安装在 C:\Perl64
然后下载openssl:
/source/index.htmlhttps://www.openssl.org/source/
下载压缩包
下载后解压在 perl 同一个目录下
安装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开发人员命令工具:(以管理员身份运行)
使用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命令为指定安装位置)
输出一大串后
3、创建Makefile文件
输入nmake命令 这次会输出很多东西,稍微等命令执行完。
4、然后输入 nmake test
可以打开openssl目录下的 install 文件看里面的说明安装过程来安装
这里有不同操作系统下的安装步骤
5、接下来 输入 nmake install
上诉4中执行结果最后 会有个 pass ,表示通过 即可install了 ,如果没通过需要查看test中输出的错误并解决。
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是明文方式
密码 我输了1234
文件默认生成在当前目录下
通过CA私钥生成CSR
csr:
对于服务器SSL证书, 在申请服务器数字证书时一定要先在服务器上生成 CSR 文件 ( Certificate Signing Request 证书签名请求文件)
openssl req -new -key ca-key.pem -out ca-csr.pem
通过CSR文件和私钥生成CA证书
openssl x509 -req -in ca-csr.pem -signkey ca-key.pem -out ca-cert.pem
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