使用OpenSSL创建TLS/SSL公钥、私钥

 2015年09月04日    1058     声明


TLS/SSL使用 OpenSSL 来提供安全传输层(Transport Layer Security)和 安全套接字层(Secure Sockets Layer)。OpenSSL使用公钥/私钥架构,对通讯流进行加密。使用了安全套接字层传输超文本的HTTPS协议,就是在HTTP的基础上加入了TLS/SSL协议。TLS/SSL依靠证书来验证服务器的身份,并为客户端(如:浏览器)和服务器之间的通信加密。


1. 创建私钥

每个客户端和服务器都要有一个私钥。如:创建一个2048位的密钥,使用类似下面的命令:

openssl genrsa -out itbilu-key.pem 2048

运行以上命令时会提示输入密码,密码用于加密密钥文件。输入密码后,以后每次读取此文件都需输入口令,为了方便可以使用空密码。


2. 创建证书

2.1 创建CSR文件

所有服务器和一些客户端需要证书。证书应该由认证中心(Certificate Authority)签名,或者自签名。获得证书第一步是创建一个证书签名请求 CSR(Certificate Signing Request)文件。创建证书CSR文件可以用以下方法创建的:

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

创建CSR文件时,会要求你输入一些信息,如:国家、城市、组织名等,输入完成后这里将生成一个证书签名请求 CSR文件itbilu.csr,你可以使用这个文件去数字证书颁发机构CA申请一个数字证书,CA会根据你的CSR文件进行签名,之后认证机构会给你一个新文件,即:数字证书。

2.2 创建自签名CSR文件

如果是自己在测试环境使用,可以使用CSR创建一个自签名的证书。创建命令类型如下:

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


3. 创建文件签名

创建.pfx.p12

openssl pkcs12 -export -in itbilu-cert.pem -inkey itbilu-key.pem -certfile itbilu-cert.pem -out itbilu.pfx

上面命令的参数中:

  • in: 证书文件
  • inkey: 私钥
  • certfile: 把所有CA认证相关文件连成一个文件。命令类似:cat ca1-cert.pem ca2-cert.pem > ca-cert.pem