SunJSSE -często zadawane pytania

Jak mogę debugować błądException in thread "main" javax.net.ssl.SSLHandshakeException: handshake failure?

Ten błąd może być spowodowany próbą użycia certyfikatów RACF ® z pakietem JSSE2 i określeniem hasła null podczas ładowania RACFInputStream i fabryki menedżera kluczy. W takim przypadku należy podać hasło dla fabryki produktu RACFInputStream i menedżera kluczy, a następnie zrestartować aplikację. Jeśli to działanie nie rozwiąże problemu, określ ewentualną przyczynę niepowodzenia uzgadniania, uzyskując dane śledzenia dla uzgadniania SSL. Aby przechwycić dane śledzenia dla uzgadniania SSL, należy podać opcję javax.net.debug=all podczas uruchamiania aplikacji. Ta opcja powoduje, że dane śledzenia mają być drukowane do programu stdout. Aby przechwycić dane, przekieruj dane wyjściowe do pliku śledzenia, tak jak przedstawiono to w poniższym przykładzie:
java -Djavax.net.debug=all MyTest >MyTest_trace.log 2>&1

W jaki sposób można debugować problem z certyfikatem RACF w systemie z/OS?

Po debugowaniu problemu RACF pierwszym krokiem jest zwykle wyświetlenie magazynu kluczy Java™ , który reprezentuje plik kluczy RACF w kodzie Java. Poniższe przykłady pokazują, że pojedyncza komenda jest rozłożona na wiele wierszy w celu uzyskania czytelności. Należy wprowadzić każdą z nich jako jedną komendę.
  • W poniższym przykładzie przedstawiono sposób wyświetlenia magazynu kluczy w przypadku uzyskiwania dostępu do pliku kluczy RACF jako magazynu kluczy JCERACFKS i przekierowywania danych wyjściowych do pliku (keystore_list.log):
    keytool -debug -list -storetype JCERACFKS 
    -keystore safkeyring://OwningUserID/KeyringName 
    -J-Djava.protocol.handler.pkgs=com.ibm.crypto.provider
    >keystore_list.log 2>&1
  • W poniższym przykładzie przedstawiono sposób wyświetlenia magazynu kluczy w przypadku uzyskiwania dostępu do pliku kluczy RACF jako magazynu kluczy JCECCARACFKS i przekierowywania danych wyjściowych do pliku (keystore_list.log):
    hwkeytool -debug -list -storetype JCECCARACFKS 
    -keystore safkeyring://OwningUserID/KeyringName 
    -J-Djava.protocol.handler.pkgs=com.ibm.crypto.hdwrCCA.provider
    >keystore_list.log 2>&1
Jeśli podejrzewasz problem z konfiguracją pliku kluczy RACF, wyświetl listę kluczy, a następnie każdą pozycję w pliku kluczy, korzystając z programu narzędziowego wiersza komend RACF RACDCERT. W poniższym przykładzie przedstawiono sposób wyświetlenia listy kluczy:
RACDCERT LISTRING('OwningUserID.KeyringName')
W poniższym przykładzie przedstawiono sposób wyświetlenia pozycji z etykietą MyCert :
RACDCERT LIST(LABEL('MyCert'))
Jeśli do zdiagnozowania problemu potrzebne są dodatkowe informacje, można włączyć śledzenie w kodzie Java, który obsługuje pierścień kluczy RACF. W poniższym przykładzie przedstawiono sposób pobrania tego śledzenia i przekierowania danych wyjściowych do pliku (MyTest_trace.log):
java -Djavax.net.debug=all -Djava.security.auth.debug=ibmjceracf MyTest >MyTest_trace.log 2>&1

W jaki sposób można debugować problem sprzętowy?

Jeśli podejrzewasz, że problem jest związany ze sprzętem, dane śledzenia, które są dostępne dla zespołu serwisowego IBM , powinny obejmować śledzenie zarówno dla dostawcy IBMJCECCA, jak i dla SSL. W poniższym przykładzie przedstawiono sposób pobrania tego śledzenia i przekierowania danych wyjściowych do pliku (MyTest_trace.log):
java -Djavax.net.debug=all -Djava.security.auth.debug=all MyTest >MyTest_trace.log 2>&1

Co to jestjavax.net.ssl.SSLHandshakeException: com.ibm.jsse2.util.g: End user tried to act as a CAWartość średnia?

Ten błąd występuje, gdy uzgadnianie jest wykonywane, a certyfikat ośrodka CA używany do uwierzytelniania nie ma rozszerzenia basicConstraints , które jest włączone w certyfikacie ośrodka CA. W ogólnym przypadku podczas tworzenia certyfikatów należy włączyć rozszerzenie ośrodka CA basicConstraints . W programie RACF utwórz certyfikat CA za pomocą składni RACDCERT CERTAUTH .... aby rozszerzenie basicConstraints było dołączone do parametru CA ustawionego na wartość true , a parametr PathLen na wartość niezerową, która jest odpowiednia dla łańcucha certyfikatów.

Co to znaczy, gdy po stronie klienta jest wysyłany błąd EOF po wysłaniu przez klienta hello?

Ten problem był widoczny w produkcie WebSphere® , gdy JSSE2 komunikował się z serwerem System SSL, a serwer System SSL nie miał pliku kluczy, który zawierał klucz prywatny.

Co to znaczy, kiedy dostaję sięcertificate verify message errorpo jednej stronie ibad_certificateWystąpił błąd po drugiej stronie?

Ten błąd zwykle oznacza, że nieograniczone pliki strategii są wymagane dla operacji, która jest podejmowana. Więcej informacji na temat plików strategii bezpieczeństwa zawiera sekcja Pliki strategii bezpieczeństwa pakietu SDK.

Jakie informacje należy zebrać przed skontaktowania się z zespołem serwisowym IBM z problemem związanym z SunJSSE?

Użytkownik może skrócić czas, jaki jest podejmowany w celu rozwiązania problemu, jeśli w danym przypadku zostaną uwzględnione wyniki następującej komendy:
java -version
Jeśli zespół serwisowy nie może rozwiązać problemu na podstawie opisu niesprawnego scenariusza i objawów niepowodzenia, należy pobrać dane śledzenia dla niepowodzenia. Aby przechwycić dane śledzenia dla niepowodzenia SSL, należy podać opcję javax.net.debug=all podczas uruchamiania aplikacji. Ta opcja powoduje, że dane śledzenia mają być drukowane do programu stdout. Aby przechwycić dane śledzenia, przekieruj dane wyjściowe do pliku śledzenia. W poniższym przykładzie przedstawiono sposób pobierania śledzenia SSL:
java -Djavax.net.debug=all MyTest >MyTest_trace.log 2>&1
Jeśli śledzenie jest potrzebne, zespół serwisowy poda instrukcje, w jaki sposób je przesłać.