B2B 인 웹 서비스에 대해 SSL 연결을 설정하려고하며 서버에서 클라이언트 인증을 수행해야합니다. 서버는 일반 사용자가 브라우저를 통해 액세스 할 수있는 URL을 호스트하기 때문에 호스트에 대한 모든 연결이 클라이언트 인증을 수행해야하는 것은 아닙니다. 특정 URL 만 client-auth가 발신자 X509 인증서의 유효성을 검사하도록 요구합니다. 그래서 우리는 우리의 서명 CERT는 내가 제공 할 수 있습니다 당신은 내가 키 스토어가 구성한 볼 수 있듯이Java App Server 용 사용자 정의 SSL TrustManager
<Connector protocol="HTTP/1.1" SSLEnabled="true"
port="8443" address="${jboss.bind.address}" sslProtocol = "TLS"
scheme="https" secure="true" enableLookups="true" clientAuth="false"
keystoreFile="${jboss.server.home.dir}/conf/.myKeyStore"
keystorePass="password1" />
: 우리는 I 커넥터 구성과 같이 그래서 톰캣 5.x를 기반으로 보스 전 5.x를 사용하는 클라이언트 인증을 필요로하는 특정 URL로 clientAuth = 거짓과 같이 web.xml을 구성 할 것이다있다 : 나는 실제로이 또한 내가 위의 커넥터 구성의 경우 작동시킬 수있는 사용자 정의 JAAS 로그인 모듈을 통해
<security-constraint>
<web-resource-collection>
<web-resource-name>clientAuthResources</web-resource-name>
<url-pattern>/clientauth/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>authOnly</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>
<realm-name>myRealm</realm-name>
</login-config>
<security-role>
<role-name>authOnly</role-name>
</security-role>
클라이언트 인증서가있는 특정 트러스트 스토어 그것이 바로 내 문제입니다. 우리 애플리케이션의 설치와 확장 방법을 감안할 때 각 jboss 애플리케이션 서버 설정은 사용자의 특정 구분을 지원하며 파일 시스템의 모든 곳에서 신뢰 저장소를 구성하는 것을 원하지 않습니다. 신뢰할 수있는 인증서를 데이터베이스의 코드에 동적으로로드해야합니다. 커스텀 JAAS 로그인 moduble는 웹 레벨에서 이것을 수행하고 역할도 할당하지만 로그인 모듈은 결코 호출되지 않고 커넥터 트러스트 스토어없이 HTTP 연결이 완료되기 전에 SSL 레벨에서 연결이 종료됩니다.
웹에 대한 많은 연구 끝에 SSLContext/SSLSocketFactory에 구성된 맞춤 X509TrustManager가 필요하다는 결론을 얻었습니다. 이 커스텀 트러스트 매니저는 우리 데이터베이스에 저장되어있는 클라이언트 인증서를 검증 할 것입니다. 나는이 사용자 지정 트러스트 관리자를 만들었지 만 연결하지 못하는 것 같습니다. 누구든지 jboss 또는 tomcat 5.x에서이를 구성하는 방법을 알고 있습니까? Tomcat 7에서 다음 구성이 connector, trustManagerClassName에서 사용 가능하다는 것을 알았지 만, 그 옵션은 나를위한 옵션이 아닙니다. 나는 그것이 가능하다고 가정하고, 어떤 도움이 대단히 감사하겠습니다.