我想使用OpenSSL生成私钥/公钥/(证书签名请求)并在以后签署一些数据。但我想使用OpenSSL GOST引擎。
我下载了OpenSSL1.0.0并修改了openssl.cfg文件:
openssl_conf = openssl_def
[openssl_def]
engines = engine_section
[engine_section]
gost = gost_section
[gost_section]
engine_id = gost
dynamic_path = ./gost.dll
default_algorithms = ALL
CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet
我可以生成私钥和CSR(一行命令字符串):
openssl req -newkey gost2001 -pkeyopt paramset:A -passout pass:aofvlgzm \
-subj "/C=RU/ST=Moscow/L=Moscow/O=foo_bar/OU=foo_bar/CN=developer/ \
emailAddress=vany.egorov@gmail.com" \
-new > certificate_signing_request.csr
我得到了2个文件:
- certificate_signing_request.csr
- privkey.pem
我知道可以这样做(打印私钥和公钥的文本表示形式,未加密):
openssl genpkey -algorithm gost2001 -pkeyopt paramset:A -text
我使用 GOST 而不是 RSA,因此我不能执行以下操作:
openssl rsa -in privkey.pem -pubout -out pubkey.pem
Enter pass phrase for privkey.pem:
6132:error:0607907F:digital envelope routines:EVP_PKEY_get1_RSA:expecting an rsa key:.\crypto\evp\p_lib.c:288:
我的问题是:如何使用GOST生成/获取公钥(也许是从私钥或CSR中获取)?
我使用的工具有:
- Windows 7专业版x64;
- OpenSSL 1.0.0;
- Gost引擎。
感谢任何帮助。