Otrzymany alarm fatal: handshake failure przez SSLHandshakeException

Mam problem z autoryzowanym połączeniem SSL. Stworzyłem akcję Struts, która łączy się z zewnętrznym serwerem z autoryzowanym certyfikatem SSL klienta. W mojej akcji staram się wysłać niektóre dane do serwera bankowego, ale bez powodzenia, ponieważ mam w wyniku z serwera następujący błąd:

error: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

Moja metoda z mojej klasy akcji, która wysyła dane do serwera

//Getting external IP from host
    URL whatismyip = new URL("http://automation.whatismyip.com/n09230945.asp");
    BufferedReader inIP = new BufferedReader(new InputStreamReader(whatismyip.openStream()));

    String IPStr = inIP.readLine(); //IP as a String

    Merchant merchant;

    System.out.println("amount: " + amount + ", currency: " + currency + ", clientIp: " + IPStr + ", description: " + description);

    try {

        merchant = new Merchant(context.getRealPath("/") + "merchant.properties");

    } catch (ConfigurationException e) {

        Logger.getLogger(HomeAction.class.getName()).log(Level.INFO, "message", e);
        System.err.println("error: " + e.getMessage());
        return ERROR;
    }

    String result = merchant.sendTransData(amount, currency, IPStr, description);

    System.out.println("result: " + result);

    return SUCCESS;
Mój kupiec.Plik Właściwości:
bank.server.url=https://-servernameandport-/
https.cipher=-cipher-

keystore.file=-key-.jks
keystore.type=JKS
keystore.password=-password-
ecomm.server.version=2.0

encoding.source=UTF-8
encoding.native=UTF-8

Po raz pierwszy myślałem, że to certyfikat problem, przerobiłem go .pfx do .jks, ale mam ten sam błąd, bez zmian.

Author: Roman C, 2011-06-15

16 answers

Awaria uścisku dłoni mogła nastąpić z różnych powodów:

  • niezgodne Pakiety szyfrów używane przez Klienta i serwer. Wymagałoby to od klienta użycia (lub włączenia) pakietu szyfrów obsługiwanego przez serwer.
  • Niekompatybilne wersje SSL w użyciu(serwer może akceptować tylko TLS v1, podczas gdy klient może używać tylko SSL v3). Ponownie, klient może być zmuszony upewnić się, że używa zgodnej wersji SSL / TLS protokół.
  • niekompletna ścieżka zaufania dla certyfikatu serwera; certyfikat serwera prawdopodobnie nie jest zaufany przez Klienta. Zwykle skutkowałoby to większym błędem, ale jest to całkiem możliwe. Zazwyczaj poprawką jest zaimportowanie certyfikatu CA serwera do sklepu zaufania klienta.
  • certyfikat jest wydawany dla innej domeny. Ponownie, spowodowałoby to bardziej szczegółowy komunikat, ale przedstawię tutaj poprawkę na wypadek, gdyby to była przyczyna. Uchwała w tej przypadkiem byłoby uzyskać serwer (nie wydaje się być twój), aby użyć poprawnego certyfikatu.

Ponieważ nie można określić podstawowej awarii, lepiej jest włączyć -Djavax.net.debug=all flaga, aby włączyć debugowanie nawiązanego połączenia SSL. Po włączeniu debugowania możesz określić, która aktywność w uścisku dłoni nie powiodła się.

Update

Bazując na dostępnych obecnie szczegółach, wydaje się, że problem wynika z niekompletnego ścieżka zaufania certyfikatu między certyfikatem wydanym na serwer a głównym CA. W większości przypadków dzieje się tak, ponieważ certyfikat głównego urzędu certyfikacji jest nieobecny w sklepie zaufania, co prowadzi do sytuacji, w której ścieżka zaufania certyfikatu nie może istnieć; certyfikat jest zasadniczo niezaufany przez Klienta. Przeglądarki mogą prezentować ostrzeżenie, aby użytkownicy mogli to zignorować, ale to samo nie ma miejsca w przypadku klientów SSL (takich jak Klasa HttpsURLConnection, ani żadnej biblioteki klienta HTTP, takiej jak Apache HttpComponents Client ).

Większość tych klas/bibliotek klienckich polegałaby na sklepie zaufania używanym przez JVM do walidacji certyfikatów. W większości przypadków będzie to plik cacerts w katalogu JRE_HOME/lib / security. Jeśli lokalizacja magazynu zaufania została określona przy użyciu właściwości systemowej JVM javax.net.ssl.trustStore, to przechowalnia w tej ścieżce jest zwykle tym używanym przez bibliotekę klienta. Jeśli masz wątpliwości, spójrz na swoją klasę Merchant i dowiedz się, jaka Klasa/biblioteka to używa do nawiązania połączenia.

