OpenSSL生成CA证书

基本概念

证书类别

  • 根证书:生成服务端证书,客户端证书的基础。自签名。
  • 服务端证书:由根证书签发。配置在服务器上。
  • 客户端证书:由根证书签发。配置在浏览器、移动APP等客户端上。

认证方式

  • 单向认证(Client鉴权Server)
    1、Client发送连接请求
    2、Server端将Server证书发送给Client
    3、Client使用CA根证书对Server证书进行鉴权
    请添加图片描述

  • 双向认证
    1、单向鉴权(Client鉴权Server)
    2、单向鉴权(Server鉴权Client)
    请添加图片描述

证书文件

  • .key:私有的密钥
  • .csr:证书签名请求(证书请求文件),含有公钥信息,certificate signing request的缩写
  • .crt:证书文件,certificate的缩写
  • .crl:证书吊销列表,Certificate Revocation List的缩写
  • .pem:用于导出,导入证书时候的证书的格式,有证书开头,结尾的格式
  • .p12 或者 .pfx:用于实现存储许多加密对象在一个单独的文件中。通常用它来打包一个私钥及有关的 X.509 证书,或者打包信任链的全部项目

证书生成

Windows上可使用Git自带的OpenSSL生成,打开Git Bash
Linux本身自带OpenSSL

根证书

1、 生成CA私钥
openssl genrsa -out ca.key 2048
2、生成证书请求文件
openssl req -new -key ca.key -out ca.csr
需要输入证书信息,参考如下:
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:GD
Locality Name (eg, city) []:GZ
Organization Name (eg, company) [Internet Widgits Pty Ltd]:HW
Organizational Unit Name (eg, section) []:DEV
Common Name (e.g. server FQDN or YOUR name) []:ROOT
Email Address []:xxx@sina.com
3、生成自签名CA根证书(有效期365天)
openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt

服务端证书

1、生成私钥,需要设定密码
openssl genrsa -des3 -out server.key ***
2、生成证书请求文件,需要输入上一步的密码
openssl req -new -key server.key -out server.csr
需要输入证书信息,最重要的一行是Common Name (e.g. server FQDN or YOUR name),您需要输入与服务器关联的域名,或者是您服务器的公共IP地址,参考如下:
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:GD
Locality Name (eg, city) []:GZ
Organization Name (eg, company) [Internet Widgits Pty Ltd]:HW
Organizational Unit Name (eg, section) []:DEV
Common Name (e.g. server FQDN or YOUR name) []:10.10.8.8
Email Address []:xxx@sina.com
3、生成服务端证书
openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key
这一步可能会提示错误:
请添加图片描述

解决办法,使用如下命令创建文件:
mkdir -p demoCA/newcerts
touch demoCA/index.txt
touch demoCA/serial
echo “01” > demoCA/serial

客户端证书

1、生成私钥,需要设定密码
openssl genrsa -des3 -out client.key 1024
2、生成证书请求文件,需要输入上一步的密码
openssl req -new -key client.key -out client.csr
注意输入的信息不要和服务端证书的一样,否则会报 ERROR:There is already a certificate for XXX 问题,比如我这里的Common Name不一样:
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:GD
Locality Name (eg, city) []:GZ
Organization Name (eg, company) [Internet Widgits Pty Ltd]:HW
Organizational Unit Name (eg, section) []:DEV
Common Name (e.g. server FQDN or YOUR name) []:MY
Email Address []:xxx@sina.com
3、生成客户端证书
openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key

证书导出

有时需要用到pem或pfx格式的证书,可以用以下方式生成

生成pem格式证书

cat client.crt client.key > client.pem
cat server.crt server.key > server.pem

生成pfx(p12)格式证书

openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12
openssl pkcs12 -export -in server.crt -inkey server.key -out server.p12

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值