Ошибка SSL_ERROR_NO_CYPHER_OVERLAP с подписанным сертификатом

Моя компания предоставила клиенту приложение на основе Tomcat/MySQL, которое по умолчанию использует http. По просьбе клиента я включил это использование https, создав самозаверяющий сертификат. Это работает при условии ожидаемой ошибки браузера при использовании самозаверяющего сертификата.

После теста на ручную проверку они решили, что нам нужно отключить некоторые устаревшие протоколы ssl и шифры, поэтому я изменил соединитель ssl в моем tomcat server.xml, чтобы он выглядел так:

    <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
    maxThreads="150" scheme="https" secure="true"
    clientAuth="false" sslProtocol="TLS" sslEnabledProtocols="TLSv1.2,TLSv1.1" ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_WITH_AES_128_GCM_SHA256"
    keystoreFile="/path/to/keystore/file"
    keystorePass="password" />

Это удовлетворило тест ручки, и приложение продолжало работать во всех трех основных браузерах (Chrome, Firefox и IE). Тем не менее, тест пера также показал, что в идеале мы не должны использовать самозаверяющий сертификат, поэтому, следуя этим инструкциям, я создал CSR и попросил клиента создать сертификат, подписанный для их внутреннего домена (доступ к серверу мог получить пара разных URL, следовательно, необходимо создать CSR с SAN).

Я добавил сертификат в новое хранилище ключей и соответствующим образом изменил путь в файле server.xml. Теперь, когда я пытаюсь подключиться, я получаю следующую ошибку (это от Firefox, но все браузеры выдают похожую ошибку):

Сбой безопасного соединения

Произошла ошибка при подключении к 172.31.1.36:8443. Невозможно безопасно общаться с одноранговым узлом: нет общих алгоритмов шифрования. Код ошибки: SSL_ERROR_NO_CYPHER_OVERLAP

Невозможно отобразить страницу, которую вы пытаетесь просмотреть, потому что подлинность полученных данных не может быть проверена. Пожалуйста, свяжитесь с владельцами веб-сайта, чтобы сообщить им об этой проблеме.

Насколько я понимаю, сертификат не контролирует, какие шифры или протоколы следует использовать, поэтому я не понимаю, почему это произошло. Это ошибка, которую я сделал при создании CSR, или это была ошибка клиента при создании сертификата?

-РЕДАКТИРОВАТЬ-

Кажется, я везде получаю ошибки. Если я пытаюсь импортировать ключ в хранилище ключей, я получаю либо это:

cat <keyfile> | openssl  pkcs12 -export -out <keystore>.p12
Enter pass phrase:
unable to load certificates

Или это:

keytool -importkeystore -srckeystore <keyfile> -srcstoretype pkcs12 -destkeystore <keystore>.jks
Enter destination keystore password:
Re-enter new password:
Enter source keystore password:
keytool error: java.io.IOException: toDerInputStream rejects tag type 45

У меня есть клиент, чтобы отправить мне цепочку сертификатов, и когда я пытаюсь импортировать, я получаю эту ошибку:

keytool -import -trustcacerts -alias tomcat -file <certchain>.p7b -keystore <keystorefile>.jks
Enter keystore password:
keytool error: java.lang.Exception: Input not an X.509 certificate

Я нашел несколько решений о том, как преобразовать файл pkcs в x.509, но потом я получил другие ошибки, поэтому я полностью застрял сейчас.

1 ответ

Решение

Основной причиной всех проблем было то, что сертификат был в неправильном формате.

Следуя информации здесь, я обнаружил, что сертификат на самом деле был в формате DER. Я преобразовал это следующим образом:

openssl x509 -inform der -in certfile.cer -out new_certfile.pem

Сообщение об ошибке - отвлекающий маневр.

При настройке MikroTik для доступа по протоколу https через Webfig вы получите эту ошибку, если просто создадите и используете сертификат, не подписанный центром сертификации. Когда браузер видит неподписанный сертификат, он выдает ошибку:

" Код ошибки: SSL_ERROR_NO_CYPHER_OVERLAP"

Не спускайтесь в кроличью нору, исследуя несовместимые шифры и тому подобное: вам просто нужно подписать свой сертификат в ЦС, и все будет работать, как ожидалось.

Ниже приводится специальная процедура MikroTik для устранения ошибки.

ПРЕДУПРЕЖДЕНИЕ:

Не просто вырезать и вставить: пожалуйста, замените мои заполнители разумными значениями;-)

  • " CAyourDomain": замените yourDomain на домен вашей организации.
  • " штат ": укажите округ для тех, кто проживает за пределами США
  • "subject-alt-name": укажите ПУБЛИЧНЫЙ IP-адрес роутера.
  • "ca-crl-host": снова укажите ПУБЛИЧНЫЙ IP-адрес маршрутизатора
  • CA "key-size": обратите внимание, что использование " 4096 " может привести к максимальной загрузке ЦП и зависанию моделей с тонкой подготовкой при подписании.
  • При необходимости измените другие параметры

Создать ЦС:

       /certificate add name=CAyourDomain-template common-name=CAyourDomain country=GB days-valid=3650 key-size=4096 locality="Your City" organization="Your Organization" state=Hertfordshire trusted=yes unit="Technical Services" subject-alt-name="IP:XXX.XXX.XXX.XXX" key-usage=digital-signature,key-cert-sign,crl-sign;

/certificate sign CAyourDomain-template ca-crl-host="XXX.XXX.XXX.XXX" name=CAyourDomain

Создать сертификат:

       /certificate add name=webfig-template common-name="webfig" country=GB days-valid=3650 key-size=4096 locality="Your City" organization="Your Organization" state=Hertfordshire trusted=yes unit="Technical Services" subject-alt-name="IP:XXX.XXX.XXX.XXX" key-usage=digital-signature,key-encipherment,data-encipherment,tls-server,tls-client;

/certificate sign webfig-template ca=CAyourDomain name=webfig

/certificate set webfig trusted=yes

Укажите сертификат:

Теперь, когда сертификат " webfig " был подписан центром сертификации, вам, наконец, нужно указать его здесь, чтобы использовать его:

" IP "> " Services " и включите " www-ssl " и укажите созданный сертификат " webfig " и доступ к подсети HTTPS должен быть разрешен из

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