使用openssl,在windows sever上创建ca,以及签发证书

创建2个目录,一个ca,一个certs

  1. ca: 存放ca相关数据
  2. certs: 存放申请的公私钥和配置

1 创建CA

# 创建ca私钥,需要指定密码
openssl genrsa -aes256 -out ca.key 4096
# 生成证书
openssl req -x509 -new -nodes -key ca.key -sha256 -days 7300 -out ca.crt
# 查看证书
openssl x509 -in ca.crt -noout -text

2.创建域名附加配置文件,新建文件cert.ext 输入如下内容保存

没有这个浏览器不认识,主要是dns这行的附加数据

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = ai.etronprobe.com
DNS.2 = etronprobe.com

3 申请和签发证书

cd ..
mkdir certs
cd certs

# 生成私钥
openssl genrsa -out ai.key 2048
# 创建申请
openssl req -new -key ai.key -out ai.csr
# 使用CA签署ssl证书
# ssl证书有效期10年
openssl x509 -req -in ai.csr -out ai.crt -days 3650 -CAcreateserial -CA ../ca/ca.crt -CAkey ../ca/ca.key -CAserial serial -extfile cert.ext

4 可选命令

#查看证书
openssl x509 -in ai.crt -noout -text

#验证证书是否通过
openssl verify -CAfile ../ca/ca.crt ai.crt

#合并公私钥(如果需要,比如iis)
openssl pkcs12 -export -in ai.crt -inkey ai.key -out ai.pfx

# 将crt转为p7b
openssl crl2pkcs7 -nocrl -out ca.p7b -certfile ca.crt

5. 注,文件类型:

  1. crt/cer 是证书/公钥
  2. csr 申请
  3. pem/key 私钥
  4. pfx/p12 公私钥合体
  5. p7b 证书链,理解为crt的组合

6 问题排查

  1. firefox 报错,证书导不进去,或者不认根证书. 请使用
#查看证书
openssl x509 -in ca.crt -noout -text

命令查看是否包含这一句,如果不含,则创建的ca证书未被声明为: 基本约束 证书颁发机构 是
则firefox不认ca根证书,所以无效,但是chrome,edge不管这个,都认

 X509v3 Basic Constraints: critical
                CA:TRUE

应该是由于

# 类似于此语句中
openssl x509 -req -days 3650 -sha256 -extensions v3_ca -signkey private/cakey.pem -in private/ca.csr -out certs/ca.cer
# 这段没生效导致的
-extensions v3_ca

解决方案:用本文的命令来签发就好了

  1. 使用AD CS ,即windows自带的证书套件
    浏览器不认,报错:NET::ERR_CERT_COMMON_NAME_INVALID
    是因为证书没有嵌入域名信息,即证书中缺少这个信息
DNS.1 = ai.etronprobe.com
DNS.2 = etronprobe.com

签发时需要加入附加信息

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值