2016-03-28 35 views
0

Glassfish'te barındırılan 2 farklı sunucuda (1) 2 uygulama yüklü bir uygulama var (2) bir toplu iş sunucusu (bağımsız bir java uygulaması). Her iki uygulama da harici bir sunucuyu aramak için ortak bir java programı (jar dosyası biçiminde) kullanıyor. Bu harici üçüncü taraf sunucusuna bağlantı yapmak için 'CloseableHttpClient' kullanıyorum. sun.security.validator: sunucumdan bir (glassfish) Arayıp toplu sunucusunda harici sunucuya aynı programdan yanıt almak mümkün duyuyorum dan SSL exceptoionSertifika cacert dosyasında mevcut ancak ssl istisnası atılıyor

javax.net.ssl.SSLHandshakeException altına atıyor .ValidatorException: PKIX yol oluşturma başarısız oldu: sun.security.provider.certpath.SunCertPathBuilderException: com.sun.net.ssl.internal.ssl.Alerts.getSSLException adresinde istenen hedef için geçerli bir sertifika yolu bulamıyor (Alerts.java:174) com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal (SSLSocketImpl.java:1747 de) ) com.sun.net.ssl.internal.ssl.Handshaker.fatalSE (Handshaker.java:241 de ) com.sun.net.ssl.internal.ssl.Handshaker.fatalSE (H adresinde bulunan) com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate (ClientHandshaker.java:1209) adresindeki com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage (ClientHandshaker) adresindeki numaralı makalede bulabilirsiniz. java: 135) com.sun.net.ssl.internal.ssl.Handshaker.processLoop adresinde (Handshaker.java:593) com.sun.net.ssl.internal.ssl.Handshaker.process_record (Handshaker.java: 529) com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord (SSLSocketImpl.java:943) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake (SSLSocketImpl.java:1188) com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake (SSLSocketImpl.java:1199) de com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake (SSLSocketImpl.java:1215) de org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket de org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket (SSLConnectionSocketFactory.java:290) (SSLConnectionSocketFactory.java:259) org.apache de de. http.impl.conn.HttpClientConnectionOperator.connect (HttpClientConnectionOperator.java:125) org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect (PoolingHttpClientConnectionManager.java:319) org.apache.http.impl.execchain en de . Org.apache.http.impl.execchain.MainClientExec.execute (MainClientExec.java:219) adresindeki org.apache.http.impl.execchain.ProtocolExec.execute adresindeki MainClientExec.establishRoute (MainClientExec.java:363) (ProtocolExec. java: 195) org.apache.http.impl.execchain.RetryExec.execute adresindeki (RetryExec.java:86) 012 org.apache.http.impl.client.InternalHttpClient.doExecute de org.apache.http.impl.execchain.RedirectExec.execute (RedirectExec.java:108) (InternalHttpClient.java:184) org.apache en de. com.csid.sms.util.postup adresinde org.apache.http.impl.client.CloseableHttpClient.execute (CloseableHttpClient.java:106) adresinde http: // PostUpRestClient.executeRequest (PostUpRestClient.java:169) com.csid.sms.util.postup.PostUpRestClient.executeJsonRequest de com.csid.sms.util.postup.PostUpRestClient.executeJsonPost (PostUpRestClient.java:134) de (PostUpRestClient. java: 106) com.csid.sms.util.postup.PostUpEmailRoute.triggerMessage (PostUpEmailRoute.java:213) adresinde yer alan itm.mo itm.monitor.SummaryEmailRoute.sendEmail (SummaryEmailRoute.java:49) de com.csid.sms.messaging.MessagingHandler.triggerMessage (MessagingHandler.java:60) de nitor.SummaryEmailPostupRoute.triggerMessage (SummaryEmailPostupRoute.java:154) de itm.monitor.BatchEmailProcessor.sendEmail (BatchEmailProcessor.java:105) , itm.monitor.BatchEmailProcessor.call adresinde (BatchEmailProcessor.java: 51) java.util.concurrent.FutureTask $ Sync.innerRun (FutureTask.java:303) adresindeki java.util.concurrent.FutureTask adresinde yer alan itm.monitor.BatchEmailProcessor.call (BatchEmailProcessor.java:33) adresinde . java.util.concurrent.FutureTask $ Sync.innerRun de java.util.concurrent.Executors $ RunnableAdapter.call (Executors.java:439) (FutureTask.java:303) en çalıştırma (FutureTask.java:138) java.util.concurrent.FutureTask.run (FutureTask.java:138) java.util.concurrent.ThreadPoolExecutor adresinde çalışan Worker_runTask (ThreadPoolExecutor.java:895) java.util.concurrent.ThreadPoolExecutor $ Worker.run ThreadPoolExecutor.java:918) java.lang.Thread.run adresinden (Thread.java:662) Nedeni: sun.security.validator.ValidatorExce ption: PKIX yolu oluşturulamadı: sun.security.provider.certpath.SunCertPathBuilderException: sun.security.validator.PKIXValidator.doBuild (PKIXValidator.java:323) adresinde belirtilen hedefe geçerli sertifika yolunu bulamadı. validator.PKIXValidator.engineValidate (PKIXValidator.java:217) at sun.security.validator.Validator.validate (Validator.java:218) com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate (X509TrustManagerImpl. java: 126) com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted (X509TrustManagerImpl.java:209) adresinde com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted (X509TrustManagerImpl.java: 249) com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate (ClientHandshaker.java:1188) ... 37 daha Neden Olduğu: sun.security.provider.certpath.SunCertPathBuilderException: sun.security.provider.certpath.SunCertPathBuilder.engineBuild (SunCertPathBuilder.java:174) talep hedefe için geçerli sertifika yolunu bulamayan java.security.cert.CertPathBuilder.build (CertPathBuilder.java:238) sun.security.validator.PKIXValidator.doBuild (PKIXValidator.java:318) de ... 43 daha

Not - Bu Özel durum, yalnızca sunucu sunucusundan (cambağada barındırılan) olmayan toplu sunucudan atılıyor.

Bu hatayı düzenledikten sonra, dış sunucu tarafından alınan sertifikanın bazı güvenilen yetkililer tarafından verilemeyebileceğini, dolayısıyla 'installCert' (this java program) kullanarak sertifikayı aldığımı tespit ettiniz.

Şimdi

keytool -list -keystore

cacerts ve ben dış sertifika güvenilen sertifikalar listesinde olduğunu görebilirsiniz keytool komutunu kullanarak cacert sertifikayı doğrulandı. ancak hala SSL istisnasının üstesinden geliyor.

Düşünceleriniz var mı? Neden aynı java kodunu kullanan yönetici sunucusundan (glassfish) herhangi bir SSL beklentisi almıyorum? Glassfish, tarayıcıların yaptığı gibi otomatik olarak sertifika alır mı?

cevap

0

Toplu iş programınız ve yönetici uygulamanız, farklı JRE'ler kullandıklarından farklı şekilde davranıyor olabilir. Her JRE'nin kendi özetleri vardır.

+0

Her ikisi de farklı JRE kullanıyor ve ben de JRE sunucu kontrolünü kontrol ediyorum ve sertifika var. – vermap

0

JRE'nin gerçekten sertifikayı aldığınız güven deposunu kullanıp kullanmadığını doğrulamanız gerekir.
JVM çalışma zamanı argümanını "-Djavax.net.debug = all" ekleyin ve sunucuyu yeniden başlatın.Bu, sunucu başlatıldığında JVM tarafından yüklenen güven mağazalarını yazdıracaktır.

İlgili konular