i get a load of stuff, but in the middle of the one before the error i get
Warning: no suitable certificate found - continuing without client authentication

On 25/10/2017 13:42, Matthew Broadhead wrote:
ahhh...
-Djavax.net.debug=all

On 25/10/2017 13:39, Matthew Broadhead wrote:
How would I enable the debug? services/idp/src/main/webapp/WEB-INF/security-config.xml <security:debug/>?

On 25/10/2017 13:37, Colm O hEigeartaigh wrote:
If you change it to "required" does it fail? If so, you could try running the Tomcat IdP with Java SSL debugging enabled and it should tell you why
the IdP can't connect to the STS.

Colm.

On Wed, Oct 25, 2017 at 12:34 PM, Matthew Broadhead <
[email protected]> wrote:

Hi Colm,

I realise now that this html file was included in the examples/samplekeys
directory in the code.  but i was taking it from the internet.

I am 100% using clientAuth="want" on my Tomcat connector but I am still
getting the same error over and again.  I can browse the wsdl without
having to provide a client certificate.  could you point me to the part of the idp-sts configuration which might be causing it to not ask for the keys
properly?  or is it definitely a tomcat server.xml issue?

On 25/10/2017 12:55, Colm O hEigeartaigh wrote:

You can see the HTML here:
https://htmlpreview.github.io/?https://raw.githubusercontent
.com/apache/cxf-fediz/master/examples/samplekeys/HowToGener
ateKeysREADME.html

I'll update the webpage to point to github instead of SVN.

Colm.

On Wed, Oct 25, 2017 at 11:39 AM, Matthew Broadhead <
[email protected]> wrote:

Hi Colm
Firstly is there somewhere to see these instructions correctly formatted
in html?
https://github.com/apache/cxf-fediz/blob/master/examples/sam
plekeys/HowToGenerateKeysREADME.html

Secondly there is a massive difference between
https://github.com/apache/cxf-fediz/blob/master/examples/sam
plekeys/HowToGenerateKeysREADME.html
and
http://svn.apache.org/viewvc/cxf/fediz/trunk/examples/sample
keys/HowToGenerateKeysREADME.html?view=co
(svn being the one linked from the main fediz pages)

On the SVN one it doesn't mention adding the MyTCRP.cer key to
ststrust.jks.

I have some more things to try now so I will let you know if I get
further

On 25/10/2017 12:11, Colm O hEigeartaigh wrote:

Why not try the simple Connector configuration I gave earlier but with
your
own keys?

Colm.

On Wed, Oct 25, 2017 at 11:04 AM, Matthew Broadhead <
[email protected]> wrote:

in Tomcat 8 https://tomcat.apache.org/tomcat-8.5-doc/config/http.html#

SSL_Support_-_Connector_-_NIO_and_NIO2 it says
clientAuth
This is an alias for the certificateVerification attribute of the
default
SSLHostConfig element.

then
certificateVerification
Set to required if you want the SSL stack to require a valid
certificate
chain from the client before accepting a connection. Set to optional if
you
want the SSL stack to request a client Certificate, but not fail if one isn't presented. Set to optionalNoCA if you want client certificates to
be
optional and you don't want Tomcat to check them against the list of trusted CAs. If the TLS provider doesn't support this option (OpenSSL
does,
JSSE does not) it is treated as if optional was specified. A none value (which is the default) will not require a certificate chain unless the client requests a resource protected by a security constraint that uses
CLIENT-CERT authentication.

so i changed clientAuth="want" to clientAuth="required". now i cannot
access the site at all with
Secure Connection Failed
An error occurred during a connection to domain.tld:9443. SSL peer
cannot
verify your certificate. Error code: SSL_ERROR_BAD_CERT_ALERT

maybe i should try using Tomcat 7?

On 25/10/2017 11:42, Colm O hEigeartaigh wrote:

The problem is that your Tomcat container hosting the STS is not asking

for
client authentication. You can check this by using a web browser or
curl
to
view the WSDL of the STS - if you can get it to work then the
configuration
is incorrect, as it should error on the browser not supplying a client
cert.

Colm.

On Tue, Oct 24, 2017 at 12:57 PM, Matthew Broadhead <
[email protected]> wrote:

i spoke too soon.

i am completely stuck with the same stack trace and no amount of
reloading
the certificates is helping.  is there any way to debug what the
actual
problem is?

