|
Play Framework/Scala example source code file (SystemConfiguration.scala)
The SystemConfiguration.scala Play Framework example source code/* * * * Copyright (C) 2009-2013 Typesafe Inc. <http://www.typesafe.com> * */ package play.api.libs.ws.ssl import play.api.libs.ws.WSClientConfig import java.security.{ Security, PrivilegedExceptionAction } /** * Configures global system properties on the JSSE implementation, if defined. * * WARNING: This class sets system properties to configure JSSE code which typically uses static initialization on * load. Because of this, if classes are loaded in BEFORE this code has a chance to operate, you may find that this * code works inconsistently. The solution is to set the system properties on the command line explicitly (or in the * case of "ocsp.enable", in the security property file). */ class SystemConfiguration { val logger = org.slf4j.LoggerFactory.getLogger(getClass) def configure(config: WSClientConfig) { config.ssl.map { ssl => ssl.loose.map { loose => loose.allowUnsafeRenegotiation.map(configureUnsafeRenegotiation) loose.allowLegacyHelloMessages.map(configureAllowLegacyHelloMessages) } ssl.checkRevocation.map(configureCheckRevocation) } } def configureUnsafeRenegotiation(allowUnsafeRenegotiation: Boolean) { System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", allowUnsafeRenegotiation.toString) logger.debug("configureUnsafeRenegotiation: sun.security.ssl.allowUnsafeRenegotiation = {}", allowUnsafeRenegotiation.toString) } def configureAllowLegacyHelloMessages(allowLegacyHelloMessages: Boolean) { System.setProperty("sun.security.ssl.allowLegacyHelloMessages", allowLegacyHelloMessages.toString) logger.debug("configureAllowLegacyHelloMessages: sun.security.ssl.allowLegacyHelloMessages = {}", allowLegacyHelloMessages.toString) } def configureCheckRevocation(checkRevocation: Boolean) { // http://docs.oracle.com/javase/6/docs/technotes/guides/security/certpath/CertPathProgGuide.html#AppC // https://blogs.oracle.com/xuelei/entry/enable_ocsp_checking // 1.7: PXIXCertPathValidator.populateVariables, it is dynamic so no override needed. Security.setProperty("ocsp.enable", checkRevocation.toString) logger.debug("configureCheckRevocation: ocsp.enable = {}", checkRevocation.toString) System.setProperty("com.sun.security.enableCRLDP", checkRevocation.toString) logger.debug("configureCheckRevocation: com.sun.security.enableCRLDP = {}", checkRevocation.toString) System.setProperty("com.sun.net.ssl.checkRevocation", checkRevocation.toString) } /** * For use in testing. */ def clearProperties() { Security.setProperty("ocsp.enable", "false") System.clearProperty("com.sun.security.enableCRLDP") System.clearProperty("com.sun.net.ssl.checkRevocation") System.clearProperty("sun.security.ssl.allowLegacyHelloMessages") System.clearProperty("sun.security.ssl.allowUnsafeRenegotiation") } } Other Play Framework source code examplesHere is a short list of links related to this Play Framework SystemConfiguration.scala source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.