Генерация самозаверяющего сертификата с использованием TLSv1.2 или 1.1

У меня есть бизнес-сервер, к которому я пытаюсь подключиться, используя Java, но для этого требуется, чтобы версия Tls была либо 1.1 или же 1.2,

У меня на компьютере установлена ​​openssl, и я, похоже, использую Tls версии 1.1. Я проверил мою установку OpenSSL с этой командой

openssl s_client -host google.com -port 443

и это результат

SSL-Session:
    Protocol  : TLSv1
    Cipher    : AES128-SHA
    Session-ID: FFE6DD3F1F78EC17999809D875E12D5138573BE52BCAA2EB55225F2EFE864127
    Session-ID-ctx:
    Master-Key: 7599DC1A0FDC8BC41431D7907EE933BE7527D2A658ADFC6B34B2CAB3D071DD7E13B6ED2C7C35A6EABDCA52943B1155A2
    Key-Arg   : None
    Start Time: 1489987373
    Timeout   : 300 (sec)
    Verify return code: 20 (unable to get local issuer certificate)

некоторая информация была опущена для удобства чтения, но вы можете проверить ее в своем терминале.

Это моя версия java

java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

Как я могу сделать мой Java Keytool для создания сертификата с Tls версия 1.1 или же 1.2?.

1 ответ

Решение

Сертификат должен быть несущественным для перевозки.

Не зная, что вы используете для серверной части, будет немного трудно определить, каким должен быть ваш лучший образ действий.

Вы можете заставить s_client использовать только tls 1.2, передав ключ -tls1_2, но это не совсем то, что вам нужно.

Итак, скажем, вы использовали Tomcat 8 (и HTTP-коннектор не-APR), вы можете настроить только для TLSv1.2, используя атрибут sslEnabledProtocols="TLSv1.2".

По сути, sslEnabledProtocols сопоставляется с методом SSLSocket.setEnabledProtocols() Java. Причал, вероятно, имеет аналогичную конфигурацию.

Если вы используете Apache HTTPd или nginx, вероятно, есть документация, в которой будет указано, как это сделать.

Другие вопросы по тегам