2017-10-24 12:55:58,155 [https-openssl-apr-9443-exec-2] WARN
org.apache.cxf.phase.PhaseInterceptorChain  - Interceptor for {
http://docs.oasis-open.org/ws-sx/ws-trust/200512/}SecurityT
okenService#{http://docs.oasis-open.org/ws-sx/ws-trust/200512/}Issue
has
thrown exception, unwinding now
org.apache.cxf.binding.soap.SoapFault: Problem writing SAAJ model to stream: RequireClientCertificate is set, but no local certificates
were
negotiated.  Is the server set to ask for client authorization?
        at org.apache.cxf.binding.soap.sa
aj.SAAJOutInterceptor$SAAJOutE
ndingInterceptor.handleMessage(SAAJOutInterceptor.java:224)
        at org.apache.cxf.binding.soap.sa
aj.SAAJOutInterceptor$SAAJOutE
ndingInterceptor.handleMessage(SAAJOutInterceptor.java:174)
        at org.apache.cxf.phase.PhaseInte
rceptorChain.doIntercept(Phase
InterceptorChain.java:308)
        at org.apache.cxf.endpoint.Client
Impl.doInvoke(ClientImpl.java:
518)
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:
427)
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:
328)
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:
281)
        at org.apache.cxf.ws.security.tru
st.AbstractSTSClient.issue(Abs
tractSTSClient.java:861)
        at org.apache.cxf.fediz.service.i
dp.IdpSTSClient.requestSecurit
yTokenResponse(IdpSTSClient.java:47)
        at org.apache.cxf.fediz.service.i
dp.IdpSTSClient.requestSecurit
yTokenResponse(IdpSTSClient.java:42)
        at org.apache.cxf.fediz.service.i
dp.beans.STSClientAction.submi
t(STSClientAction.java:296)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
        at sun.reflect.NativeMethodAccess
orImpl.invoke(NativeMethodAcce
ssorImpl.java:62)
        at sun.reflect.DelegatingMethodAc
