I'm setting up 2-way ssl from the apigee proxy (on Apigee hosted Edge) to my back-end service, and uploaded the keystore, and truststore. I'm now configuring the proxy to use client authentication - but my back-end service isn't locked down yet, so I'm configuring the proxy so I can enable it once the back-end server is updated.
I added in:
<SSLInfo> <Enabled>true</Enabled> <ClientAuthEnabled>true</ClientAuthEnabled> <KeyStore>devKeystore</KeyStore> <KeyAlias>devKey</KeyAlias> <TrustStore>devTrustStore</TrustStore> </SSLInfo>
(yes the keystore, alias, and truststore shouldn't be named 'dev...' but bear with me)
When I submit this, I get a wonderfully generic error:
{ "fault": { "faultstring": "The Service is temporarily unavailable", "detail": { "errorcode": "messaging.adaptors.http.flow.ServiceUnavailable" } } }
even changing the ClientAuthEnabled to 'false' gives the same error - if I comment out all besides 'Enabled', it results in successful processing.
My questions:
* shouldn't the error give me something at least a little better to diagnose what's going on?
* what's the point of having a client auth enabled flag if there's no difference between the behavior of true and false
* even if set to true - if the underlying service doesn't ask for it - what's the harm in presenting it?
Solved! Go to Solution.
your error suggests ssl handshake failure and the description you provide suggest there could be problem with your truststore
can you try removing the truststore [this is similar to 'curl -k'], if this works you rule out truststore issues [might have to do with ca cert chains]
<SSLInfo><Enabled>true</Enabled><ClientAuthEnabled>true</ClientAuthEnabled><KeyStore>devKeystore</KeyStore><KeyAlias>devKey</KeyAlias></SSLInfo>