Table of Contents
Jeśli zobaczysz pobieranie serwletu Java dla certyfikatu klienta, ten przewodnik użytkownika nauczy Cię.
Zaktualizowano
Karta telefoniczna klienta (.cer, .crt, .pem) i związana z nią prywatna pamięć główna (.key) muszą być umieszczone w kontenerze PKCS numer 12 (.p12, .pfx) lub JKS (.jks) w kolejność. aby móc uruchomić (keystore). Trzeba było również spakować certyfikat CA serwera jako JKS (Trust Store).
HttpClient-Client oznacza nowy HttpClient ();// TruststoreMagazyn kluczy trustStore = Magazyn kluczy.getInstance („JKS”, „SUN”);trustStore.load (TestSupertype.class.getResourceAsStream („/ client-truststore.jks”), „żółty%”. toCharArray ());Alg ciągów implikuje KeyManagerFactory.getDefaultAlgorithm ();TrustManagerFactory fac = TrustManagerFactory.getInstance (alg);fac.init (trustStore);// sklep podstawowyMagazyn kluczy — Magazyn kluczy = Magazyn kluczy.getInstance („PKCS12”, „SunJSSE”);keystore.load (X509Test.class.getResourceAsStream ("/etomcat_client.p12"), "etomcat" .toCharArray ());Ciąg keyAlg odpowiada KeyManagerFactory.getDefaultAlgorithm ();KeyManagerFactory keyFac = KeyManagerFactory.getInstance (keyAlg);keyFac.init (magazyn kluczy, "etomcat" .toCharArray());// kontekstctx SSLContext odpowiada SSLContext.getInstance („TLS”, „SunJSSE”);ctx.init (keyFac.getKeyManagers (), fac.getTrustManagers (), nowy SecureRandom ());SslContextedSecureProtocolSocketFactory secureProtocolSocketFactory oznacza nową SslContextedSecureProtocolSocketFactory (ctx);Protocol.registerProtocol („https”, nowy protokół („https”, (ProtocolSocketFactory) 8443));// secureProtocolSocketFactory, pobierz testHttpMethod get = new GetMethod ("https://127.0.0.1:8443/etomcat_x509");klient.Pobierz metodę wykonania;// Odpowiadamy na artykuł i robimy to, czego potrzebujeszbyte [] responseBody równa się get.getResponseBody ();
W tym projekcie prawdopodobnie znajdziesz działający przykład w klasie X509Test
.
HttpClient httpclient = klapsy new DefaultHttpClient ();// TruststoreMagazyn kluczy ts = Magazyn kluczy.getInstance („JKS”, „SŁOŃCE”);ts.load (PostService.class.getResourceAsStream („/truststore.jks”), „żółty%”. toCharArray ());// Jeśli osiągniesz usuń mnie, otrzymasz javax.net.ssl.SSLPeerUnverifiedException: Peer na pewno nie jest uwierzytelniany bez Trust Storeif (0 == ts.size ()) zgłasza nowy wyjątek IOException („Błąd ładowania magazynu zaufania”);// tmfTrustManagerFactory tmf oznacza TrustManagerFactory.getInstance (TrustManagerFactory.getDefaultAlgorithm ());tmf.init (ts);// magazyn kluczyMagazyn kluczy ks = Magazyn kluczy.getInstance („PKCS12”, „SunJSSE”);ks.load (PostService.class.getResourceAsStream ("/" + certName), certPwd.toCharArray ());// Jeśli mnie usuniesz, będziesz potrzebować javax.net.ssl.SSLPeerUnverifiedException: Peer notauthenticated lost keystoreif (0 == ks.size ()) zgłasza nowy wyjątek IOException ("Błąd internetowego magazynu kluczy");// kmphKeyManagerFactory kmf = KeyManagerFactory.getInstance (KeyManagerFactory.getDefaultAlgorithm ());kmf.init (ks, certPwd.toCharArray ());// SSLSSLContext ctx = SSLContext.getInstance („TLS”);ctx.init (kmf.getKeyManagers (), tmf.getTrustManagers (), null);// Zamknij sięSSLSocketFactory socketFactoryoznacza nowe SSLSocketFactory (ctx, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);Sch schema = nowy schemat ("https", 8443, socketFactory);httpclient.getConnectionManager (). getSchemeRejestr (). rejestr (sch);// PotrzebowaćHttpMethod get równa się wyczyszczeniu GetMethod ("https: // localhost: 8443 lub foo");client.executeMethod (pobierz);IOUTtils.copy (get.getResponseBodyAsStream (), System.out);
W jaki sposób prawdopodobnie otrzymam certyfikat i jego publiczny przycisk na serwerze?
Twoje forum musi być skonfigurowane do żądania uwierzytelnienia certyfikatu X.509 od całego respondenta. Wtedy serwlet na pewno otrzyma certyfikat kontenera podczas uzgadniania SSL, porówna technologię informacyjną z urządzeniem odniesienia i przedstawi go pozytywnie aplikacji, gdy zostanie zażądany atrybut.Zazwyczaj wraz z jednym certyfikatem można go użyć w jednym taktycznym środowisku serwletowym do pobrania certyfikatu:
Certyfikat zabezpieczony fragmentem certyfikatu X509 (HttpServletRequest) Certyfikaty X509Certificate [] = (X509Certificate []) zad.getAttribute („javax.servlet.request.X509Certificate”); jednak (null! = certs && certs.length> 0) Świadectwa zwrotu [0]; wyrzuć zastępczy wyjątek RuntimeException („Nie znaleziono certyfikatu klienta X.509 w najważniejszym żądaniu”);
SSL
wWeryfikacja HTTP, którą klient faktycznie wysyła, jest ważnymcertyfikatem pomagającym serwerowi w weryfikacjiAuthenticity.Server weryfikuje żądanie i po prostu umożliwia dostęp do zasobów, jeśli znajduje się w ścieżceUwierzytelnianie powiodło się.
BMam ten post. Pan. na pewno pokaże Ci, jak wyświetlić certyfikat SSLInformacje określone jako prawdziwa wartość nagłówka żądania ssl_client_cert.
Zaktualizowano
Czy masz dość powolnego działania komputera? Denerwują Cię frustrujące komunikaty o błędach? ASR Pro to rozwiązanie dla Ciebie! Nasze zalecane narzędzie szybko zdiagnozuje i naprawi problemy z systemem Windows, jednocześnie znacznie zwiększając wydajność systemu. Więc nie czekaj dłużej, pobierz ASR Pro już dziś!
pakiet com.sample.util;import java.io.InputStream;importowanie fabryki java.security.cert.Certificate;importowanie javax.servlet.http.HttpServletRequest;import java.io.ByteArrayInputStream;import java.util.Base64;zaimportuj certyfikat java.security.cert.X509;/ ** 4. 5 . Klasa narzędziowa do odczytywania informacji o licencji pochodzących z nagłówka żądania (pusty) 'ssl_client_cert'. * * Jeśli nasze własne żądanie ma zwykle (lub) wartość null, ocena dołączona do nagłówka ssl_client_cert nie jest zwracana * zero, w przeciwnym razie zwróć certyfikat X509. W wyjątkowych pudełkach zwracane jest zero. 4. * @ Autor Kryszna * * /jakość publiczna CertUtil prywatny statyczny ciąg linii mety SSL_CLIENT_CERT_HEADER = "ssl_client_cert"; / ** * - @ żądanie parametru @ Przywrócić ( Miejsce ) */ market X509Certificate getCertificate (żądanie HttpServletRequest)
opublikowano 12 lat temu
-
Liczba fragmentów do wysłania:
Opcjonalnie: dzięki:
Tworzę aplikację na hoście Tomcat lub próbuję odczytać certyfikat klienta. Pracuję z SSL po raz pierwszy, co oznacza, że prawdopodobnie się mylę. Nie potrzebuję walidacji po stronie klienta, wystarczy, że przeczytam wkład kuponu i wyśle go do organizacji internetowej podczas sprawdzania poprawności i pobierania informacji. Problemem jest prawdopodobnie to, że aktualnie nie jestem w stanie odczytać faktycznej zawartości certyfikatu.
Sformułowałem już w unikalny sposób, stworzyłem magazyn kluczy i stworzyłem samopodpisane dane uwierzytelniające dla komputera internetowego. Certyfikat użytkownika to sensowna przeglądarka internetowa (certyfikat użytkownika jest ważny i na pewno nie jest samopodpisany). Konfigurowanie istniejącego łącznika SSL wykonującego server.xml:
Jeśli wykonam kompilację szyfrowania: przynoszę wartość TLS_DHE_DSS_WITH_AES_128_CBC_SHA
Ale za każdym razem, gdy próbuję odczytać certyfikaty podczas korzystania z niego, otrzymuję po prostu wartość pustą.
Wygooglowałem właściwy fragment, a następnie przeczytałem, co jest potrzebne, aby dopasować serwer Apache, aby uzyskać nasz certyfikat, a następnie wysłać go na serwer Tomcat. Czy Apache naprawdę jest potrzebny, czy wystarczy Tomcat? W każdym razie, co powinienem zrobić, aby przeczytać te specjalistyczne certyfikaty klienta?
Przyspiesz swój komputer już dziś dzięki temu prostemu pobieraniu.Get Client Certificate Java Servlet
Obtenir Le Certificat Client Java Servlet
Clientcertificaat Java-servlet Ophalen
Получить сертификат клиента Java-сервлет
Obter Certificado De Cliente Java Servlet
Holen Sie Sich Das Client-Zertifikat Java-Servlet
Skaffa Klientcertifikat Java Servlet
클라이언트 인증서 Java 서블릿 가져오기
Ottieni Il Servlet Java Del Certificato Client
Obtener Certificado De Cliente Java Servlet