cessorImpl.invoke(DelegatingMe
thodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springframework.expression
.spel.support.ReflectiveMethod
Executor.execute(ReflectiveMethodExecutor.java:113)
        at org.springframework.expression
.spel.ast.MethodReference.getV
alueInternal(MethodReference.java:129)
        at org.springframework.expression.spel.ast.MethodReference.
access$000(MethodReference.java:49)
        at org.springframework.expression
.spel.ast.MethodReference$Meth
odValueRef.getValue(MethodReference.java:347)
        at org.springframework.expression
.spel.ast.CompoundExpression.g
etValueInternal(CompoundExpression.java:88)
        at org.springframework.expression.spel.ast.SpelNodeImpl.
getTypedValue(SpelNodeImpl.java:131)
        at org.springframework.expression
.spel.standard.SpelExpression.
getValue(SpelExpression.java:297)
        at org.springframework.binding.ex
pression.spel.SpringELExpressi
on.getValue(SpringELExpression.java:84)
        at org.springframework.webflow.ac
tion.EvaluateAction.doExecute(
EvaluateAction.java:75)
        at org.springframework.webflow.ac
tion.AbstractAction.execute(Ab
stractAction.java:188)
        at org.springframework.webflow.ex
ecution.AnnotatedAction.execut
e(AnnotatedAction.java:145)
        at org.springframework.webflow.ex
ecution.ActionExecutor.execute
(ActionExecutor.java:51)
        at org.springframework.webflow.en
gine.ActionList.execute(Action
List.java:154)
        at org.springframework.webflow.en
gine.State.enter(State.java:19
3)
        at org.springframework.webflow.en
gine.Transition.execute(Transi
tion.java:228)
        at org.springframework.webflow.en
gine.impl.FlowExecutionImpl.ex
ecute(FlowExecutionImpl.java:395)
        at org.springframework.webflow.en
gine.impl.RequestControlContex
tImpl.execute(RequestControlContextImpl.java:214)
        at org.springframework.webflow.en
gine.TransitionableState.handl
eEvent(TransitionableState.java:116)
        at org.springframework.webflow.en
gine.SubflowState.handleEvent(
SubflowState.java:116)
        at org.springframework.webflow.en
gine.Flow.handleEvent(Flow.jav
a:547)
        at org.springframework.webflow.en
gine.impl.FlowExecutionImpl.ha
ndleEvent(FlowExecutionImpl.java:390)
        at org.springframework.webflow.en
gine.impl.RequestControlContex
tImpl.handleEvent(RequestControlContextImpl.java:210)
        at org.springframework.webflow.en
gine.impl.FlowExecutionImpl.en
dActiveFlowSession(FlowExecutionImpl.java:414)
        at org.springframework.webflow.en
gine.impl.RequestControlContex
tImpl.endActiveFlowSession(RequestControlContextImpl.java:238)
        at org.springframework.webflow.en
gine.EndState.doEnter(EndState
.java:107)
        at org.springframework.webflow.en
gine.State.enter(State.java:19
4)
        at org.springframework.webflow.en
gine.Transition.execute(Transi
tion.java:228)
        at org.springframework.webflow.en
gine.impl.FlowExecutionImpl.ex
ecute(FlowExecutionImpl.java:395)
        at org.springframework.webflow.en
gine.impl.RequestControlContex
tImpl.execute(RequestControlContextImpl.java:214)
        at org.springframework.webflow.en
gine.TransitionableState.handl
eEvent(TransitionableState.java:116)
        at org.springframework.webflow.en
gine.Flow.handleEvent(Flow.jav
a:547)
        at org.springframework.webflow.en
gine.impl.FlowExecutionImpl.ha
ndleEvent(FlowExecutionImpl.java:390)
        at org.springframework.webflow.en
gine.impl.RequestControlContex
tImpl.handleEvent(RequestControlContextImpl.java:210)
        at org.springframework.webflow.en
gine.ActionState.doEnter(Actio
nState.java:105)
        at org.springframework.webflow.en
gine.State.enter(State.java:19
4)
        at org.springframework.webflow.en
gine.Transition.execute(Transi
tion.java:228)
        at org.springframework.webflow.en
gine.impl.FlowExecutionImpl.ex
ecute(FlowExecutionImpl.java:395)
        at org.springframework.webflow.en
gine.impl.RequestControlContex
tImpl.execute(RequestControlContextImpl.java:214)
        at org.springframework.webflow.en
gine.TransitionableState.handl
eEvent(TransitionableState.java:116)
        at org.springframework.webflow.en
gine.Flow.handleEvent(Flow.jav
a:547)
        at org.springframework.webflow.en
gine.impl.FlowExecutionImpl.ha
ndleEvent(FlowExecutionImpl.java:390)
        at org.springframework.webflow.en
gine.impl.RequestControlContex
tImpl.handleEvent(RequestControlContextImpl.java:210)
        at org.springframework.webflow.en
gine.ActionState.doEnter(Actio
nState.java:105)
        at org.springframework.webflow.en
gine.State.enter(State.java:19
4)
        at org.springframework.webflow.en
gine.Transition.execute(Transi
tion.java:228)
        at org.springframework.webflow.en
gine.DecisionState.doEnter(Dec
isionState.java:51)
        at org.springframework.webflow.en
gine.State.enter(State.java:19
4)
        at org.springframework.webflow.en
gine.Transition.execute(Transi
tion.java:228)
        at org.springframework.webflow.en
gine.DecisionState.doEnter(Dec
isionState.java:51)
        at org.springframework.webflow.en
gine.State.enter(State.java:19
4)
        at org.springframework.webflow.en
gine.Transition.execute(Transi
tion.java:228)
        at org.springframework.webflow.en
gine.DecisionState.doEnter(Dec
isionState.java:51)
        at org.springframework.webflow.en
gine.State.enter(State.java:19
4)
        at org.springframework.webflow.en
gine.Transition.execute(Transi
tion.java:228)
        at org.springframework.webflow.en
gine.DecisionState.doEnter(Dec
isionState.java:51)
        at org.springframework.webflow.en
gine.State.enter(State.java:19
4)
        at org.springframework.webflow.en
gine.Flow.start(Flow.java:527)
        at org.springframework.webflow.en
gine.impl.FlowExecutionImpl.st
art(FlowExecutionImpl.java:368)
        at org.springframework.webflow.en
gine.impl.RequestControlContex
tImpl.start(RequestControlContextImpl.java:234)
        at org.springframework.webflow.en
gine.SubflowState.doEnter(Subf
lowState.java:101)
        at org.springframework.webflow.en
gine.State.enter(State.java:19
4)
        at org.springframework.webflow.en
gine.Transition.execute(Transi
tion.java:228)
        at org.springframework.webflow.en
gine.DecisionState.doEnter(Dec
isionState.java:51)
        at org.springframework.webflow.en
gine.State.enter(State.java:19
4)
        at org.springframework.webflow.en
gine.Transition.execute(Transi
tion.java:228)
        at org.springframework.webflow.en
gine.DecisionState.doEnter(Dec
isionState.java:51)
        at org.springframework.webflow.en
gine.State.enter(State.java:19
4)
        at org.springframework.webflow.en
gine.Flow.start(Flow.java:527)
        at org.springframework.webflow.en
gine.impl.FlowExecutionImpl.st
art(FlowExecutionImpl.java:368)
        at org.springframework.webflow.en
gine.impl.FlowExecutionImpl.st
art(FlowExecutionImpl.java:223)
        at org.springframework.webflow.ex
ecutor.FlowExecutorImpl.launch
Execution(FlowExecutorImpl.java:140)
        at org.springframework.webflow.mv
c.servlet.FlowHandlerAdapter.
handle(FlowHandlerAdapter.java:263)
        at org.springframework.web.servle
t.DispatcherServlet.doDispatch
(DispatcherServlet.java:967)
        at org.springframework.web.servle
t.DispatcherServlet.doService(
DispatcherServlet.java:901)
        at org.springframework.web.servle
t.FrameworkServlet.processRequ
est(FrameworkServlet.java:970)
        at org.springframework.web.servlet.FrameworkServlet.doGet(
FrameworkServlet.java:861)
        at javax.servlet.http.HttpServlet
.service(HttpServlet.java:635)
        at org.springframework.web.servlet.FrameworkServlet.service(
FrameworkServlet.java:846)
        at javax.servlet.http.HttpServlet
.service(HttpServlet.java:742)
        at org.apache.catalina.core.Appli
cationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:231)
        at org.apache.catalina.core.Appli
