[ 
https://issues.apache.org/jira/browse/KNOX-1756?focusedWorklogId=202834&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-202834
 ]

ASF GitHub Bot logged work on KNOX-1756:
----------------------------------------

                Author: ASF GitHub Bot
            Created on: 22/Feb/19 19:51
            Start Date: 22/Feb/19 19:51
    Worklog Time Spent: 10m 
      Work Description: risdenk commented on issue #56: KNOX-1756 - Knox 
Gateway TLS Keystore and Alias Should be Configurable
URL: https://github.com/apache/knox/pull/56#issuecomment-466525115
 
 
   `Would you like this behavior changed to require `--force` if the entry 
exists in the keystore? However I think overwriting was the behavior before the 
changes in this patch.`
   
   I think the existing behavior made sense when it was in 
`data/security/keystores/gateway.jks`. This was a path that was fully owned by 
Knox. Since we are now following the path to the custom keystore, we should be 
more careful about what we overwrite. Not sure how easy it would be to check if 
the identity path is the default vs a configured one?
 
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Issue Time Tracking
-------------------

    Worklog Id:     (was: 202834)
    Time Spent: 10.5h  (was: 10h 20m)

> Knox Gateway TLS Keystore and Alias Should be Configurable
> ----------------------------------------------------------
>
>                 Key: KNOX-1756
>                 URL: https://issues.apache.org/jira/browse/KNOX-1756
>             Project: Apache Knox
>          Issue Type: Improvement
>          Components: Server
>    Affects Versions: 1.3.0
>            Reporter: Robert Levas
>            Assignee: Robert Levas
>            Priority: Major
>              Labels: keystore, ssl
>             Fix For: 1.3.0
>
>          Time Spent: 10.5h
>  Remaining Estimate: 0h
>
> h1. Problem
> The location of the keystore housing the Knox Gateway TLS certificate is 
> hardcoded to {{<calculated from configs>/keystores/gateway.jks}} and the 
> certificate alias is hardcoded to “{{gateway-identity}}”. This limits the 
> ability for external management facilities to setup a custom TLS key and 
> certificate for the Knox Gateway. For example, a host-wide, CA-signed, TLS 
> certificate.
> Knox has configuration hooks for the following (optional) properties
>  * Home Directory - GatewayConfig.getGatewayHomeDir()
>  ** Gateway-site property: GATEWAY_HOME
>  ** System property: GATEWAY_HOME
>  ** Environment variable: GATEWAY_HOME
>  * Data Directory - GatewayConfig.getGatewayDataDir()
>  ** System property: GATEWAY_DATA_HOME
>  ** Environment variable: GATEWAY_DATA_HOME
>  ** Gateway-site property: gateway.data.dir
>  ** Calculated: [Home Directory] + [Path Separator] + “data”
>  * Security Directory - GatewayConfig.getGatewaySecurityDir()
>  ** Gateway-site property: gateway.security.dir
>  ** Calculated: [Data Directory] + [Path Separator] + “security”
> *Note*: the calculation for the home directory is inconsistent with the other 
> directory calculations. This inconsistency may be confusing to users and thus 
> should be fixed to be
>  * System property: GATEWAY_HOME
>  * Environment variable: GATEWAY_HOME
>  * Gateway-site property: gateway.home.dir
> The path to the Knox Gateway TLS keystore is calculated as
> {noformat}
> [Security Directory] + [Path Separator] + “keystores” + [Path Separator] + 
> “gateway.jks”
> {noformat}
> h1. Solution
> To make it easier to use an externally provided TLS key and certificate, the 
> Knox Gateway should allow the TLS keystore file and alias name to be 
> configurable. The following properties should be made available:
>  * TLS Keystore File Path - GatewayConfig.getIdentityKeystorePath()
>  ** Gateway-site property: gateway.tls.keystore.path
>  ** Calculated: [Security Directory] + [Path Separator] + "keystores"  +[Path 
> Separator]+  "gateway.jks"
>  * TLS Keystore Password Alias (value to be stored in the Knox Gateway 
> credential store) - GatewayConfig.getIdentityKeystorePasswordAlias()
>  ** Gateway-site property: gateway.tls.keystore.password.alias
>  ** Calculated: "gateway-identity-keystore-password"
>  * TLS Keystore Type - GatewayConfig.getIdentityKeystoreType()
>  ** Gateway-site property: gateway.tls.keystore.type
>  ** Calculated: :”jks”
>  * TLS Key Alias - GatewayConfig.getIdentityKeyAlias()
>  ** Gateway-site property: gateway.tls.key.alias
>  ** Calculated: “gateway-identity”
>  * TLS Key Passphrase Alias - GatewayConfig.getIdentityKeyPassphraseAlias()
>  ** Gateway-site property: gateway.tls.key.passphrase.alias
>  ** Calculated: "gateway-identity-passphrase"
> Additional methods for GatewayConfig should be added to improve consistency 
> and prepare for potential changes to signing key related configurations
>  * Keystore Directory - GatewayConfig.getKeystoreDir()
>  ** Calculated: [Security Directory] + [Path Separator] + “keystores”
>  * Signing Keystore File Path - GatewayConfig.getSigningKeystorePath()
>  ** Calculated: If gateway.signing.keystore.name is set, [Keystore Directory] 
> + [Path Separator] + [Signing Keystore Name]; else [TLS Keystore File Path]
>  * Signing Keystore File Type - GatewayConfig.getSigningKeystoreType()
>  ** Calculated: If gateway.signing.keystore.name is set, value of 
> gateway.signing.keystore.type (default: "jks"); else [TLS Keystore File Type]
>  * Signing Keystore Password Alias - 
> GatewayConfig.getSigningKeystorePasswordAlias()
>  ** Calculated: If gateway.signing.keystore.name is set, value of 
> gateway.signing.keystore.password.alias (default: 
> "signing.keystore.password"); else [TLS Keystore Password Alias]
>  * Signing Key Alias - GatewayConfig.getSigningKeyAlias()
>  ** Calculated: If gateway.signing.keystore.name is set, value of 
> gateway.signing.key.alias (default: "gateway-identity"); else [TLS Key Alias]
>  * Signing Key Passphrase Alias - GatewayConfig.getSigningKeyPassphraseAlias()
>  ** Calculated: If gateway.signing.keystore.name is set, value of 
> gateway.signing.key.passphrase.alias (default: "signing.key.passphrase"); 
> else [TLS Key Passphrase Alias]
> Note: the calculated values are set so they are backwards compatible with 
> older versions of Knox to ease the upgrading process.
> Hardcoded values related to the identity and signing keystore location and 
> relevant alias names should be removed, using the GatewayConfig methods to 
> provide configured or calculated values.  Assumptions that the keystore and 
> key passwords are the master secret should be removed; however, if a password 
> cannot be found via the AliasService, the fallback value should the master 
> secret. 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to