Dear stunnel users,<br><br>As there is no development/patches related this issue I made Wiki page describing the problem and offering temporary solution/pathes:<br><a href="http://martlaak.wikispaces.com/Stunnel+and+engine_pkcs11">http://martlaak.wikispaces.com/Stunnel+and+engine_pkcs11</a><br>
PS! You can also download patched windows build from that page.<br><br>
With best regards,<span class="HOEnZb"><font color="#888888"><br>
Märt Laak</font></span><br><br><div class="gmail_quote">On Sun, Oct 3, 2010 at 10:49 AM, Märt Laak <span dir="ltr"><<a href="mailto:martlaak@gmail.com">martlaak@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Dear stunnel managers,<br>
<br>
I would like to inform you that there exist some incompatibility with stunnel and openssl pkcs11-engine with external PIN entry device (like RSA smartcard using opensc) in Linux.<br>
<br>
We use this config to load openssl engine stunnel.conf:<br>
---<br>
engine=dynamic<br>
engineCtrl=SO_PATH:/usr/lib/<u></u>engines/engine_pkcs11.so<br>
engineCtrl=ID:pkcs11<br>
engineCtrl=LIST_ADD:1<br>
engineCtrl=LOAD<br>
engineCtrl=MODULE_PATH:/usr/<u></u>lib/opensc-pkcs11.so<br>
engineCtrl=INIT<br>
---<br>
<br>
Problem is, with this setup stunnel does not allow user to enter PIN for the secret key.<br>
Instead it tries to get secret key without PIN, 3 times (and then therefore usually blocks card PIN) and retires:<br>
----<br>
Initializing engine 1<br>
Engine 1 initialized<br>
PRNG seeded successfully<br>
Certificate: mart.pem<br>
Certificate loaded<br>
Key file: id_01<br>
error queue: 26096080 : error:26096080:engine routines:ENGINE_load_private_<u></u>key:failed loading private key<br>
error queue: 800050A0 : error:800050A0:PKCS11 library:PKCS11_login:PIN incorrect<br>
Wrong PIN: retrying<br>
error queue: 26096080 : error:26096080:engine routines:ENGINE_load_private_<u></u>key:failed loading private key<br>
error queue: 800050A0 : error:800050A0:PKCS11 library:PKCS11_login:PIN incorrect<br>
Wrong PIN: retrying<br>
error queue: 26096080 : error:26096080:engine routines:ENGINE_load_private_<u></u>key:failed loading private key<br>
ENGINE_load_private_key: 800050A0: error:800050A0:PKCS11 library:PKCS11_login:PIN incorrect<br>
----<br>
<br>
I discovered workaround that is valid form version 4.26 till current 4.34, as follows, NULL-ing the ui_data.method property in ctx.c:<br>
---<br>
diff -cr stunnel-4.34/src/ctx.c stunnel-4.34-patched/src/ctx.c<br>
*** stunnel-4.34/src/ctx.c    2010-09-14 18:08:43.000000000 +0300<br>
--- stunnel-4.34-patched/src/ctx.c    2010-09-28 21:56:36.219081931 +0300<br>
***************<br>
*** 304,309 ****<br>
--- 304,310 ----<br>
      UI_method_set_reader(ui_<u></u>method, pin_cb);<br>
  #else /* USE_WIN32 */<br>
      ui_method=UI_OpenSSL();<br>
+     ui_data.section = NULL;<br>
  #endif /* USE_WIN32 */<br>
      if(section->engine)<br>
          for(i=1; i<=3; i++) {<br>
---<br>
<br>
After that patch private key loads correctly:<br>
---<br>
Initializing engine 1<br>
Engine 1 initialized<br>
PRNG seeded successfully<br>
Certificate: mart.pem<br>
Certificate loaded<br>
Key file: id_01<br>
private key loaded<br>
---<br>
<br>
It would be nice if:<br>
* somebody investigates more precisely why the OpenSSL PIN entry is not showing with unpached stunnel<br>
* include my or better patch for this situation<br>
<br>
Thank you very much for excellent piece of software!<br>
<br>
With best regards,<span class="HOEnZb"><font color="#888888"><br>
Märt Laak<br>
</font></span></blockquote></div><br>