cationFilterChain.doFilter(App
licationFilterChain.java:166)
        at org.apache.tomcat.websocket.se
rver.WsFilter.doFilter(WsFilte
r.java:52)
        at org.apache.catalina.core.Appli
cationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.Appli
cationFilterChain.doFilter(App
licationFilterChain.java:166)
        at org.springframework.security.w
eb.FilterChainProxy$VirtualFil
terChain.doFilter(FilterChainProxy.java:330)
        at org.springframework.security.w
eb.access.intercept.FilterSecu
rityInterceptor.invoke(FilterSecurityInterceptor.java:118)
        at org.springframework.security.w
eb.access.intercept.FilterSecu
rityInterceptor.doFilter(FilterSecurityInterceptor.java:84)
        at org.springframework.security.w
eb.FilterChainProxy$VirtualFil
terChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.w
eb.access.ExceptionTranslation
Filter.doFilter(ExceptionTranslationFilter.java:113)
        at org.springframework.security.w
eb.FilterChainProxy$VirtualFil
terChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.w
eb.session.SessionManagementFi
lter.doFilter(SessionManagementFilter.java:103)
        at org.springframework.security.w
eb.FilterChainProxy$VirtualFil
terChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.w
eb.authentication.AnonymousAut
henticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
        at org.springframework.security.w
eb.FilterChainProxy$VirtualFil
terChain.doFilter(FilterChainProxy.java:342)
        at org.apache.cxf.fediz.service.i
dp.service.security.GrantedAut
horityEntitlements.doFilter(GrantedAuthorityEntitlements.java:97)
        at org.springframework.security.w
eb.FilterChainProxy$VirtualFil
terChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.w
eb.servletapi.SecurityContextH
olderAwareRequestFilter.doFilter(SecurityContextHolder
AwareRequestFilter.java:154)
        at org.springframework.security.w
eb.FilterChainProxy$VirtualFil
terChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.w
eb.savedrequest.RequestCacheAw
areFilter.doFilter(RequestCacheAwareFilter.java:45)
        at org.springframework.security.w
eb.FilterChainProxy$VirtualFil
terChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.w
eb.authentication.www.BasicAut
henticationFilter.doFilter(BasicAuthenticationFilter.java:150)
        at org.springframework.security.w
eb.FilterChainProxy$VirtualFil
terChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.w
eb.authentication.AbstractAuth
enticationProcessingFilter.doFilter(AbstractAuthenticatio
nProcessingFilter.java:199)
        at org.springframework.security.w
eb.FilterChainProxy$VirtualFil
terChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.w
eb.authentication.logout.Logou
tFilter.doFilter(LogoutFilter.java:110)
        at org.springframework.security.w
eb.FilterChainProxy$VirtualFil
terChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.w
eb.context.request.async.WebAs
yncManagerIntegrationFilter.doFilterInternal(WebAsyncManag
erIntegrationFilter.java:50)
        at org.springframework.web.filter
.OncePerRequestFilter.doFilter
(OncePerRequestFilter.java:107)
        at org.springframework.security.w
eb.FilterChainProxy$VirtualFil
terChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.w
eb.context.SecurityContextPers
istenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
        at org.springframework.security.w
