From 494d823e9d2f3dae7587cc9824cae9fbd900e4e1 Mon Sep 17 00:00:00 2001 From: Cao Manh Dat Date: Mon, 30 Sep 2019 10:28:17 +0100 Subject: [PATCH] SOLR-13798: SSL: Adding Enabling/Disabling client's hostname verification config --- solr/CHANGES.txt | 2 ++ solr/bin/solr | 5 +++++ solr/bin/solr.in.cmd | 2 ++ solr/bin/solr.in.sh | 2 ++ solr/server/etc/jetty-ssl.xml | 1 + solr/solr-ref-guide/src/enabling-ssl.adoc | 6 +++++- 6 files changed, 17 insertions(+), 1 deletion(-) diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index 886d8444161..b38d47122e7 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -129,6 +129,8 @@ Improvements * LUCENE-8984: MoreLikeThis MLT is biased for uncommon fields (Andy Hind via Anshum Gupta) +* SOLR-13798: SSL: Adding Enabling/Disabling client's hostname verification config (Cao Manh Dat) + Bug Fixes ---------------------- diff --git a/solr/bin/solr b/solr/bin/solr index ca1948f7d88..55cb1479a8a 100755 --- a/solr/bin/solr +++ b/solr/bin/solr @@ -209,6 +209,11 @@ if [ "$SOLR_SSL_ENABLED" == "true" ]; then if [ -n "$SOLR_SSL_NEED_CLIENT_AUTH" ]; then SOLR_SSL_OPTS+=" -Dsolr.jetty.ssl.needClientAuth=$SOLR_SSL_NEED_CLIENT_AUTH" fi + + if [ -z "$SOLR_SSL_CLIENT_HOSTNAME_VERIFICATION" ] ; then + SOLR_SSL_OPTS+=" -Dsolr.jetty.ssl.verifyClientHostName=HTTPS" + fi + if [ -n "$SOLR_SSL_WANT_CLIENT_AUTH" ]; then SOLR_SSL_OPTS+=" -Dsolr.jetty.ssl.wantClientAuth=$SOLR_SSL_WANT_CLIENT_AUTH" fi diff --git a/solr/bin/solr.in.cmd b/solr/bin/solr.in.cmd index a831c55d3a7..e46233672d3 100755 --- a/solr/bin/solr.in.cmd +++ b/solr/bin/solr.in.cmd @@ -122,6 +122,8 @@ REM Require clients to authenticate REM set SOLR_SSL_NEED_CLIENT_AUTH=false REM Enable clients to authenticate (but not require) REM set SOLR_SSL_WANT_CLIENT_AUTH=false +REM Verify client hostname during SSL handshake +REM set SOLR_SSL_CLIENT_HOSTNAME_VERIFICATION=false REM SSL Certificates contain host/ip "peer name" information that is validated by default. Setting REM this to false can be useful to disable these checks when re-using a certificate on many hosts REM set SOLR_SSL_CHECK_PEER_NAME=true diff --git a/solr/bin/solr.in.sh b/solr/bin/solr.in.sh index 9d1be37d2e3..d4e6b7bb668 100644 --- a/solr/bin/solr.in.sh +++ b/solr/bin/solr.in.sh @@ -139,6 +139,8 @@ #SOLR_SSL_NEED_CLIENT_AUTH=false # Enable clients to authenticate (but not require) #SOLR_SSL_WANT_CLIENT_AUTH=false +# Verify client's hostname during SSL handshake +#SOLR_SSL_CLIENT_HOSTNAME_VERIFICATION=false # SSL Certificates contain host/ip "peer name" information that is validated by default. Setting # this to false can be useful to disable these checks when re-using a certificate on many hosts #SOLR_SSL_CHECK_PEER_NAME=true diff --git a/solr/server/etc/jetty-ssl.xml b/solr/server/etc/jetty-ssl.xml index 9ff5accf402..367064131ba 100644 --- a/solr/server/etc/jetty-ssl.xml +++ b/solr/server/etc/jetty-ssl.xml @@ -17,6 +17,7 @@ + diff --git a/solr/solr-ref-guide/src/enabling-ssl.adoc b/solr/solr-ref-guide/src/enabling-ssl.adoc index 5edff5c856d..2d9e69c4609 100644 --- a/solr/solr-ref-guide/src/enabling-ssl.adoc +++ b/solr/solr-ref-guide/src/enabling-ssl.adoc @@ -90,6 +90,8 @@ SOLR_SSL_TRUST_STORE_PASSWORD=secret SOLR_SSL_NEED_CLIENT_AUTH=false # Enable clients to authenticate (but not require) SOLR_SSL_WANT_CLIENT_AUTH=false +# Verify client's hostname during SSL handshake +SOLR_SSL_CLIENT_HOSTNAME_VERIFICATION=false # SSL Certificates contain host/ip "peer name" information that is validated by default. Setting # this to false can be useful to disable these checks when re-using a certificate on many hosts SOLR_SSL_CHECK_PEER_NAME=true @@ -101,7 +103,7 @@ SOLR_SSL_TRUST_STORE_TYPE=JKS When you start Solr, the `bin/solr` script includes the settings in `bin/solr.in.sh` and will pass these SSL-related system properties to the JVM. .Client Authentication Settings -WARNING: Enable either SOLR_SSL_NEED_CLIENT_AUTH or SOLR_SSL_WANT_CLIENT_AUTH but not both at the same time. They are mutually exclusive and Jetty will select one of them which may not be what you expect. +WARNING: Enable either SOLR_SSL_NEED_CLIENT_AUTH or SOLR_SSL_WANT_CLIENT_AUTH but not both at the same time. They are mutually exclusive and Jetty will select one of them which may not be what you expect. SOLR_SSL_CLIENT_HOSTNAME_VERIFICATION should be set to true if you only want requests from authenticated host-names to be accepted. Similarly, when you start Solr on Windows, the `bin\solr.cmd` script includes the settings in `bin\solr.in.cmd` - uncomment and update the set of properties beginning with `SOLR_SSL_*` to pass these SSL-related system properties to the JVM: @@ -121,6 +123,8 @@ REM Require clients to authenticate set SOLR_SSL_NEED_CLIENT_AUTH=false REM Enable clients to authenticate (but not require) set SOLR_SSL_WANT_CLIENT_AUTH=false +REM Verify client hostname during SSL handshake +set SOLR_SSL_CLIENT_HOSTNAME_VERIFICATION=false REM SSL Certificates contain host/ip "peer name" information that is validated by default. Setting REM this to false can be useful to disable these checks when re-using a certificate on many hosts set SOLR_SSL_CHECK_PEER_NAME=true