Dodanie certyfikatu serwera wystawiającego CA do tego sklepu zaufania powinno rozwiązać problem. Możesz odwołać się do mojej odpowiedzi na powiązane pytanie dotyczące pobierania narzędzi do tego celu, aleJava keytool utility jest wystarczające do tego celu.

Ostrzeżenie: sklep zaufania to zasadniczo lista wszystkich CAs, którym ufasz. Jeśli wystawisz certyfikat, który nie należy do urzędu certyfikacji, którego nie zaufanie, a następnie połączenia SSL / TLS do witryn posiadających certyfikaty wydane przez ten podmiot mogą być odszyfrowane, jeśli klucz prywatny jest dostępny.

Aktualizacja # 2: zrozumienie wyjścia jsse trace

Keystore i truststore używane przez JVM są zwykle wymienione na samym początku, podobnie jak poniżej:]}
keyStore is : 
keyStore type is : jks
keyStore provider is : 
init keystore
init keymanager of type SunX509
trustStore is: C:\Java\jdk1.6.0_21\jre\lib\security\cacerts
trustStore type is : jks
trustStore provider is : 

Jeśli używany jest niewłaściwy truststore, musisz ponownie zaimportować certyfikat serwera do właściwego lub skonfigurować serwer aby użyć jednego z wymienionych (nie zaleca się, jeśli masz wiele JVMs, a wszystkie z nich są używane do różnych potrzeb).

Jeśli chcesz sprawdzić, czy lista certyfikatów trust zawiera wymagane certy, to istnieje sekcja dla tego samego, która zaczyna się od:

adding as trusted cert:
  Subject: CN=blah, O=blah, C=blah
  Issuer:  CN=biggerblah, O=biggerblah, C=biggerblah
  Algorithm: RSA; Serial number: yadda
  Valid from SomeDate until SomeDate

Musisz poszukać, czy CA serwera jest obiektem.

