SSLがサイト全体で機能し、クライアント/サーバーの認証がサイトの一部で実施されるようにApache Tomcatサーバーを設定しようとしています。顧客は信頼のために自分のルートCA(.crt形式)を私に与えました。彼らはhttps://<site>/sso/login
への接続を試みるためにクライアント証明書を使用し、認証されると、そのサイトはその部分とRESTfully対話できるようにする必要があります。SSLを使用したTomcatクライアント/サーバーの一部の認証
まず第一に、私はserver.xml
に、次のコネクターでSSLを使用するように設定されているサイトを持っているのApache Tomcat 6を使用しています:
<Connector port="443" SSLEnabled="true" maxThreads="16"
protocol="org.apache.coyote.http11.Http11NioProtocol"
scheme="https" secure="true"clientAuth="want"
sslProtocol="TLS" keystoreFile="C:\ssl\keystore"
keystorePass="***" truststoreFile="C:\ssl\keystore"
truststorePass="***"
/>
は、これは私が全体にSSLを望んでいることを意味すべきですクライアント証明書が「必要」になります。 SSO接続を開くのに役立つサイトの部分にはクライアント証明書が必要です。実際、SSLは正常に動作します。キーストアにGoDaddyで署名されたSSL証明書があります。クライアントの資格情報のニーズを持つSSO部分については
、バックserver.xml
に、私はメモリ領域を使用しています:
<Realm className="org.apache.catalina.realm.MemoryRealm" />
、tomcat-users.xml
に、私が使用することができます:
<role rolename="sso"/>
<user username="CN=***, OU=***, C=**" password="null" roles="sso"/>
を。 ..ここで、ユーザー名は顧客のクライアント証明書のDN情報と一致します。
(ユーザー名問題で間隔をしていますか?)そして、web.xml
に:
<security-constraint>
<web-resource-collection>
<web-resource-name>SSO</web-resource-name>
<url-pattern>/sso/login</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>sso</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>CLIENT-CERT</auth-method>
</login-config>
<security-role>
<role-name>sso</role-name>
</security-role>
最後に、私はここで
"%JAVA_HOME%\bin\keytool"
-import
-alias customer_root
-keystore "C:\ssl\keystore"
-trustcacerts
-file "C:\ssl\customer_root.crt"
-storepass "***"
を使用してkeystore
に顧客のルートCAを追加したことは、私の僕が結婚を決めたワケです。 .. https://<site>/sso/login
に行くと、クライアント認証は、試みられたがですが、HTTP 401エラーが発生します。だから私は何か間違ったことをした。
顧客は、「HTTP 401」よりも自分の側の認証に関する情報を私に与えることはできません。
私は、接続する目的のためにコード化したJavaクライアント経由で使用しようとしている許可されたクライアント鍵を使用して、自己署名付きCA鍵を設定して作成する多くのソースを使いましたサイトとPOSTは~/sso/login
になりますが、毎回再テスト/再パッケージ/再テストを実行します。少なくとも1回は接続できずにHTTP 401を取得します。
私はTomcatを正しく設定していないか、顧客のCAを正しく設定していませんが、私自身のクライアントをコーディングしてもわからないことがあります。私は困惑している。
上記の内容は間違っていますか?設定の一部が欠落していますか?