CRT文件不包含私钥

时间:2019-05-28 10:01:57

标签: windows openssl private-key

我正在准备演示专用局域网上的一组应用程序的演示(除了所涉及的机器以外,不连接任何东西)。没有DNS,因此所有URL都基于IP地址。

由于对ssl证书进行了验证,因此该证书不能是自签名证书。因此,我将以下命令与openssl(用于Windows)一起使用以创建CA,并派生了crt。几年前我已经成功地做到了这一点,我想我曾经遇到过这个问题,但是我不记得我是如何解决的。我也找不到能解决该问题或提醒我解决方法的帖子。

我正在使用以下命令:

openssl genrsa -des3 -out myCA.key 2048
openssl req -x509 -new -nodes -key myCA.key -sha256 -days 1825 -out myCA.pem
openssl genrsa -out derived.key 2048
openssl req -new -key derived.key -out derived.csr
openssl x509 -req -in derived.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out derived.crt -days 1825 -sha256 -extfile derived.ext


[derived.ext file contents]
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = %%DOMAIN%%

CA证书(myCA.PEM文件)可以很好地安装到受信任的根文件夹中。derived.crt可以很好地安装到个人存储中,并且可以通过CA正确地进行验证。但是,derived.crt不显示私钥。并且不能用于SSL。有人可以告诉我我错了什么步骤或错过了什么步骤?

1 个答案:

答案 0 :(得分:1)

我似乎终于解决了这个问题。显然.crt文件不能包含私钥。使用以下命令,我将.crt和密钥合并到一个.pfx文件中,该文件已导入并现在显示私钥:

df = as.data.frame(matrix(0, ncol = 4, nrow = 4))
df[1,] = c(156,176,145,150)
df[2,] = c(0,134,156,134)
df[3,] = c(0,0,208,123)
df[3,] = c(0,0,0,125)
df