blob: cafe441a9b745af9e1a9a5f413142edd05682cd4 [file] [log] [blame] [view] [edit]
# Secure Config plugin
Encrypt all the values contained in the Gerrit's secure.config.
## How to build
Clone the secure-config plugin into a Gerrit source tree under the
directory plugins/secure-config, and then run:
```
$ bazel build plugins/secure-config
```
Resulting plugin jar is generated under
bazel-genfiles/plugins/secure-config/secure-config.jar
## How to install
Differently from the other plugins, secure-config needs to be copied to the /lib
directory of Gerrit installation.
Example:
```
$ cp bazel-genfiles/plugins/secure-config/secure-config.jar $GERRIT_SITE/lib/
```
## How to configure
Add the gerrit.secureStoreClass configuration entry in gerrit.config to instruct
Gerrit to use the secure-store plugin for the encryption and decryption of all
values contained in your secure.config file.
Example:
```
$ cat - >> $GERRIT_SITE/etc/gerrit.config
[gerrit]
secureStoreClass = com.googlesource.gerrit.plugins.secureconfig.SecureConfigStore
^D
```
## How to run
Gerrit secure.config properties need to be generated and managed using the
Gerrit init wizard. All the passwords entered at init will be stored as
encrypted values and then decrypted *on-the-fly* when needed at runtime.
Example:
```
$ cd $GERRIT_SITE && java -jar bin/gerrit.war init
Using secure store: com.googlesource.gerrit.plugins.secureconfig.SecureConfigStore
*** Gerrit Code Review 2.13.2-1146-ga89e6a3
[...]
$ cat etc/secure.config
[auth]
registerEmailPrivateKey = hfMC1Yi9NF5N3Yz7cVNUdJNPQfbb2g47RnaPElTraTh0MMB2OE+xeg==
```
## Customising encryption settings
Default settings are fully working but are meant to be use for DEMO purpose
only. You typicallty need to customize them according to your Company's Policies
about passwords and confidential data encryption standards.
See below the gerrit.config parameters to customize the encryption security
settings.
### secureConfig.jceProvider
The JCE cryptographic provider for the encryption algorithms
and security keys.
Default: SunJCE
### secureConfig.cipher
The encyrption algorithm to be used for encryption. Different JCE providers
provide a different set of cryptographic algorithms.
Default: PBEWithMD5AndDES.
*NOTE - The default value is considered insecure and should not be used in
production*
### secureConfig.passwordDevice
The device or file where to retrieve the encryption passphrase.
Default: /dev/zero
*NOTE - The all-zeros password is considered insecure and should not be used in
production*
### secureConfig.passwordLength
The length in bytes of the password read from the passwordDevice.
Default: 8
*NOTE - A 8-bytes (64-bit) password length is considered insecure and should not
be used in production*
### secureConfig.encoding
Encoding to use when encrypting/decrypting values from secure.config.
Default: UTF-8