我正在尝试实现相互证书身份验证,我必须同时成为CA和服务器,生成证书并为用户签名。我正在关注这个教程与网络上复杂的文章相比,这是一个非常简单的文章,步骤如下:
创建您自己的证书颁发机构的过程非常简单:
- 创建私钥
- 自签名
- 在您的各个工作站上安装根 CA // ????
完成此操作后,您通过 HTTPS 管理的每台设备只需通过以下步骤创建自己的证书:
- 为设备创建 CSR
- 使用根 CA 密钥签署 CSR /// 此步骤
创建根密钥:
openssl genrsa -out rootCA.key 2048
自签名此证书。
openssl req -x509 -new -nodes -key rootCA.key -days 1024 -out rootCA.pem
创建证书(每个设备完成一次):
openssl genrsa -out device.key 2048
openssl req -new -key device.key -out device.csr
openssl x509 -req -in device.csr -CA root.pem -CAkey root.key -CAcreateserial -out device.crt -days 500
最后一个命令给了我这个错误:
Signature ok
subject=/C=XX/L=Default City/O=Default Company Ltd/CN=192.168.1.108
Error opening CA Certificate root.pem
3078969068:error:02001002:system library:fopen:No such file or directory:bss_file.c:355:fopen('root.pem','r')
3078969068:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:357:
unable to load certificate
root.pem 存在于同一文件夹中,为什么看不到它?
另外,前两个命令给了我两个文件,root.key
并且root.pem
:没有crt
文件可以提供给浏览器。
怎么了?
答案1
验证您的证书的名称。它不一致(root.pem
在一个命令中,rootCA.pem
在另一个命令中)。
root.pem
您可以按照本文所述在客户端主机上安装该文件,它是您的 CA 证书。PEM
是证书的一种格式,还有其他格式。.crt
是一个通用扩展。 如果需要,您可以将证书从 重命名root.pem
为。root.crt