Как устранить ошибку "Сертификат недействителен и не может быть использован для проверки личности этого сайта"?
Вопрос в том, как решить ошибку "Сертификат недействителен и не может быть использован для проверки личности этого веб-сайта".,
Вот подробности:
У меня есть подписанный апплет, который работал нормально, пока я не обновил Java до 8u25 (1.8.0_25-b18). Теперь приложение отображает предупреждающее сообщение "Хотите продолжить? Соединение с этим сайтом ненадежное". В этом сообщении также есть примечание "The certificate is not valid and cannot be used to verify the identity of this website
".
Апплет загружается без проблем. Но когда пользователь пытается использовать определенную функцию этого приложения, отображается предупреждение.
Я проверял консоль Java, когда это происходит, и это предупреждающее сообщение отображается сразу после этих строк:
security: Obtain certificate collection in SSL Root CA certificate store
security: Invalid certificate from HTTPS server
network: Cache entry not found [url: https://sub.domain.net:9876, version: null]
Приложение загружается с другого домена, например, " https://app.domain.net/.....", поэтому файлы с " https://sub.domain.net:9876/" не загружаются, но Апплет подключается к " https://sub.domain.net:9876/" для отправки / получения данных.
Апплет подписан правильно, и пока он соответствует всем требованиям безопасности в соответствии с Java. Эта проблема, кажется, возникает, когда приложение пытается внутренне подключиться с помощью URL-адреса HTTPS, например https://sub.domain.net:9876
, Сертификат SSL этих сайтов действителен, выдан GoDaddy и срок его действия не истек.
Опять же, это начало происходить после обновления моей JRE до 8u25. Я протестировал добавление неверного URL в список исключений безопасности Java, но безуспешно.
Вот несколько скриншотов этой проблемы:
Это предупреждение отображается:
Изменить 18.10.2014:
Вопрос размещен также в "Сообществе Oracle", чтобы расширить возможности ответа: Вопрос в сообществе Oracle.
Изменить 21.10.2014:
Я заметил это: когда я нажимаю ссылку "Дополнительная информация", отображаемую в диалоговом окне "Предупреждение безопасности", отображаемая причина говорит:
Приложение загружается с сайта, отличного от указанного в сертификате безопасности.
Скачивание с "sub.domain.net"
Ожидается "*.DOMAIN.NET"
Это сообщение говорит, что приложение ЗАГРУЖАЕТСЯ с "sub.domain.com", и это неверно. Приложение (апплет) уже загружено, и оно использует этот домен только во внутреннем HTTPS-запросе для получения / отправки бизнес-данных, а не для загрузки дополнительных файлов JAR, JNLP и т. Д.
2 ответа
Я нашел, как решить эту проблему, и спасибо Steffen Ullrich за правильное предложение.
Это связано со значением общего имени сертификата (CN). В моем случае это значение было *.DOMAIN.NET
и изменить его на *.domain.net
все, что нам нужно было сделать - это процедура "Передача домена". Это означает, что изменить CN на *.REKEY.DOMAIN.NET
, а затем изменить его снова на *.domain.net
, Мы не могли бы изменить его на *.domain.net
напрямую, потому что провайдер сертификатов говорит *.DOMAIN.NET
а также *.domain.net
подобные.
Теперь эта проблема возникла только в Java 7.71 и Java 8.25. Предыдущие версии Java 7 и 8 не имеют этой проблемы (ограничения сертификата SSL для CN в другом корпусе).
В любом случае, это решило проблему, и теперь мы получаем нежное информационное сообщение о домене:
Если вы доверяете сертификату и веб-сайту, к которому обращаетесь, нажмите "Продолжить", чтобы пропустить это сообщение.
Однако, если вы АБСОЛЮТНО не доверяете этому веб-сайту, это предупреждение о том, что вы не можете получить доступ к той странице, о которой думаете, и может представлять серьезную угрозу безопасности. Вот почему он предупреждает вас. "Подстановочный сертификат", если это действительно возможно, будет плохой идеей, если он не ограничивается очень конкретным и ограниченным набором доменов.
Я сомневаюсь, что это с учетом регистра.