Ошибка SSL_ERROR_NO_CYPHER_OVERLAP с подписью certifcate

Моя компания предоставила клиенту приложение на основе 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, но все браузеры выдают аналогичную ошибку):

Secure Connection Failed

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

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

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

-EDIT-

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

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, но затем у меня появились другие ошибки, так что я полностью застрял.

4
задан 10 March 2017 в 17:46
2 ответа

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

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

openssl x509 -inform der -in certfile.cer -out new_certfile.pem
1
ответ дан 3 December 2019 в 04:08

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

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

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

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

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

ВНИМАНИЕ:

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

  • "CAyourDomain": замените "yourDomain доменом вашей организации"
  • "state": укажите округ для тех, кто проживает за пределами США
  • "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 должен быть разрешен из

0
ответ дан 28 April 2020 в 11:49

Теги

Похожие вопросы