2017-06-04 6 views
0

私のGUI アプリケーションがWebsphereのTomcatとCAS(中央認証)上にある2つの異なるサーバーに2つのアプリケーションがデプロイされています。私はkeystoreファイルを作成して、server.xmlのtomcat conf内で更新しました。Websphere + Tomcat:CertificateException

以下のエントリを見つけてください。

のTomcat:

<Environment name="config/centralCasServerLoginURL" 
type="java.lang.String" value="https://localhost:9443/my-sso-web/login? 
method=POST"/> 
Tomcat: <Environment name="config/applicationServiceURL" 
type="java.lang.String" value="https://localhost:8443/bank-client- 
web/j_spring_cas_security_check"/>* 

<Connector SSLEnabled="true" clientAuth="false" 
keystoreFile="C:\tmp\newKeystore1" 
     keystorePass="password" maxThreads="200" port="8443" 
     protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https" 
secure="true" sslProtocol="TLS"/>* 

私が個別にアプリケーションの両方を実行することですが、私はその時にCASAuthenticationプロファイルを設定したとき、私はCASにログインすることができていますが、それはにリダイレクトされた後私のGUIアプリケーションのURL(すなわちhttps://localhost:8443/bank-client-web/j_spring_cas_security_check)は、以下のエラーを投げています。

お手伝いできますか?

SEVERE: Servlet.service() for servlet [default] in context with path [/bank- 
client-web] threw exception 
java.lang.RuntimeException: javax.net.ssl.SSLHandshakeException: 
java.security.cert.CertificateException: No name matching localhost found 
    at org.jasig.cas.client.util.CommonUtils.getResponseFromServer(CommonUtils.java:295) 
    at org.jasig.cas.client.validation.AbstractCasProtocolUrlBasedTicketValidator.retrieveResponseFromServer(AbstractCasProtocolUrlBasedTicketValidator.java:33) 
    at org.jasig.cas.client.validation.AbstractUrlBasedTicketValidator.validate(AbstractUrlBasedTicketValidator.java:178) 
    at org.springframework.security.cas.authentication.CasAuthenticationProvider.authenticateNow(CasAuthenticationProvider.java:131) 
    at org.springframework.security.cas.authentication.CasAuthenticationProvider.authenticate(CasAuthenticationProvider.java:117) 
    at org.springframework.security.authentication.ProviderManager.doAuthentication(ProviderManager.java:130) 
Caused by: javax.net.ssl.SSLHandshakeException: 
java.security.cert.CertificateException: No name matching localhost found 
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) 
    at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1949) 
    at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302)  
Caused by: java.security.cert.CertificateException: No name matching localhost found 
    at sun.security.util.HostnameChecker.matchDNS(HostnameChecker.java:221) 
    at sun.security.util.HostnameChecker.match(HostnameChecker.java:95) 
    ... 55 more 

答えて

0

これは、WebSphereの証明書が有効ですホストにURLには「localhost」を比較し、単に厳格なホスト名の検証をpeformingあなたのクライアント側ライブラリです。

最も単純な修正は、このサーバーをローカルホストではなく実際のホスト名でアドレス指定することです。

+0

こんにちは、お返事ありがとうございます。もっと詳しく教えていただけますか? – java

+0

私はまずURLの下で実行しています。それは次に、下にリストされている2番目のURLにリダイレクトされます。ここで、ブラウザはまずCASの資格情報を要求し、その後、資格情報がGUIアプリケーションにリダイレクトされ、ここで失敗します。 CASがインストールされている私のwebsphereサーバーもローカルマシン上にあるので、localhostを使用しています。 1)https:// localhost:8443/bank-client-web/ 2)https:// localhost:9443/dcisc-sso-web/login?method = POST&service = https%3A%2F%2Flocalhost%3A8443% 2Fbank-client-web%2Fj_spring_cas_security_check%3Bjsessionid%3D04318CA2CBDCACE83383342B5855DB78 – java