eb.FilterChainProxy$VirtualFil
terChain.doFilter(FilterChainProxy.java:342)
        at org.apache.cxf.fediz.service.i
dp.STSPortFilter.doFilter(STSP
ortFilter.java:74)
        at org.springframework.security.w
eb.FilterChainProxy$VirtualFil
terChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.w
eb.access.channel.ChannelProce
ssingFilter.doFilter(ChannelProcessingFilter.java:144)
        at org.springframework.security.w
eb.FilterChainProxy$VirtualFil
terChain.doFilter(FilterChainProxy.java:342)
        at org.springframework.security.w
eb.FilterChainProxy.doFilterIn
ternal(FilterChainProxy.java:192)
        at org.springframework.security.w
eb.FilterChainProxy.doFilter(F
ilterChainProxy.java:160)
        at org.springframework.web.filter
.DelegatingFilterProxy.invokeD
elegate(DelegatingFilterProxy.java:346)
        at org.springframework.web.filter
.DelegatingFilterProxy.doFilte
r(DelegatingFilterProxy.java:262)
        at org.apache.catalina.core.Appli
cationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.Appli
cationFilterChain.doFilter(App
licationFilterChain.java:166)
        at org.springframework.web.filter
.CharacterEncodingFilter.doFil
terInternal(CharacterEncodingFilter.java:197)
        at org.springframework.web.filter
.OncePerRequestFilter.doFilter
(OncePerRequestFilter.java:107)
        at org.apache.catalina.core.Appli
cationFilterChain.internalDoFi
lter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.Appli
cationFilterChain.doFilter(App
licationFilterChain.java:166)
        at org.apache.catalina.core.Stand
ardWrapperValve.invoke(Standar
dWrapperValve.java:198)
        at org.apache.catalina.core.Stand
ardContextValve.invoke(Standar
dContextValve.java:96)
        at org.apache.catalina.core.Stand
ardHostValve.invoke(StandardHo
stValve.java:140)
        at org.apache.catalina.valves.Err
orReportValve.invoke(ErrorRepo
rtValve.java:80)
        at org.apache.catalina.valves.Abs
tractAccessLogValve.invoke(Abs
tractAccessLogValve.java:650)
        at org.apache.catalina.core.Stand
ardEngineValve.invoke(Standard
EngineValve.java:87)
        at org.apache.catalina.connector.
CoyoteAdapter.service(CoyoteAd
apter.java:342)
        at org.apache.coyote.http2.Stream
Processor.service(StreamProces
sor.java:245)
        at org.apache.coyote.AbstractProc
essorLight.process(AbstractPro
cessorLight.java:66)
        at org.apache.coyote.http2.Stream
Processor.process(StreamProces
sor.java:65)
        at org.apache.coyote.http2.StreamRunnable.run(StreamRunnable.
java:35)
        at java.util.concurrent.ThreadPoo
lExecutor.runWorker(ThreadPool
Executor.java:1142)
        at java.util.concurrent.ThreadPoo
lExecutor$Worker.run(ThreadPoo
lExecutor.java:617)
        at org.apache.tomcat.util.threads
.TaskThread$WrappingRunnable.
run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:748)
Caused by: com.ctc.wstx.exc.WstxIOException:
RequireClientCertificate
is
set, but no local certificates were negotiated. Is the server set to
ask
for client authorization?
        at com.ctc.wstx.sw.BaseStreamWriter.flush(BaseStreamWriter.
java:255)
        at org.apache.cxf.binding.soap.sa
aj.SAAJOutInterceptor$SAAJOutE
ndingInterceptor.handleMessage(SAAJOutInterceptor.java:215)
        ... 154 more
Caused by: org.apache.cxf.transport.http.
UntrustedURLConnectionIOExcept
ion:
RequireClientCertificate is set, but no local certificates were
negotiated.  Is the server set to ask for client authorization?
        at org.apache.cxf.ws.security.pol
icy.interceptors.HttpsTokenInt
erceptorProvider$HttpsTokenOutInterceptor$1.establishTrust(H
ttpsTokenInterceptorProvider.java:143)
        at org.apache.cxf.transport.http.
HTTPConduit$WrappedOutputStrea
m.makeTrustDecision(HTTPConduit.java:1780)
        at org.apache.cxf.transport.http.
HTTPConduit$WrappedOutputStrea
m.handleHeadersTrustCaching(HTTPConduit.java:1323)
        at org.apache.cxf.transport.http.
HTTPConduit$WrappedOutputStrea
m.onFirstWrite(HTTPConduit.java:1293)
        at org.apache.cxf.transport.http.
