I'm trying to use CAPI engine to renew certificate which is stored in windows
certificate store (Local Computer/Personal (My)).
Loading engine dynamically and listing certificate including container works
fine. I'm also adding engine to the list of engines, but when I'm trying to use
key in following x509 command (same openssl process) it fails unable to find it.
If certificate is in Current User/My, everything works fine. My understanding
from that behaviour is that store_flags:1 set in first command (engine), do not
affect command 2 (x509) and certificate/key is being searched in the Current
User instead of Local Machine.
I cannot find the way to pass that parameter within x509 command. How this
should be done?
====== SESSION OUTPUT ============
openssl
WARNING: can't open config file: /usr/local/ssl/openssl.cnf
OpenSSL> engine -t dynamic -pre "SO_PATH:capi" -pre ID:capi -pre LIST_ADD:1
-pre LOAD -post store_flags:1 -post list_options:35 -post lookup_cert:localhost
(dynamic) Dynamic engine loading support
[Success]: SO_PATH:capi
[Success]: ID:capi
[Success]: LIST_ADD:1
[Success]: LOAD
Loaded: (capi) CryptoAPI ENGINE
[ available ]
[Success]: store_flags:1
[Success]: list_options:35
Friendly Name "IIS Express Development Certificate"
Subject: CN = localhost
Issuer: CN = localhost
Private Key Info:
Provider Name: Microsoft RSA SChannel Cryptographic Provider, Provider Type
12
Container Name: IIS Express Development Certificate Container, Key Type 1
[Success]: lookup_cert:localhost
OpenSSL> x509 -x509toreq -engine capi -keyform engine -in localhost.cer
-signkey localhost -out localhost.req
engine "capi" set.
Loading 'screen' into random state - done
Getting request Private Key
cannot load request key from engine
12852:error:26096080:engine routines:ENGINE_load_private_key:failed loading
private key:.\crypto\engine\eng_pkey.c:126:unable to load request key
error in x509
OpenSSL>