@@ -257,30 +257,36 @@ object SSLDebugConfig {
257257 * default.
258258 * @param allowUnsafeRenegotiation Whether unsafe renegotiation should be allowed or not. If None, uses the platform
259259 * default.
260+ * @param disableHostnameVerification Whether hostname verification should be disabled. Be aware: SSL Config itself is not using this config.
261+ * However, it was kept because 3rd party libraries rely on its existence.
260262 * @param acceptAnyCertificate Whether any X.509 certificate should be accepted or not.
261263 */
262264final class SSLLooseConfig private [sslconfig] (
263265 val acceptAnyCertificate : Boolean = false ,
264266 val allowLegacyHelloMessages : Option [Boolean ] = None ,
265- val allowUnsafeRenegotiation : Option [Boolean ] = None
267+ val allowUnsafeRenegotiation : Option [Boolean ] = None ,
268+ val disableHostnameVerification : Boolean = false ,
266269) {
267270
268271 def withAcceptAnyCertificate (value : Boolean ): SSLLooseConfig = copy(acceptAnyCertificate = value)
269272 def withAllowLegacyHelloMessages (value : Option [Boolean ]): SSLLooseConfig = copy(allowLegacyHelloMessages = value)
270273 def withAllowUnsafeRenegotiation (value : Option [Boolean ]): SSLLooseConfig = copy(allowUnsafeRenegotiation = value)
274+ def withDisableHostnameVerification (value : Boolean ): SSLLooseConfig = copy(disableHostnameVerification = value)
271275
272276 private def copy (
273277 acceptAnyCertificate : Boolean = acceptAnyCertificate,
274278 allowLegacyHelloMessages : Option [Boolean ] = allowLegacyHelloMessages,
275- allowUnsafeRenegotiation : Option [Boolean ] = allowUnsafeRenegotiation
279+ allowUnsafeRenegotiation : Option [Boolean ] = allowUnsafeRenegotiation,
280+ disableHostnameVerification : Boolean = disableHostnameVerification,
276281 ): SSLLooseConfig = new SSLLooseConfig (
277282 acceptAnyCertificate = acceptAnyCertificate,
278283 allowLegacyHelloMessages = allowLegacyHelloMessages,
279- allowUnsafeRenegotiation = allowUnsafeRenegotiation
284+ allowUnsafeRenegotiation = allowUnsafeRenegotiation,
285+ disableHostnameVerification = disableHostnameVerification,
280286 )
281287
282288 override def toString =
283- s """ SSLLooseConfig( ${acceptAnyCertificate}, ${allowLegacyHelloMessages}, ${allowUnsafeRenegotiation}) """
289+ s """ SSLLooseConfig( ${acceptAnyCertificate}, ${allowLegacyHelloMessages}, ${allowUnsafeRenegotiation}, ${disableHostnameVerification} ) """
284290}
285291object SSLLooseConfig {
286292 def apply () = new SSLLooseConfig ()
@@ -437,13 +443,15 @@ class SSLConfigParser(c: EnrichedConfig, classLoader: ClassLoader, loggerFactory
437443 */
438444 def parseLooseOptions (config : EnrichedConfig ): SSLLooseConfig = {
439445
440- val allowMessages = config.getOptional[Boolean ](" allowLegacyHelloMessages" )
441- val allowUnsafeRenegotiation = config.getOptional[Boolean ](" allowUnsafeRenegotiation" )
442- val acceptAnyCertificate = config.get[Boolean ](" acceptAnyCertificate" )
446+ val allowMessages = config.getOptional[Boolean ](" allowLegacyHelloMessages" )
447+ val allowUnsafeRenegotiation = config.getOptional[Boolean ](" allowUnsafeRenegotiation" )
448+ val disableHostnameVerification = config.getOptional[Boolean ](" disableHostnameVerification" ).getOrElse(false )
449+ val acceptAnyCertificate = config.get[Boolean ](" acceptAnyCertificate" )
443450
444451 new SSLLooseConfig (
445452 allowLegacyHelloMessages = allowMessages,
446453 allowUnsafeRenegotiation = allowUnsafeRenegotiation,
454+ disableHostnameVerification = disableHostnameVerification,
447455 acceptAnyCertificate = acceptAnyCertificate
448456 )
449457 }
0 commit comments