Я настроил JBOSS 5 с SSLVerifyClient = "require"
- Клиент содержит сертификаты CA сервера и собственные сертификаты (JDK 1.8).
- Сервер содержит сертификаты CA клиента и там собственные сертификаты (JDK 1.6).
В этом случае оба CA различны, когда мы пытаемся связаться с этим сервером и получаем ошибку расшифровки предупреждений tlsv1
Я не знаю, что это было за исключением?
Во время Curl,
Unknown SSL protocol error in connection
Во время OpenSSL:
SSL_connect:SSLv3 write change cipher spec A
SSL_connect:SSLv3 write finished A
SSL_connect:error in SSLv3 flush data
New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA
Вероятно, проблема (оценка основана на выходных данных OpenSSL) в том, что используемый режим алгоритма не поддерживается другой стороной или считается устаревшим / нарушенным (например, TLSv1 считается устаревшим более года.)
Я бы рекомендовал захватывать рукопожатие с помощью tcpdump / wirehark. Поскольку кажется, что рукопожатие не удается, вы должны иметь возможность изучить незашифрованную фазу рукопожатия. В противном случае, поскольку у вас есть доступ к закрытым ключам для сертификатов, вы также сможете расшифровать перехваченные сообщения в wirehark.
Если несоответствие поддерживаемых алгоритмов не является проблемой, мое второе предположение связано с DNS. В некоторых случаях недостаточно, чтобы клиент подтвердил свою личность с помощью сертификата, но должно быть соответствие, например, между его записью DNS (PTR) и полем CommonName в сертификате.