2013-02-24 28 views
5

Chcę dodać silnik PKCS # 11 do OpenSSL i używam CentOS 6.2. I rzeczywiście obciążenie silnika bez problemu jak widać poniżej:Silnik PKCS # 11 nie działa w openssl na centos 6

[[email protected] 05:06:18 openssl-1.0.1e]$ openssl engine -t dynamic -pre SO_PATH:/usr/lib/openssl/engines/engine_pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:/usr/local/lib/libsst.so 
(dynamic) Dynamic engine loading support 
[Success]: SO_PATH:/usr/lib/openssl/engines/engine_pkcs11.so 
[Success]: ID:pkcs11 
[Success]: LIST_ADD:1 
[Success]: LOAD 
[Success]: MODULE_PATH:/usr/local/lib/libsst.so 
Loaded: (pkcs11) pkcs11 engine 
    [ available ] 

ale kiedy używam opcji OpenSSL zobaczyć silnik załadowany, silnik pkcs11 nie ma na liście:

[[email protected] 05:19:58 openssl-1.0.1e]$ openssl engine -v -t 
(aesni) Intel AES-NI engine (no-aesni) 
    [ available ] 
(dynamic) Dynamic engine loading support 
    [ unavailable ] 
    SO_PATH, NO_VCHECK, ID, LIST_ADD, DIR_LOAD, DIR_ADD, LOAD 

i gdy chcę używać silnika, widzę ten błąd:

[[email protected] 05:20:04 openssl-1.0.1e]$ openssl genrsa -engine pkcs11 -out priv.key 1024 
invalid engine "pkcs11" 
3078776556:error:25066067:DSO support routines:DLFCN_LOAD:could not load the shared library:dso_dlfcn.c:185:filename(/usr/lib/openssl/engines/libpkcs11.so): /usr/lib/openssl/engines/libpkcs11.so: cannot open shared object file: No such file or directory 
3078776556:error:25070067:DSO support routines:DSO_load:could not load the shared library:dso_lib.c:244: 
3078776556:error:260B6084:engine routines:DYNAMIC_LOAD:dso not found:eng_dyn.c:450: 
3078776556:error:2606A074:engine routines:ENGINE_by_id:no such engine:eng_list.c:417:id=pkcs11 
3078776556:error:25066067:DSO support routines:DLFCN_LOAD:could not load the shared library:dso_dlfcn.c:185:filename(libpkcs11.so): libpkcs11.so: cannot open shared object file: No such file or directory 
3078776556:error:25070067:DSO support routines:DSO_load:could not load the shared library:dso_lib.c:244: 
3078776556:error:260B6084:engine routines:DYNAMIC_LOAD:dso not found:eng_dyn.c:450: 
Generating RSA private key, 1024 bit long modulus 
.......++++++ 
.......++++++ 
e is 65537 (0x10001) 

nie mogę dowiedzieć się, co może być problemem ...

+1

to silnik pkcs11 zawarty w systemie deefault, czy też chciałeś patchować openssl? –

Odpowiedz

6

Ten problem jest z powodu OpenSSL załadować biblioteki tylko jeden raz, a potem, że nie zachować stan, więc jeśli chcemy utrzymać stan musimy użyć następujących poleceń:

[[email protected] 04:58:25 home]$ openssl 
OpenSSL> engine -t dynamic -pre SO_PATH:/usr/lib/openssl/engines/engine_pkcs11.so -pre ID:pkcs11 -pre LIST_ADD:1 -pre LOAD -pre MODULE_PATH:/usr/local/lib/libsst.so 
(dynamic) Dynamic engine loading support 
[Success]: SO_PATH:/usr/lib/openssl/engines/engine_pkcs11.so 
[Success]: ID:pkcs11 
[Success]: LIST_ADD:1 
[Success]: LOAD 
[Success]: MODULE_PATH:/usr/local/lib/libsst.so 
Loaded: (pkcs11) pkcs11 engine 
     [ available ] 
OpenSSL> engine 
(aesni) Intel AES-NI engine (no-aesni) 
(dynamic) Dynamic engine loading support 
(pkcs11) pkcs11 engine 
OpenSSL> 
+1

Napisałeś 'libsst.so'. Czy możliwe jest napisanie 'libssl.so'? –

+0

Dla konfiguracji statycznej, która pozwoliłaby na wykonanie polecenia podobnego do tego 'openssl genrsa -engine pkcs11 -out priv.key 1024', spójrz na" Używanie Engine_pkcs11 z plikiem konfiguracyjnym openssl "w https: //web.archive. org/web/20110909101027/http: //www.opensc-project.org/engine_pkcs11/wiki/QuickStart –

0

rzeczywistości, jak wspomniano w jednym z powyższych komentarzy, dla wielokrotnego użytku wygodniej jest uwzględnić parametry silnika w odpowiednim pliku konfiguracyjnym OpenSSL. Na podanym przykładzie, należy dodać linię

openssl_conf = openssl_def 

przed pierwszym odcinku (który zaczyna się od „[” znaków w wierszu zacząć) i dodać sekcję oznaczoną [openssl_def], dla uproszczenia na koniec plik:

[openssl_def] 
engines = engine_section 

[engine_section] 
pkcs11 = pkcs11_section 

[pkcs11_section] 
engine_id = pkcs11 
dynamic_path = /usr/lib/openssl/engines/engine_pkcs11.so 
MODULE_PATH = /usr/local/lib/libsst.so 
init = 0 
# adapt as desired: PIN = 1234