openssl 生成CA及相关证书

实验环境:ubuntu18.04-desktop

获取openssl.cnf配置文件

# 这个返回的路径,不一定被使用了(经测试,ubuntu18下的openssl似乎未加载任何配置文件)(该路径下的./certs/为系统信任的ca证书存储路径,但不是放在里面就信任,详见c代码使用的libcurl)
openssl version -d

生成私钥文件(pem)

# 生成私钥
# genrsa:生成RSA秘钥
# 2048:密钥长度为2048比特
# -out:私钥文件路径名
openssl genrsa -out ca_private.pem 2048
# 生成私钥,且加密
# -aes256:使用aes256对私钥进行加密
openssl genrsa -aes256 -out ca_private.pem 2048

生成根证书签发申请文件(csr)

# req:证书签发请求命令
# -new:是 req 子命令的选项之一,表示创建一个新的 CSR。
# -key:指定私钥文件。
# -out:输出文件路径名
openssl req -new -key ca_private.pem -out ca_csr.pem

签发x509证书

未指定签发者(CA)证书(自签名)

# x509:证书格式为X.509
# -req:证书签发请求命令
# -days:证书有效期(天)
# -sha1:证书摘要签名算法
# -signkey:签名使用的私钥文件
# -in:证书签发申请文件(csr文件)
# -out:输出文件路径名
openssl x509 -req -days 365 -sha1 -signkey ca_private.pem -in ca_csr.pem -out ca_x509.cer
# -extfile:使用指定配置文件(ubuntu18下似乎默认未加载配置文件)
# -extensions:使用指定扩展块(扩展块内可以指定:“basicConstraints = critical,CA:true”)
openssl x509 -req -days 365 -sha1 -signkey ca_private.pem -in ca_csr.pem -out ca_x509.cer  -extfile /etc/ssl/openssl.cnf -extensions v3_ca

指定CA签发证书

# -CA:CA机构自己的证书(也可以是多级签发时的中间CA)
# -CAkey:CA机构的私钥
# -CAcreateserial:创建证书序列号文件。该序列号在经由CA颁发的证书中是全局唯一的,可以唯一标识一个证书;创建的序列号文件默认名称为“CA证书名.srl”
openssl x509 -req -days 365 -sha1  -CA ../ca/ca_x509.cer -CAkey ../ca/ca_private.pem -in server_csr.pem -CAcreateserial -out server_x509.cer

验证证书

openssl verify -CAfile ./ca/ca_x509.cer ./server/server_x509.cer

查看证书详细信息

openssl x509 -in ./server/server_x509.cer -noout -text

PKCS#12

生成pkcs#12

# 将私钥和x509证书导出为pkcs#12格式
openssl pkcs12 -export -inkey private_key.key -in myca_computer.com.cer -out computer.p12
# 将私钥和x509证书和证书链导出为pkcs#12格式
openssl pkcs12 -export -inkey private_key.key -in myca_computer.com.cer -chain -CAfile ca.pem -out server.p12

导出私钥

# 导出私钥,会先询问p12的加密密码,再要求设置导出的私钥加密密码
openssl pkcs12 -in x509_private.pfx -nocerts -out p12_expory_private.key
# 不设置私钥加密密码
openssl pkcs12 -in x509_private.pfx -nocerts -out p12_expory_private.key -nodes

导出X509

openssl pkcs12 -in x509_private.pfx -nokeys -clcerts -out x509.pem

导出证书链

openssl pkcs12 -in x509_private.pfx -nokeys -out cert_chain.pem

导出所有到一个文件

openssl pkcs12 -in x509_private.pfx -nodes -out all-in-one.pem

检查X509证书与私钥是否一致

哈希值相同则匹配:

# 查看证书哈希值
openssl x509 -noout -modulus -in my-CA/X509证书/magicbox_ca.com.cer | openssl md5
# 查看私钥哈希值
openssl rsa -noout -modulus -in my-CA/private_key.key | openssl md5

相关参考

如何制作自签名证书
OpenSSL与证书(三)PKCS#12证书

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值