Алгоритм подписи SHA256 с RSA потерпел неудачу в Java - PullRequest
0 голосов
/ 23 января 2020

Я сгенерировал и подписал идентичные сертификаты в Raspberry Pi и Ubuntu Linux.

SSL-соединение работает нормально в Raspberry, но в Ubuntu происходит сбой с ошибкой Received fatal alert: unknown_ca

Во время процедуры проверки сертификата я обнаружил разницу:

Ошибка (Ubuntu на AWS)

*** CertificateVerify
Signature Algorithm SHA256withRSA

Хорошо (Raspberry Pi)

*** CertificateVerify
Signature Algorithm SHA512withRSA

Почему у меня есть другой алгоритм подписи? В обоих случаях для создания и подписи сертификатов использовались одинаковые команды.

Может ли возникнуть проблема при взаимодействии с Java?

UPD

Попытка включить политику неограниченной юрисдикции

В моей установке Java есть две папки, содержащие local_policy.jar и US_export_policy.jar:

C:\java\jdk1.8.0_241\jre\lib\security\policy\limited
C:\java\jdk1.8.0_241\jre\lib\security\policy\unlimited

Я предполагаю, что папка unlimited содержит необходимые библиотеки , но чтобы быть уверенным, что я скачал их с Oracle и перезаписал.

Я закомментировал строку crypto.policy=unlimited в C:\java\jdk1.8.0_241\jre\lib\security\java.security файле

Но проблема остается той же , До ошибки:

MQTT Con: 2, RECV TLSv1.2 ALERT:  fatal, unknown_ca
%% Invalidated:  [Session-1, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384]

1 Ответ

0 голосов
/ 23 января 2020

Я бы попробовал проверить, включен ли на вашем клиенте Политика неограниченной юрисдикции .

  • $JAVA_HOME/jre/lib/security (для JDK)
  • $JAVA_HOME/lib/security (для JRE)

В файле должна быть строка: crypto.policy=unlimited

Если его там нет, вам придется скачать дистрибутив с Oracle и затем добавьте вышеуказанную строку в файл security.

...