URLConnectionHTTPConduit$URLCo
nnectionWrappedOutputStream.onFirstWrite(URLConnectionHTTP
Conduit.java:309)
        at org.apache.cxf.io.AbstractWrap
pedOutputStream.write(Abstract
WrappedOutputStream.java:47)
        at org.apache.cxf.io.AbstractThre
sholdOutputStream.unBuffer(Abs
tractThresholdOutputStream.java:89)
        at org.apache.cxf.io.AbstractThre
sholdOutputStream.write(Abstra
ctThresholdOutputStream.java:63)
        at com.ctc.wstx.io.UTF8Writer.flush(UTF8Writer.java:100)
        at com.ctc.wstx.sw.BufferingXmlWr
iter.flush(BufferingXmlWriter.
java:241)
        at com.ctc.wstx.sw.BaseStreamWriter.flush(BaseStreamWriter.
java:253)
        ... 155 more
2017-10-24 12:55:58,158 [https-openssl-apr-9443-exec-2] ERROR
org.apache.cxf.fediz.service.idp.beans.STSClientAction  - Error in
retrieving a token


On 23/10/2017 19:41, Matthew Broadhead wrote:

Thanks for your help Colm.  I now have it working using the
production

certificate by following this example https://stackoverflow.com/a/21
41229/3052312 to export the pems into jks files.

but in the end i also had to copy idp-ssl-key.jks and
idp-ssl-trust.jks
into webapps/idp/WEB-INF/classes as well as having them in catalina
base.
this seems impractical in production as the certificates get
reissued
every
6 months.  is it possible for sec:keyStore to define the resource as
being
in catalina base?

On 23/10/2017 18:11, Colm O hEigeartaigh wrote:

sec:keyStore supports either JKS or PKCS12 keystores. There is also
a

sec:certStore that works with PEM files, but only for TrustStores I
think.
As a workaround you can just use the Java keytool command to import
your
PEM key/cert into a JKS keystore.

this document http://svn.apache.org/viewvc/c

xf/fediz/trunk/examples/sample

keys/HowToGenerateKeysREADME.html?view=co has idp-ssl-server.jks
but

no
idp-ssl-key.jks.

SVN is not used any more by CXF or Fediz, that page is old. The
correct
version is on github:

https://github.com/apache/cxf-fediz/blob/master/examples/sam
plekeys/HowToGenerateKeysREADME.html

Colm.

On Mon, Oct 23, 2017 at 4:40 PM, Matthew Broadhead <
[email protected]> wrote:

Hi Colm,

is there any way for sec:keyStore to be pointed at a pem
certificate

instead of a java keystore?  where is the doumentation for
sec:keyStore?

Matt

On 23/10/2017 17:11, Colm O hEigeartaigh wrote:

I haven't used the APR connector. The following works for me in
the

tests,

perhaps you could duplicate this config and get it working first
before
switching over to the APR connector:

       <Connector port="9443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150"
SSLEnabled="true" scheme="https" secure="true" clientAuth="want"
sslProtocol="TLS" keystoreFile="idp-ssl-key.jks"
keystorePass="tompass"
keyPass="tompass" truststoreFile="idp-ssl-trust.jks"
truststorePass="ispass" />

Yes you will need to specify the truststore and keystore in
cxf-tls.xml to
communicate with the STS from the IdP. The truststore should
contain
the
issuing cert of the Tomcat instance hosting your STS + then
keystore
the
private key of your IdP.

Colm.

On Sun, Oct 22, 2017 at 9:23 AM, Matthew Broadhead <
[email protected]> wrote:

i am using my own certificate with APR in the tomcat
server.xml.  I
added

clientVerification="required" to SSLHostConfig but I still have
the

same
problem
<Connector port="9443" protocol="org.apache.coyote.ht
tp11.Http11AprProtocol"
                     maxThreads="150" SSLEnabled="true">
              <UpgradeProtocol className="org.apache.coyote.h
ttp2.Http2Protocol"
/>
              <SSLHostConfig clientVerification="required">
                  <Certificate certificateKeyFile="/etc/letse
ncrypt/live/domain.tld/privkey.pem"
certificateFile="/etc/letsencrypt/live/domain.tld/cert.pem"
certificateChainFile="/etc/letsencrypt/live/domain.tld/fullc
hain.pem"
type="RSA" />
              </SSLHostConfig>
          </Connector>