Proces uścisku dłoni będzie miał kilka istotnych wpisów (musisz znać SSL, aby je szczegółowo zrozumieć, ale w celu debugowania obecny problem, wystarczy wiedzieć, że handshake_failure jest zwykle zgłaszane w ServerHello.

1. ClientHello

Seria wpisów zostanie zgłoszona podczas inicjalizacji połączenia. Pierwsza wiadomość wysłana przez Klienta w konfiguracji połączenia SSL/TLS to wiadomość ClientHello, Zwykle zgłaszana w logach jako:

*** ClientHello, TLSv1
RandomCookie:  GMT: 1291302508 bytes = { some byte array }
Session ID:  {}
Cipher Suites: [SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, SSL_RSA_WITH_DES_CBC_SHA, SSL_DHE_RSA_WITH_DES_CBC_SHA, SSL_DHE_DSS_WITH_DES_CBC_SHA, SSL_RSA_EXPORT_WITH_RC4_40_MD5, SSL_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA]
Compression Methods:  { 0 }
***

Zwróć uwagę na używane zestawy szyfrów. To być może będzie musiało się zgodzić z wpisem w Twoim kupcu.właściwości plik, na tej samej konwencji może być zatrudniony przez Bibliotekę banku. Jeśli zastosowana konwencja jest inna, nie ma powodu do zmartwień, ponieważ ServerHello tak stwierdzi, jeśli pakiet szyfrów jest niezgodny.

2. ServerHello

Serwer odpowiada Serwerhello, które wskaże, czy konfiguracja połączenia może być kontynuowana. Wpisy w logach są zwykle następującego typu:

*** ServerHello, TLSv1
RandomCookie:  GMT: 1291302499 bytes = { some byte array}
Cipher Suite: SSL_RSA_WITH_RC4_128_SHA
Compression Method: 0
***

Zwróć uwagę na wybrany przez siebie pakiet szyfrów; jest to najlepszy pakiet dostępne zarówno dla serwera, jak i klienta. Zwykle pakiet szyfrów nie jest określony, jeśli wystąpi błąd. Certyfikat serwera (i opcjonalnie cały łańcuch) jest wysyłany przez serwer i znajduje się we wpisach jako:

*** Certificate chain
chain [0] = [
[
  Version: V3
  Subject: CN=server, O=server's org, L=server's location, ST =Server's state, C=Server's country
  Signature Algorithm: SHA1withRSA, OID = some identifer

.... the rest of the certificate
***

Jeśli weryfikacja certyfikatu się powiodła, znajdziesz wpis podobny do:

Found trusted certificate:
[
[
  Version: V1
  Subject: OU=Server's CA, O="Server's CA's company name", C=CA's country
  Signature Algorithm: SHA1withRSA, OID = some identifier

Jeden z powyższych kroków nie powiodłby się, co skutkowałoby handshake_failure, ponieważ uścisk dłoni jest zazwyczaj zakończony w tym etap (nie do końca, ale kolejne etapy uścisku dłoni zazwyczaj nie powodują awarii uścisku dłoni). Musisz dowiedzieć się, który krok nie powiódł się i opublikować odpowiednią wiadomość jako aktualizację pytania (chyba że już zrozumiałeś wiadomość i wiesz, co zrobić, aby ją rozwiązać).

 197
Author: Vineet Reynolds,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-14 02:06:21

Instalacja Java Cryptography Extension (JCE) Unlimited Strength (dla JDK7 | dla JDK8 ) naprawi ten błąd. Rozpakuj plik i postępuj zgodnie z readme, aby go zainstalować.

 18
Author: Simon Yu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-08 01:34:38

Nie wydaje mi się, aby to rozwiązywało problem dla pierwszego pytającego, ale dla googlerów przychodzących tu po odpowiedzi:


Na update 51, java 1.8 domyślnie zabrania szyfrów RC4, jak widać na stronie uwagi do wydania:

Bug Fix: zabronić RC4 cipher suites

RC4 jest teraz uważany za skompromitowany szyfr.

Pakiety szyfrów RC4 zostały usunięte z domyślnej listy pakietów szyfrów klienta i serwera w Oracle JSSE wdrożenie. Te pakiety szyfrów mogą być nadal włączone za pomocą metod SSLEngine.setEnabledCipherSuites() i SSLSocket.setEnabledCipherSuites(). Zobacz JDK-8077109 (Niepubliczny).

Jeśli twój serwer preferuje ten szyfr (lub używa tylko tego szyfru), może to wywołać handshake_failure w Javie.

Możesz przetestować połączenie z serwerem umożliwiające szyfrowanie RC4 (najpierw spróbuj bez argumentu enabled, aby sprawdzić, czy uruchamia handshake_failure, Następnie Ustaw enabled:

import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
import java.io.*;

import java.util.Arrays;

/** Establish a SSL connection to a host and port, writes a byte and
 * prints the response. See
 * http://confluence.atlassian.com/display/JIRA/Connecting+to+SSL+services
 */
public class SSLRC4Poke {
    public static void main(String[] args) {
        String[] cyphers;
        if (args.length < 2) {
            System.out.println("Usage: "+SSLRC4Poke.class.getName()+" <host> <port> enable");
            System.exit(1);
        }
        try {
            SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
            SSLSocket sslsocket = (SSLSocket) sslsocketfactory.createSocket(args[0], Integer.parseInt(args[1]));

            cyphers = sslsocketfactory.getSupportedCipherSuites();
            if (args.length ==3){
                sslsocket.setEnabledCipherSuites(new String[]{
                    "SSL_DH_anon_EXPORT_WITH_RC4_40_MD5",
                    "SSL_DH_anon_WITH_RC4_128_MD5",
                    "SSL_RSA_EXPORT_WITH_RC4_40_MD5",
                    "SSL_RSA_WITH_RC4_128_MD5",
                    "SSL_RSA_WITH_RC4_128_SHA",
                    "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA",
                    "TLS_ECDHE_RSA_WITH_RC4_128_SHA",
                    "TLS_ECDH_ECDSA_WITH_RC4_128_SHA",
                    "TLS_ECDH_RSA_WITH_RC4_128_SHA",
                    "TLS_ECDH_anon_WITH_RC4_128_SHA",
                    "TLS_KRB5_EXPORT_WITH_RC4_40_MD5",
                    "TLS_KRB5_EXPORT_WITH_RC4_40_SHA",
                    "TLS_KRB5_WITH_RC4_128_MD5",
                    "TLS_KRB5_WITH_RC4_128_SHA"
                });     
            }

            InputStream in = sslsocket.getInputStream();
            OutputStream out = sslsocket.getOutputStream();

            // Write a test byte to get a reaction :)
            out.write(1);

            while (in.available() > 0) {
                System.out.print(in.read());
            }
            System.out.println("Successfully connected");

        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }
}

1 - https://www.java.com/en/download/faq/release_changes.xml

 17
Author: motobói,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-02 18:59:35

Może się to zdarzyć również wtedy, gdy klient musi przedstawić certyfikat. Po tym, jak serwer wyświetli łańcuch certyfikatów, może się zdarzyć, co następuje:

3. Żądanie Certyfikatu Serwer wystawi żądanie certyfikatu od klienta. Żądanie wyświetli listę wszystkich certyfikatów, które serwer akceptuje.

*** CertificateRequest
Cert Types: RSA
Cert Authorities:
<CN=blah, OU=blah, O=blah, L=blah, ST=blah, C=blah>
<CN=yadda, DC=yadda, DC=yadda>
<CN=moreblah, OU=moreblah, O=moreblah, C=moreblah>
<CN=moreyada, OU=moreyada, O=moreyada, C=moreyada>
... the rest of the request
*** ServerHelloDone

4. Łańcuch Certyfikatów Klienta Jest to certyfikat, który klient wysyła na serwer.

*** Certificate chain
chain [0] = [
[
  Version: V3
  Subject: EMAILADDRESS=client's email, CN=client, OU=client's ou, O=client's Org, L=client's location, ST=client's state, C=client's Country
  Signature Algorithm: SHA1withRSA, OID = 1.2.840.113549.1.1.5
  ... the rest of the certificate
*** ClientKeyExchange, RSA PreMasterSecret, TLSv1    
... key exchange info 

Jeśli w łańcuchu nie ma certyfikatu a serwer tego wymaga, Tutaj dostaniesz błąd uścisku dłoni. Prawdopodobną przyczyną jest to, że ścieżka do certyfikatu nie została znaleziona.

5. Certificate Verify Klient prosi serwer o weryfikację certyfikatu

*** CertificateVerify
... payload of verify check

Ten krok nastąpi tylko wtedy, gdy wysyłasz certyfikat.

6. Zakończone Serwer odpowie odpowiedzią verify

*** Finished
verify_data:  { 345, ... }
 14
Author: Brig,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-13 15:32:09

Awaria uścisku dłoni może być błędną implementacją protokołu TLSv1.

W naszym przypadku pomogło to z Javą 7:

java -Dhttps.protocols=TLSv1.2,TLSv1.1,TLSv1 

Jvm będzie negocjować w tej kolejności. Serwery z najnowszą aktualizacją zrobią 1.2, te buggy zejdą do v1 i to działa z podobną v1 w Javie 7.

 7
Author: Bela Vizy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-28 15:16:40

Mam ten błąd podczas próby użycia JDK 1.7. Kiedy uaktualniłem mój JDK do jdk1.8. 0_66 wszystko zaczęło działać dobrze.

Więc najprostszym rozwiązaniem tego problemu może być - Zaktualizuj swój JDK i może zacząć działać dobrze.

 6
Author: Maxim Votyakov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-10 11:40:44

Zakładając, że używasz odpowiednich protokołów SSL / TLS, prawidłowo skonfigurowałeś swoje keyStore i trustStore i potwierdziłeś, że nie ma żadnych problemów z samymi certyfikatami, być może będziesz musiał wzmocnić swoje algorytmy bezpieczeństwa .

Jak wspomniano w odpowiedzi Vineeta , jednym z możliwych powodów otrzymania tego błędu jest użycie niezgodnych zestawów szyfrów. Aktualizując moje local_policy i US_export_policy słoiki w folderze security mojego JDK tymi dostarczonymi w Java Cryptography Extension (JCE) , udało mi się pomyślnie zakończyć uścisk dłoni.

 3
Author: heez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:26:23

Spotykam się dziś z tym samym problemem z Klientem OkHttp, aby uzyskać adres URL oparty na https. To było spowodowane przez wersję protokołu Https i niedopasowanie metody szyfrowania pomiędzy stroną serwera a stroną klienta.

1) Sprawdź wersję protokołu https i metodę szyfrowania witryny.

openssl>s_client -connect your_website.com:443 -showcerts

Otrzymasz wiele szczegółowych informacji, kluczowe informacje są wymienione w następujący sposób:

SSL-Session:
    Protocol  : TLSv1
    Cipher    : RC4-SHA
2) Skonfiguruj klienta http, na przykład w przypadku OkHttp client :
@Test()
public void testHttpsByOkHttp() {
    ConnectionSpec spec = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS)
            .tlsVersions(TlsVersion.TLS_1_0) //protocol version
            .cipherSuites(
                    CipherSuite.TLS_RSA_WITH_RC4_128_SHA, //cipher method
                    CipherSuite.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
                    CipherSuite.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
                    CipherSuite.TLS_DHE_RSA_WITH_AES_128_GCM_SHA256)
            .build();

    OkHttpClient client = new OkHttpClient();
    client.setConnectionSpecs(Collections.singletonList(spec));
    Request request = new Request.Builder().url("https://your_website.com/").build();
    try {
        Response response = client.newCall(request).execute();
        if(response.isSuccessful()){
            logger.debug("result= {}", response.body().string());
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}
To dostanie to, czego chcemy.
 2
Author: Armstrongya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-14 17:00:15

Znalazłem serwer HTTPS, który nie powiódł się w ten sposób, jeśli mój proces Klienta Java był skonfigurowany z

-Djsse.enableSNIExtension=false

Połączenie nie powiodło się z handshake_failure Po pomyślnym zakończeniu ServerHello, ale przed uruchomieniem strumienia danych.

Nie było wyraźnego Komunikatu o błędzie, który zidentyfikował problem, błąd wyglądał po prostu jak

main, READ: TLSv1.2 Alert, length = 2
main, RECV TLSv1.2 ALERT:  fatal, handshake_failure
%% Invalidated:  [Session-3, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384]
main, called closeSocket()
main, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

Wyizolowałem problem, próbując z i bez opcji "-Djsse.enableSNIExtension=false "

 2
Author: Rich,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-25 14:02:48

Mój był TLS wersja niezgodna błąd.

Poprzednio to było TLSv1 zmieniłem to TLSV1.2 to rozwiązało mój problem.

 1
Author: Ali786,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-14 13:13:38

Używam com.google.klient http api. Kiedy komunikuję się z wewnętrzną stroną firmową, mam ten problem, gdy omyłkowo użyłem https zamiast http.

main, READ: TLSv1.2 Alert, length = 2
main, RECV TLSv1.2 ALERT:  fatal, handshake_failure
main, called closeSocket()
main, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
main, IOException in getSession():  javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
main, called close()
main, called closeInternal(true)
262 [main] DEBUG org.apache.http.impl.conn.DefaultClientConnection  - Connection shut down
main, called close()
main, called closeInternal(true)
263 [main] DEBUG org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager  - Released connection is not reusable.
263 [main] DEBUG org.apache.http.impl.conn.tsccm.ConnPoolByRoute  - Releasing connection [HttpRoute[{s}->https://<I-replaced>]][null]
263 [main] DEBUG org.apache.http.impl.conn.tsccm.ConnPoolByRoute  - Notifying no-one, there are no waiting threads
Exception in thread "main" javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
    at sun.security.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:431)
    at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128)
    at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:339)
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:123)
    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:147)
    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:108)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:415)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:576)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:554)
    at com.google.api.client.http.apache.ApacheHttpRequest.execute(ApacheHttpRequest.java:67)
    at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:960)
 1
