Skip to content

Commit 66c17f6

Browse files
committed
Support for ACS 7.0+ default configuration
From ACS 7.0, passwords for truststores, keystores and certificates can be passed using Java Environment variables via JAVA_TOOL_OPTIONS. So password files are not required any more. Additionally, default generation for metadata encryption has been changed.
1 parent 85401cb commit 66c17f6

File tree

4 files changed

+161
-20
lines changed

4 files changed

+161
-20
lines changed

Dockerfile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ ENV ALFRESCO_VERSION=enterprise \
3333
BROWSER_CERT_DNAME="/C=GB/ST=UK/L=Maidenhead/O=Alfresco Software Ltd./OU=Unknown/CN=Custom Browser Client" \
3434
CA_SERVER_NAME=localhost \
3535
ALFRESCO_SERVER_NAME=localhost \
36-
SOLR_SERVER_NAME=localhost
36+
SOLR_SERVER_NAME=localhost \
37+
ALFRESCO_FORMAT=current
3738

3839
# Exposing working folders:
3940
# - keystores folder, where generated keystores, truststores and password files are produced
@@ -58,4 +59,5 @@ CMD ["sh", "-c", "./run.sh \
5859
-caservername \"$CA_SERVER_NAME\" \
5960
-alfrescoservername \"$ALFRESCO_SERVER_NAME\" \
6061
-solrservername \"$SOLR_SERVER_NAME\" \
62+
-alfrescoformat \"$ALFRESCO_FORMAT\" \
6163
"]

README.md

Lines changed: 53 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ Both command line scripts and Docker Image resources can be parametrised by usin
107107
| -caservername | CA_SERVER_NAME | DNS Name for CA Server | Any string, `localhost` by default |
108108
| -alfrescoservername | ALFRESCO_SERVER_NAME | DNS Name for Alfresco Server | Any string, `localhost` by default |
109109
| -solrservername | SOLR_SERVER_NAME | DNS Name for SOLR Server | Any string, `localhost` by default |
110+
| -alfrescoformat | ALFRESCO_FORMAT | Default format for certificates, truststores and keystores | `classic` or `current` (only supported from ACS 7.0) |
110111

111112
When using Alfresco on an internal network, each server should have a different name. This names can be configured on the parameters named as `*servername`. In order to avoid browser complains about certificates, it's recommended to include the name of the server as `Alternative Name` in the certificate. This should be at least required for SOLR Web Console, as this application is only available in `https` when using this configuration. If you are working under a Web Proxy, use the name of this proxy for the `*servername` parameters.
112113

@@ -121,7 +122,7 @@ For instance, the following command will produce `keystores` folder in a host fo
121122
```bash
122123
$ cd ssl-tool
123124

124-
$ ./run.sh -keysize 2048 -alfrescoversion enterprise
125+
$ ./run.sh -keysize 2048 -alfrescoversion enterprise -alfrescoformat classic
125126

126127
$ tree keystores/
127128
keystores/
@@ -155,6 +156,30 @@ $ ./run.sh -cacertdname "/C=GB/ST=UK/L=Maidenhead/O=Alfresco/OU=Unknown/CN=Linux
155156

156157
Note that when `keystores` folder is not empty, the program exists without producing any keystore or truststore.
157158

159+
When using `current` Alfresco format (default option), instead of `classic`, following output is generated.
160+
161+
```bash
162+
$ cd ssl-tool
163+
164+
$ ./run.sh -keysize 2048 -alfrescoversion enterprise
165+
166+
$ tree keystores/
167+
keystores/
168+
├── alfresco
169+
│   ├── keystore
170+
│   ├── ssl.keystore
171+
│   └── ssl.truststore
172+
├── client
173+
│   └── browser.p12
174+
├── solr
175+
│   ├── ssl-repo-client.keystore
176+
│   └── ssl-repo-client.truststore
177+
└── zeppelin
178+
├── ssl-repo-client.keystore
179+
└── ssl-repo-client.truststore
180+
```
181+
182+
For the `current` format all the passwords are passed to the applications using Java Environment Variables, so the password files are not required any more.
158183

159184
## Batch Script Standalone (Windows)
160185

@@ -167,7 +192,7 @@ For instance, the following command will produce `keystores` folder in a host fo
167192
```bash
168193
C:\> cd ssl-tool-win
169194

170-
C:\> run.cmd -keysize 2048 -alfrescoversion community
195+
C:\> run.cmd -keysize 2048 -alfrescoversion community -alfrescoformat classic
171196

172197
C:\> tree /F keystores
173198
├───alfresco
@@ -199,6 +224,28 @@ C:\> run.cmd -cacertdname "/C=GB/ST=UK/L=Maidenhead/O=Alfresco/OU=Unknown/CN=Win
199224

200225
Note that when `keystores` folder is not empty, the program exists without producing any keystore or truststore.
201226

227+
When using `current` Alfresco format (default option), instead of `classic`, following output is generated.
228+
229+
```bash
230+
C:\> cd ssl-tool-win
231+
232+
C:\> run.cmd -keysize 2048 -alfrescoversion community
233+
234+
C:\> tree /F keystores
235+
├───alfresco
236+
│ keystore
237+
│ ssl.keystore
238+
│ ssl.truststore
239+
240+
├───client
241+
│ browser.p12
242+
243+
└───solr
244+
ssl.repo.client.keystore
245+
ssl.repo.client.truststore
246+
```
247+
248+
For the `current` format all the passwords are passed to the applications using Java Environment Variables, so the password files are not required any more.
202249

203250
## Installing Browser certificate
204251

@@ -251,21 +298,16 @@ $ tree keystores
251298
keystores
252299
├── alfresco
253300
│   ├── keystore
254-
│   ├── keystore-passwords.properties
255-
│   ├── ssl-keystore-passwords.properties
256-
│   ├── ssl-truststore-passwords.properties
257301
│   ├── ssl.keystore
258302
│   └── ssl.truststore
259303
├── client
260304
│   └── browser.p12
261305
├── solr
262-
│   ├── ssl-keystore-passwords.properties
263-
│   ├── ssl-truststore-passwords.properties
264-
│   ├── ssl.repo.client.keystore
265-
│   └── ssl.repo.client.truststore
306+
│   ├── ssl-repo-client.keystore
307+
│   └── ssl-repo-client.truststore
266308
└── zeppelin
267-
├── ssl.repo.client.keystore
268-
└── ssl.repo.client.truststore
309+
├── ssl-repo-client.keystore
310+
└── ssl-repo-client.truststore
269311
```
270312

271313
**Parameters**

ssl-tool-win/run.cmd

Lines changed: 52 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ REM * Server Certificate for SOLR (alias ssl.repo.client)
88
REM
99
REM "openssl.cnf" file is provided for CA Configuration.
1010
REM
11-
REM Once this script has been executed successfully, following resources are generated in ${KEYSTORES_DIR} folder:
11+
REM Once this script has been executed successfully, following resources are generated in %KEYSTORES_DIR% folder:
1212
REM
1313
REM .
1414
REM ├── alfresco
@@ -29,6 +29,22 @@ REM └── zeppelin
2929
REM ├── ssl.repo.client.keystore
3030
REM └── ssl.repo.client.truststore
3131
REM
32+
REM When using "current" Alfresco format (available from ACS 7.0), following resources are generated in %KEYSTORES_DIR%
33+
REM
34+
REM .
35+
REM ├── alfresco
36+
REM │   ├── keystore
37+
REM │   ├── ssl.keystore
38+
REM │   └── ssl.truststore
39+
REM ├── client
40+
REM │   └── browser.p12
41+
REM ├── solr
42+
REM │   ├── ssl-repo-client.keystore
43+
REM │   └── ssl-repo-client.truststore
44+
REM └── zeppelin
45+
REM ├── ssl-repo-client.keystore
46+
REM └── ssl-repo-client.truststore
47+
REM
3248
REM "alfresco" files must be copied to "alfresco/keystore" folder
3349
REM "solr" files must be copied to "solr6/keystore"
3450
REM "zeppelin" files must be copied to "zeppelin/keystore"
@@ -41,6 +57,9 @@ REM ----------
4157
REM Version of Alfresco: enterprise, community
4258
SET ALFRESCO_VERSION=enterprise
4359

60+
REM Using "current" format by default (only available from ACS 7.0+)
61+
SET ALFRESCO_FORMAT=current
62+
4463
REM Distinguished name of the CA
4564
SET CA_DNAME=/C=GB/ST=UK/L=Maidenhead/O=Alfresco Software Ltd./OU=Unknown/CN=Custom Alfresco CA
4665
REM Distinguished name of the Server Certificate for Alfresco
@@ -62,8 +81,12 @@ REM Keystore format (PKCS12, JKS, JCEKS)
6281
SET KEYSTORE_TYPE=JCEKS
6382
REM Truststore format (JKS, JCEKS)
6483
SET TRUSTSTORE_TYPE=JCEKS
65-
REM Encryption keystore format (JCEKS)
66-
SET ENC_STORE_TYPE=JCEKS
84+
REM Encryption keystore format: PKCS12 (default for "current"), JCEKS (default for "classic")
85+
IF "%ALFRESCO_FORMAT%" == "current" (
86+
SET ENC_STORE_TYPE=PKCS12
87+
) ELSE (
88+
SET ENC_STORE_TYPE=JCEKS
89+
)
6790

6891
REM Default password for every keystore and private key
6992
SET KEYSTORE_PASS=keystore
@@ -73,6 +96,12 @@ SET TRUSTSTORE_PASS=truststore
7396
REM Encryption secret key passwords
7497
SET ENC_STORE_PASS=password
7598
SET ENC_METADATA_PASS=password
99+
REM Encryption keystore format: PKCS12 (default for "current"), JCEKS (default for "classic")
100+
IF "%ALFRESCO_FORMAT%" == "current" (
101+
SET ENC_KEY_ALG="-keyalg AES -keysize 256"
102+
) ELSE (
103+
SET ENC_KEY_ALG="-keyalg DESede"
104+
)
76105

77106
REM Parse params from command line
78107
:loop
@@ -167,6 +196,12 @@ IF NOT "%1"=="" (
167196
SHIFT
168197
GOTO loop
169198
)
199+
IF "%1"=="-alfrescoformat" (
200+
SHIFT
201+
SET ALFRESCO_FORMAT=%~2
202+
SHIFT
203+
GOTO loop
204+
)
170205
ECHO "An invalid parameter was received: %1"
171206
EXIT /b
172207
)
@@ -376,7 +411,7 @@ ECHO ssl.alfresco.ca.password=%KEYSTORE_PASS%>> %ALFRESCO_KEYSTORES_DIR%\ssl-key
376411

377412
REM Generate Encryption Secret Key
378413
keytool -genseckey -alias metadata -keypass %ENC_METADATA_PASS% -storepass %ENC_STORE_PASS% -keystore %ALFRESCO_KEYSTORES_DIR%\keystore ^
379-
-storetype %ENC_STORE_TYPE% -keyalg DESede
414+
-storetype %ENC_STORE_TYPE% %ENC_KEY_ALG%
380415

381416
REM Create Alfresco Encryption password file
382417
ECHO aliases=metadata>> %ALFRESCO_KEYSTORES_DIR%\keystore-passwords.properties
@@ -398,3 +433,16 @@ keytool -importkeystore ^
398433
-srcalias 1 -destalias browser ^
399434
-srckeypass %KEYSTORE_PASS% -destkeypass %KEYSTORE_PASS% ^
400435
-noprompt
436+
437+
REM Renaming files for current Alfresco Format
438+
IF "%ALFRESCO_FORMAT%" == "current" (
439+
del %SOLR_KEYSTORES_DIR%/ssl-truststore-passwords.properties
440+
del %SOLR_KEYSTORES_DIR%/ssl-keystore-passwords.properties
441+
del %ALFRESCO_KEYSTORES_DIR%/ssl-truststore-passwords.properties
442+
del %ALFRESCO_KEYSTORES_DIR%/ssl-keystore-passwords.properties
443+
del %ALFRESCO_KEYSTORES_DIR%/keystore-passwords.properties
444+
move %SOLR_KEYSTORES_DIR%/ssl.repo.client.truststore %SOLR_KEYSTORES_DIR%/ssl-repo-client.truststore
445+
move %SOLR_KEYSTORES_DIR%/ssl.repo.client.keystore %SOLR_KEYSTORES_DIR%/ssl-repo-client.keystore
446+
move %ZEPPELIN_KEYSTORES_DIR%/ssl.repo.client.keystore %ZEPPELIN_KEYSTORES_DIR%/ssl-repo-client.keystore
447+
move %ZEPPELIN_KEYSTORES_DIR%/ssl.repo.client.truststore %ZEPPELIN_KEYSTORES_DIR%/ssl-repo-client.truststore
448+
)

ssl-tool/run.sh

Lines changed: 53 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ set -o nounset
1212
#
1313
# "openssl.cnf" file is provided for CA Configuration.
1414
#
15-
# Once this script has been executed successfully, following resources are generated in ${KEYSTORES_DIR} folder:
15+
# Once this script has been executed successfully, following resources are generated in ${KEYSTORES_DIR} folder for "classic" Alfresco format:
1616
#
1717
# .
1818
# ├── alfresco
@@ -33,6 +33,21 @@ set -o nounset
3333
# ├── ssl.repo.client.keystore
3434
# └── ssl.repo.client.truststore
3535
#
36+
# When using "current" Alfresco format (available from ACS 7.0), following resources are generated in ${KEYSTORES_DIR}
37+
# .
38+
# ├── alfresco
39+
# │   ├── keystore
40+
# │   ├── ssl.keystore
41+
# │   └── ssl.truststore
42+
# ├── client
43+
# │   └── browser.p12
44+
# ├── solr
45+
# │   ├── ssl-repo-client.keystore
46+
# │   └── ssl-repo-client.truststore
47+
# └── zeppelin
48+
# ├── ssl-repo-client.keystore
49+
# └── ssl-repo-client.truststore
50+
#
3651
# "alfresco" files must be copied to "alfresco/keystore" folder
3752
# "solr" files must be copied to "solr6/keystore"
3853
# "zeppelin" files must be copied to "zeppelin/keystore"
@@ -43,6 +58,9 @@ set -o nounset
4358
# Version of Alfresco: enterprise, community
4459
ALFRESCO_VERSION=enterprise
4560

61+
# Using "current" format by default (only available from ACS 7.0+)
62+
ALFRESCO_FORMAT=current
63+
4664
# Distinguished name of the CA
4765
CA_DNAME="/C=GB/ST=UK/L=Maidenhead/O=Alfresco Software Ltd./OU=Unknown/CN=Custom Alfresco CA"
4866
# Distinguished name of the Server Certificate for Alfresco
@@ -64,8 +82,12 @@ KEY_SIZE=1024
6482
KEYSTORE_TYPE=JCEKS
6583
# Truststore format (JKS, JCEKS)
6684
TRUSTSTORE_TYPE=JCEKS
67-
# Encryption keystore format (JCEKS)
68-
ENC_STORE_TYPE=JCEKS
85+
# Encryption keystore format: PKCS12 (default for "current"), JCEKS (default for "classic")
86+
if [ "$ALFRESCO_FORMAT" = "current" ]; then
87+
ENC_STORE_TYPE=PKCS12
88+
else
89+
ENC_STORE_TYPE=JCEKS
90+
fi
6991

7092
# Default password for every keystore and private key
7193
KEYSTORE_PASS=keystore
@@ -75,6 +97,12 @@ TRUSTSTORE_PASS=truststore
7597
# Encryption secret key passwords
7698
ENC_STORE_PASS=password
7799
ENC_METADATA_PASS=password
100+
# Key algorithm: AES (default for "current"), DESede (default for "classic")
101+
if [ "$ALFRESCO_FORMAT" = "current" ]; then
102+
ENC_KEY_ALG="-keyalg AES -keysize 256"
103+
else
104+
ENC_KEY_ALG="-keyalg DESede"
105+
fi
78106

79107
# Folder where keystores, truststores and cerfiticates are generated
80108
KEYSTORES_DIR=keystores
@@ -303,7 +331,7 @@ function generate {
303331

304332
# Generate Encryption Secret Key
305333
keytool -genseckey -alias metadata -keypass $ENC_METADATA_PASS -storepass $ENC_STORE_PASS -keystore ${ALFRESCO_KEYSTORES_DIR}/keystore \
306-
-storetype $ENC_STORE_TYPE -keyalg DESede
334+
-storetype $ENC_STORE_TYPE $ENC_KEY_ALG
307335

308336
# Create Alfresco Encryption password file
309337
echo "aliases=metadata" >> ${ALFRESCO_KEYSTORES_DIR}/keystore-passwords.properties
@@ -326,6 +354,21 @@ function generate {
326354
-srckeypass $KEYSTORE_PASS -destkeypass $KEYSTORE_PASS \
327355
-noprompt
328356

357+
#
358+
# Renaming files for current Alfresco Format
359+
#
360+
if [ "$ALFRESCO_FORMAT" = "current" ]; then
361+
rm ${SOLR_KEYSTORES_DIR}/ssl-truststore-passwords.properties
362+
rm ${SOLR_KEYSTORES_DIR}/ssl-keystore-passwords.properties
363+
rm ${ALFRESCO_KEYSTORES_DIR}/ssl-truststore-passwords.properties
364+
rm ${ALFRESCO_KEYSTORES_DIR}/ssl-keystore-passwords.properties
365+
rm ${ALFRESCO_KEYSTORES_DIR}/keystore-passwords.properties
366+
mv ${SOLR_KEYSTORES_DIR}/ssl.repo.client.truststore ${SOLR_KEYSTORES_DIR}/ssl-repo-client.truststore
367+
mv ${SOLR_KEYSTORES_DIR}/ssl.repo.client.keystore ${SOLR_KEYSTORES_DIR}/ssl-repo-client.keystore
368+
mv ${ZEPPELIN_KEYSTORES_DIR}/ssl.repo.client.keystore ${ZEPPELIN_KEYSTORES_DIR}/ssl-repo-client.keystore
369+
mv ${ZEPPELIN_KEYSTORES_DIR}/ssl.repo.client.truststore ${ZEPPELIN_KEYSTORES_DIR}/ssl-repo-client.truststore
370+
fi
371+
329372
}
330373

331374
# EXECUTION
@@ -408,6 +451,11 @@ do
408451
SOLR_SERVER_NAME="$2"
409452
shift
410453
;;
454+
# Alfresco Format: "classic" / "current" is supported only from 7.0
455+
-alfrescoformat)
456+
ALFRESCO_FORMAT="$2"
457+
shift
458+
;;
411459
*)
412460
echo "An invalid parameter was received: $1"
413461
echo "Allowed parameters:"
@@ -426,6 +474,7 @@ do
426474
echo " -caservername"
427475
echo " -alfrescoservername"
428476
echo " -solrservername"
477+
echo " -alfrescoformat"
429478
exit 1
430479
;;
431480
esac

0 commit comments

Comments
 (0)