I commented the trustManagers and keyManagers in
services/idp/src/main/resources/cxf-tls.xml.  Could this be the
problem?
How would I use production certificates?
<http:conduit name="*.http-conduit">
<http:tlsClientParameters
disableCNCheck="true">
                  <!-- <sec:trustManagers>
                      <sec:keyStore type="jks" password="ispass"
resource="idp-ssl-trust.jks" />
</sec:trustManagers>
                  <sec:keyManagers keyPassword="tompass">
                      <sec:keyStore type="jks" password="tompass"
resource="idp-ssl-key.jks"/>
</sec:keyManagers> -->
</http:tlsClientParameters>
          </http:conduit>


On 22/10/2017 00:38, Matthew Broadhead wrote:

ok...i fixed the last error by dropping the schema and
restarting.

but now i have this

2017-10-21 21:58:19,541 [https-openssl-apr-9443-exec-9] WARN
org.apache.cxf.phase.PhaseInterceptorChain - Interceptor for
{
http://docs.oasis-open.org/ws-sx/ws-trust/200512/}SecurityT okenService#{http://docs.oasis-open.org/ws-sx/ws-trust/20051
2/}Issue
has
thrown exception, unwinding now
org.apache.cxf.binding.soap.SoapFault: Problem writing SAAJ
model
to
stream: RequireClientCertificate is set, but no local
certificates
were
negotiated.  Is the server set to ask for client authorization?
          at org.apache.cxf.binding.soap.sa
aj.SAAJOutInterceptor$SAAJOutE
ndingInterceptor.handleMessage(SAAJOutInterceptor.java:224)
          at org.apache.cxf.binding.soap.sa
aj.SAAJOutInterceptor$SAAJOutE
ndingInterceptor.handleMessage(SAAJOutInterceptor.java:174)
          at org.apache.cxf.phase.PhaseInte
rceptorChain.doIntercept(Phase
InterceptorChain.java:308)
          at org.apache.cxf.endpoint.Client
Impl.doInvoke(ClientImpl.java:
518)
          ...
Caused by: com.ctc.wstx.exc.WstxIOException:
RequireClientCertificate
is
set, but no local certificates were negotiated.  Is the server
set
to
ask
for client authorization?
          at com.ctc.wstx.sw.BaseStreamWrit
er.flush(BaseStreamWriter.java
:255)
          at org.apache.cxf.binding.soap.sa
aj.SAAJOutInterceptor$SAAJOutE
ndingInterceptor.handleMessage(SAAJOutInterceptor.java:215)
          ... 154 more
Caused by: org.apache.cxf.transport.http.
UntrustedURLConnectionIOExcept
ion:
RequireClientCertificate is set, but no local certificates were negotiated.  Is the server set to ask for client authorization?
          at org.apache.cxf.ws.security.pol
icy.interceptors.HttpsTokenInt
erceptorProvider$HttpsTokenOutInterceptor$1.establishTrust(H
ttpsTokenInterceptorProvider.java:143)
          at org.apache.cxf.transport.http.
HTTPConduit$WrappedOutputStrea
m.makeTrustDecision(HTTPConduit.java:1780)
          at org.apache.cxf.transport.http.
HTTPConduit$WrappedOutputStrea
m.handleHeadersTrustCaching(HTTPConduit.java:1323)
          ...
2017-10-21 21:58:19,542 [https-openssl-apr-9443-exec-9] ERROR org.apache.cxf.fediz.service.idp.beans.STSClientAction - Error
in
retrieving a token


On 20/10/2017 23:05, Matthew Broadhead wrote:

ok i now have a different error and it doesn't load the login
screen

2017-10-20 19:25:39,175 [https-openssl-apr-9443-exec-2] WARN

