Вы можете предоставить хранилища ключей для уже существующих реализаций для отправки данных по http, который извлечет хранилище ключей и выполнит все необходимые действия, так что вам не придется это делать.Для аутентификации на стороне сервера это будет хранилище ключей = KeyStore.getInstance ("JKS"), содержащее все доверенные сертификаты.
Для аутентификации на стороне клиента, если применимо (необходимо проверить себя), также такая реализацияуже существует, где вы просто предоставляете своему клиенту «хранилище ключей» => это будет содержать ваш сертификат и его закрытый ключ => KeyStore.getInstance («PKCS12»)
Затем, наконец, вы хотите сохранить эти вещи в базе данных,здесь это становится немного сложнее .. Keystores защищены, так что вы не можете просто записать это .. вы должны использовать keystore.store (OutPutstream, пароль) ..
Что я считаю лучшим, например,:
@Entity
public class MyKeyStoreClass {
private Long id;
@Transient
private KeyStore keystore;
private String passwordForKeyStore;
private Byte[] keyStoreAsBytes;
@PreUpdate
@PrePersist
public void concertKeyStoreToBytes() {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
keystore.store(byteArrayOutputStream,
passwordForKeyStore.toCharArray());
keyStoreAsBytes = byteArrayOutputStream.toByteArray();
}
@PostLoad
public void getKeyStore() {
if (keystore == null && keyStoreAsBytes != null) {
keyStore = KeyStore.getInstance(getKeystoreType().getType());
keyStore.load(new ByteArrayInputStream(keystoreAsBytes), passwordForKeyStore.toCharArray());
}
}
Приведенный выше код не является на 100% правильным, но он дает вам хорошее представление о том, что я имею в виду. Если вы не работаете с аннотациями, вы можете сделать это, используя другой подход, но я думаю,моя точка зрения ясна;)