| # 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 | |