Commit 108f2841 authored by Alon Bar-Lev's avatar Alon Bar-Lev Committed by Stephane Nicoll

Allow to disable SSL client authentication on the management port

When server and management are at different ports, and when server
requires TLS client authentication, then there is no simple method to
disable TLS client authentication for management port.

This commit adds an additional "none" option to ssl.client-auth.

Example:

    server.port=8080
    server.ssl.enabled=true
    server.ssl.client-auth=need
    management.server.port=8081
    management.server.ssl.enabled=true
    management.server.ssl.client-auth=none

See gh-14985
parent 476fe6ed
...@@ -303,7 +303,7 @@ ...@@ -303,7 +303,7 @@
}, },
{ {
"name": "management.server.ssl.client-auth", "name": "management.server.ssl.client-auth",
"description": "Whether client authentication is wanted (\"want\") or needed (\"need\"). Requires a trust store." "description": "Whether client authentication is not wanted (\"none\"), wanted (\"want\") or needed (\"need\"). Requires a trust store."
}, },
{ {
"name": "management.server.ssl.enabled", "name": "management.server.ssl.enabled",
......
...@@ -136,7 +136,7 @@ ...@@ -136,7 +136,7 @@
}, },
{ {
"name": "server.ssl.client-auth", "name": "server.ssl.client-auth",
"description": "Whether client authentication is wanted (\"want\") or needed (\"need\"). Requires a trust store." "description": "Whether client authentication is not wanted (\"none\"), wanted (\"want\") or needed (\"need\"). Requires a trust store."
}, },
{ {
"name": "server.ssl.enabled", "name": "server.ssl.enabled",
......
...@@ -233,7 +233,7 @@ content into your application. Rather, pick only the properties that you need. ...@@ -233,7 +233,7 @@ content into your application. Rather, pick only the properties that you need.
server.servlet.session.timeout=30m # Session timeout. If a duration suffix is not specified, seconds will be used. server.servlet.session.timeout=30m # Session timeout. If a duration suffix is not specified, seconds will be used.
server.servlet.session.tracking-modes= # Session tracking modes. server.servlet.session.tracking-modes= # Session tracking modes.
server.ssl.ciphers= # Supported SSL ciphers. server.ssl.ciphers= # Supported SSL ciphers.
server.ssl.client-auth= # Whether client authentication is wanted ("want") or needed ("need"). Requires a trust store. server.ssl.client-auth= # Whether client authentication is not wanted ("none"), wanted ("want") or needed ("need"). Requires a trust store.
server.ssl.enabled=true # Whether to enable SSL support. server.ssl.enabled=true # Whether to enable SSL support.
server.ssl.enabled-protocols= # Enabled SSL protocols. server.ssl.enabled-protocols= # Enabled SSL protocols.
server.ssl.key-alias= # Alias that identifies the key in the key store. server.ssl.key-alias= # Alias that identifies the key in the key store.
...@@ -1205,7 +1205,7 @@ content into your application. Rather, pick only the properties that you need. ...@@ -1205,7 +1205,7 @@ content into your application. Rather, pick only the properties that you need.
management.server.port= # Management endpoint HTTP port (uses the same port as the application by default). Configure a different port to use management-specific SSL. management.server.port= # Management endpoint HTTP port (uses the same port as the application by default). Configure a different port to use management-specific SSL.
management.server.servlet.context-path= # Management endpoint context-path (for instance, `/management`). Requires a custom management.server.port. management.server.servlet.context-path= # Management endpoint context-path (for instance, `/management`). Requires a custom management.server.port.
management.server.ssl.ciphers= # Supported SSL ciphers. management.server.ssl.ciphers= # Supported SSL ciphers.
management.server.ssl.client-auth= # Whether client authentication is wanted ("want") or needed ("need"). Requires a trust store. management.server.ssl.client-auth= # Whether client authentication is not wanted ("none"), wanted ("want") or needed ("need"). Requires a trust store.
management.server.ssl.enabled=true # Whether to enable SSL support. management.server.ssl.enabled=true # Whether to enable SSL support.
management.server.ssl.enabled-protocols= # Enabled SSL protocols. management.server.ssl.enabled-protocols= # Enabled SSL protocols.
management.server.ssl.key-alias= # Alias that identifies the key in the key store. management.server.ssl.key-alias= # Alias that identifies the key in the key store.
......
...@@ -28,7 +28,7 @@ public class Ssl { ...@@ -28,7 +28,7 @@ public class Ssl {
private boolean enabled = true; private boolean enabled = true;
private ClientAuth clientAuth; private ClientAuth clientAuth = ClientAuth.NONE;
private String[] ciphers; private String[] ciphers;
...@@ -69,8 +69,8 @@ public class Ssl { ...@@ -69,8 +69,8 @@ public class Ssl {
} }
/** /**
* Return Whether client authentication is wanted ("want") or needed ("need"). * Return Whether client authentication is not wanted ("none"), wanted ("want") or
* Requires a trust store. * needed ("need"). Requires a trust store.
* @return the {@link ClientAuth} to use * @return the {@link ClientAuth} to use
*/ */
public ClientAuth getClientAuth() { public ClientAuth getClientAuth() {
...@@ -78,7 +78,12 @@ public class Ssl { ...@@ -78,7 +78,12 @@ public class Ssl {
} }
public void setClientAuth(ClientAuth clientAuth) { public void setClientAuth(ClientAuth clientAuth) {
this.clientAuth = clientAuth; if (clientAuth == null) {
this.clientAuth = ClientAuth.NONE;
}
else {
this.clientAuth = clientAuth;
}
} }
/** /**
...@@ -243,6 +248,11 @@ public class Ssl { ...@@ -243,6 +248,11 @@ public class Ssl {
*/ */
public enum ClientAuth { public enum ClientAuth {
/**
* Client authentication is not wanted.
*/
NONE,
/** /**
* Client authentication is wanted but not mandatory. * Client authentication is wanted but not mandatory.
*/ */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment