OpenSSL#
Ostrzeżenie
Próba odzyskania klucza prywatnego spowoduje awarię OpenSSL. Jest to normalne, ponieważ kluczy prywatnych nie można wyodrębnić z NetHSM. Zamiast tego można pobrać klucz publiczny (patrz przykład poniżej).
Silnik#
Ostrzeżenie
Podczas korzystania z silnika (libp11) w wersji 0.4.12 lub starszej, posiadanie klucza EdDSA na NetHSM spowoduje, że OpenSSL nie znajdzie żadnego klucza. W wersji 0.4.12 i starszych silnik wyświetla listę wszystkich kluczy na NetHSM, gdy żądany jest klucz. Podczas wyszukiwania klucza według etykiety lub identyfikatora, zaleca się użycie wersji 0.4.13 lub nowszej, lub zbudowanie libp11 ze źródła. Plik binarny silnika będzie znajdował się w src/.libs/pkcs11.so
.
Interfejs silnika OpenSSL jest starym sposobem implementacji niestandardowych backendów dla OpenSSL i jest przestarzały w OpenSSL 3. Jest to nadal najbardziej stabilny sposób korzystania z NetHSM z OpenSSL.
Będziesz musiał skonfigurować moduł PKCS#11, postępując zgodnie z tymi instrukcjami.
Zainstalować silnik:
apt install libengine-pkcs11-openssl
dnf install openssl-pkcs11
pacman -S libp11
Następnie należy skonfigurować OpenSSL do korzystania z silnika. Odbywa się to poprzez dodanie następujących linii do pliku openssl.cnf
:
openssl_conf = openssl_init
[openssl_init]
engines = engine_section
[engine_section]
pkcs11 = pkcs11_section
[pkcs11_section]
engine_id = pkcs11
dynamic_path = /usr/lib/x86_64-linux-gnu/engines-3/libpkcs11.so
MODULE_PATH = /usr/lib/x86_64-linux-gnu/pkcs11/libnethsm_pkcs11.so
init = 0
Informacja
Możesz określić OpenSSL ścieżkę do pliku konfiguracyjnego OpenSSL za pomocą zmiennej środowiskowej OPENSSL_CONF
.
Ostrzeżenie
Jeśli główny plik konfiguracyjny OpenSSL zostanie zmodyfikowany tak, aby zawierał tylko te linie, może to spowodować uszkodzenie innych programów korzystających z OpenSSL. Dlatego warto utworzyć osobny plik konfiguracyjny dla silnika.
Zastąp /usr/lib/x86_64-linux-gnu/pkcs11/libnethsm_pkcs11.so
ścieżką do zainstalowanego wcześniej modułu PKCS#11.
Zastąp /usr/lib/x86_64-linux-gnu/engines-3/libpkcs11.so
ścieżką do zainstalowanego silnika OpenSSL. Ścieżka różni się w zależności od dystrybucji. Liczba w engines-3
odpowiada wersji OpenSSL. W Debianie ścieżka do silnika OpenSSL 3 to /usr/lib/x86_64-linux-gnu/engines-3/libpkcs11.so
; dla Fedory jest to /usr/lib64/engines-3/libpkcs11.so
.
Teraz można używać kluczy w NetHSM za pomocą PKCS#11 URI, przykład:
engine:pkcs11:pkcs11:object=webserver;type=private
Spowoduje to użycie klucza webserver
.
Informacja
Możesz użyć polecenia p11tool
z GnuTLS <https://gnutls.org/>, aby uzyskać pełny URI kluczy:
p11tool --provider /usr/lib/x86_64-linux-gnu/pkcs11/libnethsm_pkcs11.so --list-all
Przykładowe polecenie#
Pobieranie klucza publicznego pary kluczy asymetrycznych w NetHSM:
openssl pkey -engine pkcs11 -inform ENGINE -in "pkcs11:object=webserver;type=public" -pubout
Dostawca#
Interfejs dostawcy OpenSSL to nowy sposób implementacji niestandardowych backendów dla OpenSSL. Backend pkcs11-provider jest wciąż na wczesnym etapie rozwoju.
Będziesz musiał skonfigurować moduł PKCS#11, postępując zgodnie z tymi instrukcjami.
Zainstaluj dostawcę. Dla Fedory istnieje pakiet o nazwie pkcs11-provider
. Dla innych dystrybucji Linuksa będziesz musiał zbudować go ze źródła.
Następnie należy skonfigurować OpenSSL do korzystania z dostawcy. Odbywa się to poprzez dodanie następujących linii do pliku openssl.cnf
:
openssl_conf = openssl_init
[openssl_init]
providers = provider_sect
[provider_sect]
pkcs11 = pkcs11_sect
[pkcs11_sect]
module = /home/sautax/git/pkcs11-provider/src/.libs/pkcs11.so
pkcs11-module-path = /usr/lib/libnethsm_pkcs11.so
activate = 1
Ustaw module
na ścieżkę zainstalowanego dostawcy i pkcs11-module-path
na ścieżkę zainstalowanego modułu PKCS#11.
Jeśli chcesz ustawić NetHSM jako domyślnego dostawcę, możesz dodać default = pkcs11
do sekcji provider_sect
.
Informacja
Możesz określić OpenSSL ścieżkę do pliku konfiguracyjnego OpenSSL za pomocą zmiennej środowiskowej OPENSSL_CONF
.
Ostrzeżenie
Jeśli główny plik konfiguracyjny OpenSSL zostanie zmodyfikowany tak, aby zawierał tylko te linie, może to spowodować uszkodzenie innych programów korzystających z OpenSSL. Dlatego warto utworzyć osobny plik konfiguracyjny dla dostawcy.
Następnie można użyć kluczy w NetHSM za pomocą PKCS#11 URI, przykład:
openssl pkey -provider pkcs11 -in "pkcs11:object=rsakey" -pubout
Jeśli ustawisz NetHSM jako domyślnego dostawcę, możesz pominąć argument -provider pkcs11
.
Informacja
Obecnie podczas ręcznego ustawiania typu klucza w URI dostawca nie będzie w stanie znaleźć klucza. Możesz pominąć ;type=private
lub ;type=public
część URI, aby działała.