Author: thebiggestlebowski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-17 01:56:25

Miałem podobny problem; aktualizacja do Apache HTTPClient 4.5.3 go naprawiono.

 1
Author: Hazel Troost,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-05 00:46:55

W moim przypadku cert jest importowany, błąd pozostaje, rozwiązałem to dodając System.setProperty("https.protocols", "TLSv1.2,TLSv1.1,SSLv3"); przed connect

 1
Author: molly gu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-04 09:03:10

Ugg! Okazało się to dla mnie po prostu problemem w wersji Java. Dostałem błąd uścisku dłoni za pomocą JRE 1.6 i wszystko działało idealnie za pomocą JRE 1.8.0_144.

 1
Author: John,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-30 13:28:13

Zastrzeżenie: nie jestem świadomy, czy odpowiedź będzie pomocna dla wielu osób, po prostu dzielenie się, ponieważ może .

Otrzymywałem ten błąd podczas używania Parasoft SOATest do wysyłania żądania XML (SOAP) .

Problem polegał na tym, że wybrałem zły alias z rozwijanego menu po dodaniu certyfikatu i uwierzytelnieniu go.

 0
Author: user3251882,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-28 09:55:14

W moim przypadku strona może po prostu użyć TLSv1. 2. a ja używam apache httpclient 4.5.6, używam tego kodu i instaluję jce aby to rozwiązać (JDK1. 7):

Jce

Jdk7 http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html

Jdk 8 http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

Kod:

SSLContext sslContext = SSLContext.getDefault();

  SSLConnectionSocketFactory sslConnectionFactory = new SSLConnectionSocketFactory(
      sslContext,
      new String[]{"TLSv1.2"}, // important
      null,
      NoopHostnameVerifier.INSTANCE);

  Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create()
      .register("https", sslConnectionFactory)
      .register("http", PlainConnectionSocketFactory.INSTANCE)
      .build();

  HttpClientConnectionManager ccm = new BasicHttpClientConnectionManager(registry);
  httpclient = HttpClientBuilder.create().
      .setSSLSocketFactory(sslConnectionFactory)
      .setConnectionManager(ccm)
      .build();
 0
Author: Tianmu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-24 08:45:50