安装openssl
方法一
sudo apt-get install openssl
sudo apt-get install libssl-dev
方法二
在openssl官网下载压缩包
http://www.openssl.org/source/
终端输入sudo su
获取root权限
- 下载安装包并解压
tar zxvf openssl安装包
- 解压后终端进入文件
- ./configure
- make
- make install
生成证书
- 找到openssl.cnf配置文件,在Ubuntu18.04中是在 /usr/lib/ssl/openssl.cnf 处,然后将配置文件拷贝到工作文件下,这里我放在
/home/用户/桌面/crt
下。 - 利用openssl.cnf文件,为CA创建一个自签名证书,这意味着此CA完全可信,其证书将作为根证书, 生成ca.key 和ca.crt, ca.key文件包含CA的私钥,而ca.crt包含公钥证书
openssl req -new -x509 -keyout ca.key -out ca.crt -config openssl.cnf
- 请求CA为服务器签发公钥证书,创建一对公钥和私钥,在服务器端执行以下命令获得RSA密钥对 ,还需要我们自己提供一个密码来保护密钥,密钥将会存储在server,key文件里面。
openssl genrsa -des3 -out server.key 1024
- 生成证书签名请求(CSR)。CSR将发送给CA,CA将为密钥生成证书
openssl req -new -key server.key -out server.csr -config openssl.cnf
- 客户端。客户端可以按照以下相似的命令来生成RSA密钥对和CSR。client与server的organizationName要一直,common name不一样。
openssl genrsa -des3 -out client.key 1024
openssl req -new -key client.key -out client.csr -config openssl.cnf
- 生成证书。CSR文件需要有CA的签名才能形成证书。在实际应用中,CSR文件通常会发送给受信任的CA进行签名。
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
如果以下错误:
ca: ./demoCA/newcerts is not a directory
./demoCA/newcerts: No such file or directory
在工作目录下手动创建一个CA目录结构:
mkdir ./demoCA
mkdir ./demoCA/newcerts
创建个空文件:
vi demoCA/index.txt
创建文件:
vi demoCA/serial
向文件中写入01
-
如果OpenSSL拒绝生成证书,可能是因为请求中的名称与CA的名称不匹配。匹配规则在配置文件中指定(查看[策略匹配]部分)。可以更改请求的名称以符合策略,也可以更改策略。配置文件还包含另一个策略(称为任意策略),该策略的限制较少。可以通过更改以下行来选择该策略:
“policy = policy_match” change to “policy = policy_anything”.
-
修改名字
openssl rsa -in server.key -out server-private-key.pem
openssl x509 -in ca.crt -out certificate-authorities.pem
openssl x509 -in server.crt -out server-certificate-chain.pem
- 合成.pfx证书
将私钥文件(server.key)和服务器crt证书文件(server.crt )放在工作目录下
openssl pkcs12 -export -out server.pfx -inkey server.key -in server.crt
工作目录下面多了一个server.pfx 文件,即为生成的pfx证书文件。