openssl 生成证书时报错Error opening CA private key

参考http://blog.****.net/u014721096/article/details/78571287生成证书方法【我是在winxp 32上执行的,特意下的openssl win32版】,在用openssl生成自签CA及证书私钥与证书请求文件后,用自签CA与证书请求文件生成证书,生成证书命令如下:openssl ca -in E:\OpenSSL-Win32\bin\PEM\demoCA\cert.csr -days 1 -out E:\OpenSSL-Win32\bin\PEM\demoCA\certs\cert.crt

执行该命令报错Error opening CA private key,如图1

openssl 生成证书时报错Error opening CA private key

图1

很明显报错是说私钥文件找不到,由于报错中的路径是相对路径,先在本机上搜到demoCA这个文件夹,观察这个文件夹下是否存在cakey.pem文件

openssl 生成证书时报错Error opening CA private key

图2

若存在,则继续排查openssl配置文件,搜索openssl.cfg文件,查看其配置的路径为./demoCA,意为demoCA与本配置文件同路径。

openssl 生成证书时报错Error opening CA private key

图3

而从图2可以看到demoCA是在E:\OpenSSL-Win32\bin\PEM路径下,配置文件路径在E:\OpenSSL-Win32\bin,显然两者不是同一个路径,是配置文件中的路径配错了。

可以将openssl.cfg的路径修改成demoCA的真实路径,最好直接填写绝对路径E:\OpenSSL-Win32\bin\PEM\demoCA

openssl 生成证书时报错Error opening CA private key

图4

修改完成后再在cmd中输出证书生成命令,不再出现报错Error opening CA private key

openssl 生成证书时报错Error opening CA private key

图5

控制台回显中有The mandatory stateOrProvinceName field was missing,是因为我在生成CA证书与证书请求文件时,必填项省份名称没填,如图6

openssl 生成证书时报错Error opening CA private key

图6

按照要求(填写省份)重新生成这两个文件后,再执行生成证书命令已经OK,控制台回显如图7

openssl 生成证书时报错Error opening CA private key

 图7