Closed t4deon closed 1 year ago
Hi @t4deon,
when I set SSL_VERIFY_CLIENT: optional
in the dsf-docker-test-setup it still works and the BPE authenticates using the client certificate.
Generally speaking a client certificate is only send during the TLS handshake, if the servers send a request for client certificates with it's "Server Hello" message and the client has a client certificate that matches one of the "Acceptable client certificate CA names". If you want to see if proxy
is sending the correct hello message, try openssl s_client --connect proxy::443
and check if the issuer of your client certificate matches on of the CAs listed as Acceptable client certificate CA names
. The SSL_CA_DN_REQUEST_FILE variable determines what CA-Names are send, but if it is not set, all entries from SSL_CA_CERTIFICATE_FILE are used.
Make sure that your BPE is talking to reverse proxy and not the FHIR app server directly.
Not necessarily an error, but usually the FHIR and BPE environment variables DEV_DSF_FHIR_SERVER_BASE_URL and DEV_DSF_BPE_FHIR_SERVER_BASE_URL have the same value.
In case you don't want to further debug you're own setup, have a look at our single organization test setup at dsf-docker-test-setup. To use the setup:
main
branchmvn install -DskipTests
To use the DSF FHIR server web UI a client certificate is generated at dsf-tools\dsf-tools-test-data-generator\cert\Webbrowser_Test_User\Webbrowser_Test_User_certificate.p12
dsf-docker-test-setup\docker-build.sh
(or modify the compose files to use the images from ghcr.io)127.0.0.1 fhir
to your OS hosts
file, to access the FHIR server via a web browser.docker compose up
docker compose up
If you need a test setup with OIDC enabled, have a look at dsf-docker-test-setup-3dic-ttp. This setup simulates four organisations but they can be started individually if you only need one.
Hi @hhund,
thanks for the explanations. The problem was an improperly closed certificate chain. Now it works!
Hi,
I'm trying to setup DSF 1.2.0 on a single machine for testing purposes. I followed the instructions, created certificates signed by my own CA (so not DFN) and also enabled OIDC. OIDC works like a charm for the FHIR server. However, I'm running into a persistent 401 Unauthorized in the communication between the BPE and FHIR server. (logs see below). I didn't add any process plugins.
Docker compose files: FHIR:
BPE:
Log BPE:
Log FHIR:
(Please ignore the time stamps)
A look at the code would suggest that the client certificate is never sent by the BPE.
If I unset
SSL_VERIFY_CLIENT
, the BPE throws abroken pipe
exception instead of ajakarta.ws.rs.WebApplicationException
.Any help in resolving this would be appreciated! Thanks!