org.apache.cxf.fediz.service.idp.beans.EndpointAddressValida
tor
-
No
service config found for urn:org:apache:cxf:fediz:fediz
helloworld
2017-10-20 19:26:18,084 [https-openssl-apr-9443-exec-5] ERROR org.apache.cxf.fediz.service.idp.service.security.GrantedAut
horityEntitlements
- Role 'CLAIM_LIST' not found
2017-10-20 19:26:18,085 [https-openssl-apr-9443-exec-5] ERROR org.apache.cxf.fediz.service.idp.service.security.GrantedAut
horityEntitlements
- Role 'IDP_READ' not found
2017-10-20 19:26:18,090 [https-openssl-apr-9443-exec-5] ERROR org.apache.cxf.fediz.service.idp.service.security.GrantedAut
horityEntitlements
- Role 'IDP_LIST' not found
2017-10-20 19:26:18,091 [https-openssl-apr-9443-exec-5] ERROR org.apache.cxf.fediz.service.idp.service.security.GrantedAut
horityEntitlements
- Role 'TRUSTEDIDP_LIST' not found
2017-10-20 19:26:18,092 [https-openssl-apr-9443-exec-5] ERROR org.apache.cxf.fediz.service.idp.service.security.GrantedAut
horityEntitlements
- Role 'CLAIM_READ' not found
2017-10-20 19:26:18,094 [https-openssl-apr-9443-exec-5] ERROR org.apache.cxf.fediz.service.idp.service.security.GrantedAut
horityEntitlements
- Role 'APPLICATION_LIST' not found
2017-10-20 19:26:18,095 [https-openssl-apr-9443-exec-5] ERROR org.apache.cxf.fediz.service.idp.service.security.GrantedAut
horityEntitlements
- Role 'APPLICATION_READ' not found
2017-10-20 19:26:18,096 [https-openssl-apr-9443-exec-5] ERROR org.apache.cxf.fediz.service.idp.service.security.GrantedAut
horityEntitlements
- Role 'TRUSTEDIDP_READ' not found
2017-10-20 19:26:18,096 [https-openssl-apr-9443-exec-5] INFO org.apache.cxf.fediz.service.idp.service.security.GrantedAut
horityEntitlements
- Enriched AuthenticationToken added

the previous one was caused by
services/idp/src/main/webapp/WEB-INF/idp-config-realm-myreal
m.xml
<property name="stsUrl" value="https://domain.tld:9443
/idp-sts/REALMMYREALM" />
should have been
<property name="stsUrl" value="https://domain.tld:0/id
p-sts/REALMMYREALM"
/>
according to original file

On 20/10/2017 18:27, Matthew Broadhead wrote:

Hi Colm,

Yes I have:

<bean id="idp-realmXYZ" class="org.apache.cxf.fediz.se
rvice.idp.service.jpa.IdpEntity">
...
              <property name="applications">
<util:list>
                      <ref bean="srv-fedizhelloworld" />
              <!-- <ref bean="srv-oidc" /> -->
</util:list>
              </property>
...
</bean>

<bean id="srv-fedizhelloworld" class="
org.apache.cxf.fediz.se
rvice.idp.service.jpa.ApplicationEntity">
              <property name="realm"
value="urn:org:apache:cxf:fedi
z:fedizhelloworld"
/>
              <property name="protocol" value="
http://docs.oasis-open.
org/wsfed/federation/200706" />
              <property name="serviceDisplayName"
value="Fedizhelloworld"
/>
              <property name="serviceDescription" value="Web
Application to
illustrate WS-Federation" />
              <property name="role"
value="ApplicationServiceType"
/>
              <property name="tokenType" value="
http://docs.oasis-open
.
org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0" />
              <property name="lifeTime" value="3600" />
              <property name="passiveRequestorEndpoint
Constraint"
value="https://localhost:?(\d)*/.*" />
              <property name="logoutEndpointConstraint"
value="https://localhost:?(\d)*/.*" />
</bean>

<bean class="org.apache.cxf.fediz.se
rvice.idp.service.jpa.Applicat
ionClaimEntity">
              <property name="application"
ref="srv-fedizhelloworld" />
              <property name="claim" ref="claim_role" />
              <property name="optional" value="false" />
</bean>

etc.

On 20/10/2017 18:08, Colm O hEigeartaigh wrote:

Do you have an

org.apache.cxf.fediz.service.idp.service.jpa.ApplicationEnti
ty

instance in
your webapps/fediz-idp/WEB-INF/classes/entities-realma.xml
with
realm
"urn:org:apache:cxf:fediz:fedizhelloworld"?

Colm.

On Fri, Oct 20, 2017 at 4:09 PM, Matthew Broadhead <
[email protected]> wrote:

Hi,

i have Fediz working now on (e.g.) domain.tld:9443/idp and i
am

trying to

use it from localhost:9443/fedizhelloworld
/secure/fedservlet.
it
correctly redirects to the login page and seems to
authenticate
ok

but then i get the following error
2017-10-20 15:56:17,424 [https-openssl-apr-9443-exec-8]
INFO
org.apache.cxf.fediz.service.idp.beans.CacheSecurityToken
-
Token
[IDP_TOKEN=<something>] for realm [<something>]
successfully
cached.
2017-10-20 15:56:17,433 [https-openssl-apr-9443-exec-8]
WARN
org.apache.cxf.fediz.service.i
dp.beans.EndpointAddressValida
tor
-
No
service config found for urn:org:apache:cxf:fediz:fediz
helloworld

Matthew
















Reply via email to