Ok, I know that this is commonly asked, but I can't help thinking that
the answer isn't simply to create a symlink from the old solrhome to the
new solrhome.
I have a working Alfresco setup (Ubuntu 22.04, Community Edition 7.4,
with Solr on the same server, both installed from 'source' (ie. no
Docker/etc)). This uses Solr 6.6.5. The default location of solrhome is
/opt/alfresco-search-services/solrhome. I'd like to move this to a
separate (encrypted) partition.
To do this, I've set solr.in.sh as follows:
SOLR_HOME=/data/var/alfresco/solrhome
SOLR_SSL_KEY_STORE=/data/var/alfresco/solrhome/keystore/ssl-repo-client.keystore
SOLR_SSL_TRUST_STORE=/data/var/alfresco/solrhome/keystore/ssl-repo-client.truststore
With no other changes. I've also moved the existing solrhome directory
to the new location. Should this work?
I've run solr/bin/solr with verbose output, and it shows:
SOLR_SERVER_DIR = /opt/alfresco-search-services/solr/server
SOLR_HOME = /data/var/alfresco/solrhome
SOLR_OPTS =
-Dsolr.jetty.keystore=/data/var/alfresco/solrhome/keystore/ssl-repo-client.keystore
\
-Dsolr.jetty.keystore.password=my-password \
-Dsolr.jetty.keystore.type=JCEKS \
-Dsolr.jetty.truststore=/data/var/alfresco/solrhome/keystore/ssl-repo-client.truststore
\
-Dsolr.jetty.truststore.password=my-password \
-Dsolr.jetty.truststore.type=JCEKS \
-Dsolr.jetty.ssl.needClientAuth=true \
-Dsolr.jetty.ssl.wantClientAuth=false \
-Djavax.net.ssl.keyStore=/data/var/alfresco/solrhome/keystore/ssl-repo-client.keystore
\
-Djavax.net.ssl.keyStorePassword=my-password \
-Djavax.net.ssl.keyStoreType= \
-Djavax.net.ssl.trustStore=/data/var/alfresco/solrhome/keystore/ssl-repo-client.truststore
\
-Djavax.net.ssl.trustStorePassword=my-password \
-Djavax.net.ssl.trustStoreType=JCEKS \
...
SOLR_ADDL_ARGS =
-Dssl-keystore.password=my-password \
-Dssl-keystore.aliases=ssl-alfresco-ca,ssl-repo-client \
-Dssl-keystore.ssl-alfresco-ca.password=my-password \
-Dssl-keystore.ssl-repo-client.password=my-password \
-Dssl-truststore.password=my-password \
-Dssl-truststore.aliases=ssl-alfresco-ca,ssl-repo,ssl-repo-client \
-Dssl-truststore.ssl-alfresco-ca.password=my-password \
-Dssl-truststore.ssl-repo.password=my-password \
-Dssl-truststore.ssl-repo-client.password=my-password \
...
So it appears that the JVM is running with the correct options. However,
Solr fails to start, and the Solr log output shows:
2024-05-10 10:10:38.567 ERROR
(searcherExecutor-8-thread-1-processing-x:alfresco) [ a x:alfresco]
o.a.s.c.SolrCore null:org.alfresco.error.AlfrescoRuntimeException: 04100001
Failed to initialize keystore:
Location:
/opt/alfresco-search-services/solrhome/keystore/ssl-repo-client.keystore
Provider:
Type: JCEKS
at ...
Caused by: org.alfresco.error.AlfrescoRuntimeException: 04100000 Unable
to load key store:
/opt/alfresco-search-services/solrhome/keystore/ssl-repo-client.keystore
at ...
Caused by: java.io.FileNotFoundException: Caused by Can't find resource
'/opt/alfresco-search-services/solrhome/keystore/ssl-repo-client.keystore'
in classpath or '/data/var/alfresco/solrhome/alfresco'
at ...
The initial 'Location' is the /old/ pre-move keystore location, and
there's nothing there now. In the last 'Caused by' the new location is
almost correct ('/data/var/alfresco/solrhome/alfresco', instead of
'/data/var/alfresco/solrhome/alfresco'). Solr does create a new solrhome
in the default location.
There seems to be something in Solr which is forcing a search for a
default keystore without using SOLR_SSL_KEY_STORE and
SOLR_SSL_TRUST_STORE. any ideas on how I can fix this? Thanks.