---
title: "Armazenamento de chaves em HSM Kryptus"
description: "Configuração do repositório de chaves do Amplia em um HSM Kryptus kNET: Type, Host, porta HTTPS do VHSM e credenciais de usuário comum."
canonical: "https://docs.lacunasoftware.com/articles/amplia/on-premises/key-stores/kryptus"
locale: "pt-BR"
product: "Amplia"
last_updated: "2026-10-12"
---

# Armazenamento de chaves em HSM Kryptus

> **Observação**
>
> Os repositórios de chaves Kryptus são compatíveis com todas as plataformas suportadas.

Para armazenar chaves em um [HSM Kryptus kNET](https://kryptus.com/en/network-hsm-knet/), use as seguintes configurações:

* **Type**: `Kryptus`
* **Host**: endereço IP ou nome do host do VHSM
* **Port**: porta **HTTPS** do VHSM (*não* a porta TTLV)

Se você pretende usar o HSM para armazenar chaves de AC, informe as credenciais de um **usuário comum** (*não* um usuário VCO) nas seguintes configurações:

* **RootUsername**
* **RootPassword**

Se você pretende usar o HSM para armazenar chaves de usuário protegidas por PIN (normalmente em conjunto com o [módulo Lacuna PSC](https://docs.lacunasoftware.com/articles/psc)),
informe as credenciais de um **usuário VCO** (*não* um usuário comum) nas seguintes configurações:

* **VcoUsername**
* **VcoPassword**

> **Observação**
>
> Se você pretende usar o mesmo VHSM para os dois casos de uso, defina as 4 configurações. No entanto, isso seria muito incomum, já que é
> recomendado manter as chaves de AC e as chaves de usuário em VHSMs separados.

Exemplo de configuração (arquivo *.ini* ou *.conf*):

```bash
[KeyStores:MyKryptusHsm]
Type=Kryptus
Host=10.1.2.3
Port=50000
RootUsername=SOME_REGULAR_USER
RootPassword=SOME_PASSWORD
VcoUsername=SOME_VCO_USER
VcoPassword=SOME_PASSWORD
```

Exemplo de configuração (variáveis de ambiente):

```bash
KeyStores__MyKryptusHsm__Type=Kryptus
KeyStores__MyKryptusHsm__Host=10.1.2.3
KeyStores__MyKryptusHsm__Port=50000
KeyStores__MyKryptusHsm__RootUsername=SOME_REGULAR_USER
KeyStores__MyKryptusHsm__RootPassword=SOME_PASSWORD
KeyStores__MyKryptusHsm__VcoUsername=SOME_VCO_USER
KeyStores__MyKryptusHsm__VcoPassword=SOME_PASSWORD
```

Exemplo de configuração (arquivo *.json*):

```json
"KeyStores": {
	"MyKryptusHsm": {
		"Type": "Kryptus",
		"Host": "10.1.2.3",
		"Port": 50000,
		"RootUsername": "SOME_REGULAR_USER",
		"RootPassword": "SOME_PASSWORD",
		"VcoUsername": "SOME_VCO_USER",
		"VcoPassword": "SOME_PASSWORD"
	}
}
```

> **Observação**
>
> Observe que o valor de `Port` mostrado acima é apenas um exemplo. Não há valor padrão para esta configuração: ele depende inteiramente da configuração do seu VHSM.

## Solução de problemas

Você pode encontrar o seguinte erro ao usar um repositório de chaves Kryptus no Ubuntu 20.04:

```text
System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.
---> System.Security.Authentication.AuthenticationException: Authentication failed, see inner exception.
---> Interop+OpenSsl+SslException: SSL Handshake failed with OpenSSL error - SSL_ERROR_SSL.
---> Interop+Crypto+OpenSslCryptographicException: error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure
    --- End of inner exception stack trace ---
    at Interop.OpenSsl.DoSslHandshake(SafeSslHandle context, ReadOnlySpan`1 input, Byte[]& sendBuf, Int32& sendCount)
    at System.Net.Security.SslStreamPal.HandshakeInternal(SafeFreeCredentials credential, SafeDeleteSslContext& context, ReadOnlySpan`1 inputBuffer, Byte[]& outputBptions sslAuthenticationOptions)
    --- End of inner exception stack trace ---
    at System.Net.Security.SslStream.ForceAuthenticationAsync[TIOAdapter](TIOAdapter adapter, Boolean receiveFirst, Byte[] reAuthenticationData, Boolean isApm)
    at System.Net.Http.ConnectHelper.EstablishSslConnectionAsync(SslClientAuthenticationOptions sslOptions, HttpRequestMessage request, Boolean async, Stream streamllationToken)
    --- End of inner exception stack trace ---
    at System.Net.Http.ConnectHelper.EstablishSslConnectionAsync(SslClientAuthenticationOptions sslOptions, HttpRequestMessage request, Boolean async, Stream streamllationToken)
    at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
	...
```

Nesse caso, edite o arquivo de configuração do OpenSSL:

```sh
nano /etc/ssl/openssl.cnf
```

Adicione o seguinte no início do arquivo:

```ini
#
# This is part 1/2 of a workaround for SSL handshake issues with Kryptus HSMs, for more info
# see https://docs.lacunasoftware.com/articles/amplia/on-premises/key-stores/kryptus
#
openssl_conf = default_conf
```

Em seguida, adicione o seguinte no final do arquivo:

```ini
#
# This is part 2/2 of a workaround for SSL handshake issues with Kryptus HSMs, for more info
# see https://docs.lacunasoftware.com/articles/amplia/on-premises/key-stores/kryptus
#
[default_conf]
ssl_conf = ssl_sect

[ssl_sect]
system_default = system_default_sect

[system_default_sect]
MinProtocol = TLSv1.2
CipherString = DEFAULT:@SECLEVEL=1
```

Para mais informações, consulte a [issue relacionada no repositório do .NET runtime](https://github.com/dotnet/runtime/issues/46271#issuecomment-749118036).

## Veja também

* [Repositórios de chaves](https://docs.lacunasoftware.com/articles/amplia/on-premises/key-stores)
* [Amplia on-premises](https://docs.lacunasoftware.com/articles/amplia/on-premises)
