Certificado para BISHUB API Server

De BIS Wiki
Ir para navegação Ir para pesquisar

Criando um Keystore para SSL/TLS no Java

Este guia fornece instruções detalhadas para criar um **Keystore Java (`.jks`)** contendo um **certificado autoassinado** e uma **chave privada**, necessário para ativar **SSL/TLS** em um servidor TCP/IP Java.

1. Gerando o Keystore

Para criar o keystore, abra um **terminal** ou **Prompt de Comando** e execute o seguinte comando:

keytool -genkeypair -alias bisHubCert -keyalg RSA -keysize 2048 -keystore bishubkeystore.jks -storepass 123456 -validity 365

Explicação dos parâmetros

  • -genkeypair → Gera um **par de chaves** (pública e privada).
  • -alias bisHubCert → Nome do certificado dentro do keystore.
  • -keyalg RSA -keysize 2048 → Algoritmo RSA de **2048 bits**.
  • -keystore bishubkeystore.jks → Nome do arquivo do **keystore**.
  • -storepass 123456 → **Senha do keystore** (altere conforme necessário).
  • -validity 7300 → O certificado **terá validade de 20 anos (7300 dias)**.

2. Preenchendo os Dados do Certificado

Após executar o comando, o terminal solicitará informações sobre o certificado. Preencha os campos conforme necessário:

Digite seu nome e sobrenome:  ["BISHUB"]
Digite o nome da sua unidade organizacional:  ["BIS"]
Digite o nome da sua organização:  ["BIS"]
Digite o nome da sua cidade ou localidade:  [ENTER]
Digite o nome do seu estado ou província:  [ENTER]
Digite o código do país:  [ENTER]

Após preencher as informações, o sistema perguntará:

Está correto? [sim/não]: 

Digite sim e pressione Enter.

3. Verificando o Keystore

Para garantir que o keystore foi criado corretamente, use o comando:

keytool -list -keystore bishubkeystore.jks -storepass 123456

Se o keystore foi criado corretamente, a saída será semelhante a:

Keystore type: JKS
Keystore provider: SUN
Seu keystore contém 1 entrada
bisHubCert, 10 de Fev de 2045, PrivateKeyEntry,
Certificado autoassinado SHA256withRSA, 2048 bits

4. Utilizando o Keystore no Servidor SSL/TLS

Agora que o keystore foi gerado, ele pode ser utilizado para ativar **SSL/TLS** em um servidor Java, permitindo conexões seguras.

Exemplo de uso no Java:

KeyStore keyStore = KeyStore.getInstance("JKS");
try (FileInputStream keyStoreStream = new FileInputStream("bishubkeystore.jks")) {
    keyStore.load(keyStoreStream, "123456".toCharArray());
}
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance("SunX509");
keyManagerFactory.init(keyStore, "123456".toCharArray());

SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(keyManagerFactory.getKeyManagers(), null, null);

SSLServerSocketFactory sslServerSocketFactory = sslContext.getServerSocketFactory();
SSLServerSocket serverSocket = (SSLServerSocket) sslServerSocketFactory.createServerSocket(5001);