Skip to content

Commit 92d3ae9

Browse files
committed
default trusted CAs now stored as separate files
Default trusted CAs (root, issuing or chains - root and issuing) are now stored as separate files in folders of the bpe, bpe_proxy, fhir and fhir_proxy docker images. The config parameters of the fhir and bpe servers can be configured with a folder containing (*.pem, *.crt) files or a single file with multiple pem encoded CAs. By default a folder is configured, allowing additions or full override via docker bind mount, but a single custom file can still be configured. The fhir_proxy and bpe_proxy images have now default folders configured via the SSL_CA_DN_REQUEST_PATH and SSL_CA_CERTIFICATE_PATH environment variables. The matching ..._PATH variables are ignored if SSL_CA_DN_REQUEST_FILE or SSL_CA_CERTIFICATE_FILE point to existing files. This change also enablsd addition or replacement via docker bind mount and configuration of single files via the ...FILE variables. The symlinks with sha1 hashes of a canonicalized form of the subject DN string needed for apache httpd are created during container startup.
1 parent b41cd81 commit 92d3ae9

File tree

42 files changed

+750
-551
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+750
-551
lines changed

.gitignore

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ dsf-bpe/dsf-bpe-server-jetty/cert/*.key
2121
dsf-bpe/dsf-bpe-server-jetty/conf/config.properties
2222
dsf-bpe/dsf-bpe-server-jetty/docker/api/v1/*.jar
2323
dsf-bpe/dsf-bpe-server-jetty/docker/api/v2/*.jar
24-
dsf-bpe/dsf-bpe-server-jetty/docker/ca/*.pem
24+
dsf-bpe/dsf-bpe-server-jetty/docker/ca/client_ca_chains/*.crt
25+
dsf-bpe/dsf-bpe-server-jetty/docker/ca/server_root_cas/*.crt
2526
dsf-bpe/dsf-bpe-server-jetty/docker/dsf_bpe.jar
2627
dsf-bpe/dsf-bpe-server-jetty/docker/dsf_status_client.jar
2728
dsf-bpe/dsf-bpe-server-jetty/docker/lib/*.jar
@@ -32,8 +33,10 @@ dsf-bpe/dsf-bpe-server-jetty/ui
3233
###
3334
# dsf-docker ignore
3435
###
35-
dsf-docker/bpe_proxy/ca/*.pem
36-
dsf-docker/fhir_proxy/ca/*.pem
36+
dsf-docker/bpe_proxy/ca/client_ca_chains/*.crt
37+
dsf-docker/bpe_proxy/ca/client_issuing_cas/*.crt
38+
dsf-docker/fhir_proxy/ca/client_ca_chains/*.crt
39+
dsf-docker/fhir_proxy/ca/client_issuing_cas/*.crt
3740

3841
###
3942
# dsf-docker-test-setup ignores
@@ -98,25 +101,10 @@ dsf-fhir/dsf-fhir-server-jetty/cert/*.crt
98101
dsf-fhir/dsf-fhir-server-jetty/cert/*.key
99102
dsf-fhir/dsf-fhir-server-jetty/conf/bundle.xml
100103
dsf-fhir/dsf-fhir-server-jetty/conf/config.properties
101-
dsf-fhir/dsf-fhir-server-jetty/docker/ca/*.pem
104+
dsf-fhir/dsf-fhir-server-jetty/docker/ca/client_ca_chains/*.crt
105+
dsf-fhir/dsf-fhir-server-jetty/docker/ca/server_root_cas/*.crt
102106
dsf-fhir/dsf-fhir-server-jetty/docker/dsf_fhir.jar
103107
dsf-fhir/dsf-fhir-server-jetty/docker/dsf_status_client.jar
104108
dsf-fhir/dsf-fhir-server-jetty/docker/lib/*.jar
105109
dsf-fhir/dsf-fhir-server-jetty/ui
106-
dsf-fhir/dsf-fhir-validation/src/main/resources/fhir/bundle.xml
107-
108-
###
109-
# dsf-tools ignores
110-
###
111-
dsf-tools/dsf-tools-default-ca-files-generator/cert/*.pem
112-
113-
dsf-tools/dsf-tools-test-data-generator/bundle/*.xml
114-
115-
dsf-tools/dsf-tools-test-data-generator/cert/**/*.pem
116-
dsf-tools/dsf-tools-test-data-generator/cert/**/*.key
117-
dsf-tools/dsf-tools-test-data-generator/cert/**/*.crt
118-
dsf-tools/dsf-tools-test-data-generator/cert/**/*.csr
119-
dsf-tools/dsf-tools-test-data-generator/cert/**/*.p12
120-
dsf-tools/dsf-tools-test-data-generator/cert/thumbprints.txt
121-
122-
dsf-tools/dsf-tools-test-data-generator/config/*.properties
110+
dsf-fhir/dsf-fhir-validation/src/main/resources/fhir/bundle.xml

dsf-bpe/dsf-bpe-server-jetty/docker/.dockerignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
api/v1/README.md
22
api/v2/README.md
3-
ca/README.md
3+
ca/client_ca_chains/README.md
4+
ca/server_root_cas/README.md
45
conf/README.md
56
lib/README.md
67
lib_external/README.md

dsf-bpe/dsf-bpe-server-jetty/docker/Dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ RUN adduser --system --no-create-home --group --uid 2202 java
33
WORKDIR /opt/bpe
44
COPY --chown=root:java ./ ./
55
RUN chown root:java ./ && \
6-
chmod 750 ./ ./api ./api/v1 ./api/v2 ./ca ./conf ./lib ./lib_external ./process ./ui ./dsf_bpe_start.sh ./healthcheck.sh && \
7-
chmod 440 ./ca/client_cert_ca_chains.pem ./ca/server_cert_root_cas.pem ./dsf_bpe.jar ./lib/*.jar && \
6+
chmod 750 ./ ./api ./api/v1 ./api/v2 ./ca ./ca/client_ca_chains ./ca/server_root_cas ./conf ./lib ./lib_external ./process ./ui ./dsf_bpe_start.sh ./healthcheck.sh && \
7+
chmod 440 ./ca/client_ca_chains/*.crt ./ca/server_root_cas/*.crt ./dsf_bpe.jar ./lib/*.jar && \
88
chmod 1775 ./log
99

1010

dsf-bpe/dsf-bpe-server-jetty/docker/ca/README.md

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Empty `client_ca_chains` directory for maven/docker build, will contain default certificate authority pem files after maven build
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Empty `server_root_cas` directory for maven/docker build, will contain default certificate authority pem files after maven build

dsf-bpe/dsf-bpe-server-jetty/pom.xml

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -125,16 +125,30 @@
125125
<followSymlinks>false</followSymlinks>
126126
</fileset>
127127
<fileset>
128-
<directory>docker/ca</directory>
128+
<directory>docker/ca/client_ca_chains</directory>
129129
<includes>
130-
<include>*.pem</include>
130+
<include>*.crt</include>
131131
</includes>
132132
<followSymlinks>false</followSymlinks>
133133
</fileset>
134134
<fileset>
135-
<directory>../../dsf-docker/bpe_proxy/ca</directory>
135+
<directory>docker/ca/server_root_cas</directory>
136136
<includes>
137-
<include>*.pem</include>
137+
<include>*.crt</include>
138+
</includes>
139+
<followSymlinks>false</followSymlinks>
140+
</fileset>
141+
<fileset>
142+
<directory>../../dsf-docker/bpe_proxy/ca/client_ca_chains</directory>
143+
<includes>
144+
<include>*.crt</include>
145+
</includes>
146+
<followSymlinks>false</followSymlinks>
147+
</fileset>
148+
<fileset>
149+
<directory>../../dsf-docker/bpe_proxy/ca/client_issuing_cas</directory>
150+
<includes>
151+
<include>*.crt</include>
138152
</includes>
139153
<followSymlinks>false</followSymlinks>
140154
</fileset>
@@ -160,15 +174,15 @@
160174
</executions>
161175
<configuration>
162176
<configDocPackages>dev.dsf.common,dev.dsf.bpe</configDocPackages>
163-
<clientCertIssuingCaFiles>
164-
../../dsf-docker/bpe_proxy/ca/client_cert_issuing_cas.pem
165-
</clientCertIssuingCaFiles>
166-
<clientCertCaChainFiles>
167-
../../dsf-docker/bpe_proxy/ca/client_cert_ca_chains.pem,docker/ca/client_cert_ca_chains.pem
168-
</clientCertCaChainFiles>
169-
<serverCertRootCaFiles>
170-
docker/ca/server_cert_root_cas.pem
171-
</serverCertRootCaFiles>
177+
<clientIssuingCas>
178+
../../dsf-docker/bpe_proxy/ca/client_issuing_cas
179+
</clientIssuingCas>
180+
<clientCaChains>
181+
../../dsf-docker/bpe_proxy/ca/client_ca_chains,docker/ca/client_ca_chains
182+
</clientCaChains>
183+
<serverRootCas>
184+
docker/ca/server_root_cas
185+
</serverRootCas>
172186
</configuration>
173187
</plugin>
174188
</plugins>

dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/spring/config/DsfClientConfig.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ public void afterPropertiesSet() throws Exception
3333
logger.info(
3434
"Local webservice client config: {trustStorePath: {}, certificatePath: {}, privateKeyPath: {}, privateKeyPassword: {},"
3535
+ " url: {}, proxy: {}}",
36-
propertiesConfig.getDsfClientTrustedServerCasFile(), propertiesConfig.getDsfClientCertificateFile(),
36+
propertiesConfig.getDsfClientTrustedServerCasFileOrFolder(),
37+
propertiesConfig.getDsfClientCertificateFile(),
3738
propertiesConfig.getDsfClientCertificatePrivateKeyFile(),
3839
propertiesConfig.getDsfClientCertificatePrivateKeyFilePassword() != null ? "***" : "null",
3940
propertiesConfig.getDsfServerBaseUrl(),
@@ -42,7 +43,8 @@ public void afterPropertiesSet() throws Exception
4243
logger.info(
4344
"Local websocket client config: {trustStorePath: {}, certificatePath: {}, privateKeyPath: {}, privateKeyPassword: {},"
4445
+ " url: {}, proxy: {}}",
45-
propertiesConfig.getDsfClientTrustedServerCasFile(), propertiesConfig.getDsfClientCertificateFile(),
46+
propertiesConfig.getDsfClientTrustedServerCasFileOrFolder(),
47+
propertiesConfig.getDsfClientCertificateFile(),
4648
propertiesConfig.getDsfClientCertificatePrivateKeyFile(),
4749
propertiesConfig.getDsfClientCertificatePrivateKeyFilePassword() != null ? "***" : "null",
4850
getWebsocketUrl(),
@@ -51,7 +53,8 @@ public void afterPropertiesSet() throws Exception
5153
logger.info(
5254
"Remote webservice client config: {trustStorePath: {}, certificatePath: {}, privateKeyPath: {}, privateKeyPassword: {},"
5355
+ " proxy: {}}",
54-
propertiesConfig.getDsfClientTrustedServerCasFile(), propertiesConfig.getDsfClientCertificateFile(),
56+
propertiesConfig.getDsfClientTrustedServerCasFileOrFolder(),
57+
propertiesConfig.getDsfClientCertificateFile(),
5558
propertiesConfig.getDsfClientCertificatePrivateKeyFile(),
5659
propertiesConfig.getDsfClientCertificatePrivateKeyFilePassword() != null ? "***" : "null",
5760
propertiesConfig.proxyConfig().isEnabled()
@@ -63,7 +66,7 @@ public void afterPropertiesSet() throws Exception
6366
public ClientProvider clientProvider()
6467
{
6568
char[] keyStorePassword = UUID.randomUUID().toString().toCharArray();
66-
KeyStore keyStore = propertiesConfig.getDsfClientCertificate(keyStorePassword);
69+
KeyStore keyStore = propertiesConfig.getDsfClientKeyStore(keyStorePassword);
6770
KeyStore trustStore = propertiesConfig.getDsfClientTrustedServerCas();
6871

6972
return new ClientProviderImpl(fhirConfig.fhirContext(), propertiesConfig.getDsfServerBaseUrl(),

dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/spring/config/MailConfig.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ private BpeMailService newSmptMailService()
7070

7171
KeyStore trustStore = propertiesConfig.getMailServerTrustStore();
7272
char[] keyStorePassword = UUID.randomUUID().toString().toCharArray();
73-
KeyStore keyStore = propertiesConfig.getMailServerKeyStore(keyStorePassword).orElse(null);
74-
KeyStore signStore = propertiesConfig.getMailSmimeSigingKeyStore().orElse(null);
73+
KeyStore keyStore = propertiesConfig.getMailClientKeyStore(keyStorePassword);
74+
KeyStore signStore = propertiesConfig.getMailSmimeSigingKeyStore();
7575

7676
return new SmtpMailService(fromAddress, toAddresses, toAddressesCc, replyToAddresses, useSmtps,
7777
mailServerHostname, mailServerPort, mailServerUsername, mailServerPassword, trustStore, keyStore,
@@ -97,10 +97,10 @@ public void afterPropertiesSet() throws Exception
9797
propertiesConfig.getMailUseSmtps(), propertiesConfig.getMailServerHostname(),
9898
propertiesConfig.getMailServerPort(), propertiesConfig.getMailServerUsername(),
9999
propertiesConfig.getMailServerPassword() != null ? "***" : "null",
100-
propertiesConfig.getMailServerTrustStoreFile(),
101-
propertiesConfig.getMailServerClientCertificateFile(),
102-
propertiesConfig.getMailServerClientCertificatePrivateKeyFile(),
103-
propertiesConfig.getMailServerClientCertificatePrivateKeyFilePassword() != null ? "***" : "null",
100+
propertiesConfig.getMailServerTrustStoreFileOrFolder(),
101+
propertiesConfig.getMailClientCertificateFile(),
102+
propertiesConfig.getMailClientCertificatePrivateKeyFile(),
103+
propertiesConfig.getMailClientCertificatePrivateKeyFilePassword() != null ? "***" : "null",
104104
propertiesConfig.getMailSmimeSigingKeyStoreFile(),
105105
propertiesConfig.getMailSmimeSigingKeyStorePassword() != null ? "***" : "null",
106106
propertiesConfig.getSendTestMailOnStartup(), propertiesConfig.getSendMailOnErrorLogEvent(),

dsf-bpe/dsf-bpe-server/src/main/java/dev/dsf/bpe/spring/config/PluginFactoryConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ public KeyStore getTrustStore()
118118
@Override
119119
public KeyStore getKeyStore()
120120
{
121-
return propertiesConfig.getDsfClientCertificate(keyStorePassword);
121+
return propertiesConfig.getDsfClientKeyStore(keyStorePassword);
122122
}
123123

124124
@Override

0 commit comments

Comments
 (0)