Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[2.6] 1724115: Initialize the NSS db when loading a JSS provider [ENT-1388] #2369

Merged
merged 1 commit into from Jun 27, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 2 additions & 1 deletion buildfile
@@ -1,6 +1,7 @@
# vi: set ft=ruby:

### Repositories
repositories.remote << "https://barnabycourt.fedorapeople.org/repo/candlepin"
repositories.remote << "http://awood.fedorapeople.org/ivy/candlepin/"
repositories.remote << "http://repository.jboss.org/nexus/content/groups/public/"
repositories.remote << "https://repo.maven.apache.org/maven2/"
Expand Down Expand Up @@ -158,7 +159,7 @@ BOUNCYCASTLE = group('bcpkix-jdk15on', 'bcprov-jdk15on',
:under => 'org.bouncycastle',
:version => '1.60')

JSS = ['org.mozilla:jss:jar:4.5.0', 'ldapjdk:ldapjdk:jar:4.19']
JSS = ['org.mozilla:jss:jar:4.4.6', 'ldapjdk:ldapjdk:jar:4.19']

SERVLET = 'javax.servlet:servlet-api:jar:2.5'

Expand Down
2 changes: 1 addition & 1 deletion server/pom.xml
Expand Up @@ -80,7 +80,7 @@
<org.hibernate.javax.persistence-hibernate-jpa-2.1-api.version>1.0.2.Final</org.hibernate.javax.persistence-hibernate-jpa-2.1-api.version>
<javax.transaction-jta.version>1.1</javax.transaction-jta.version>
<javax.persistence-javax.persistence-api.version>2.2</javax.persistence-javax.persistence-api.version>
<org.mozilla-jss.version>4.5.0</org.mozilla-jss.version>
<org.mozilla-jss.version>4.4.6</org.mozilla-jss.version>
<ldapjdk-ldapjdk.version>4.19</ldapjdk-ldapjdk.version>
<com.fasterxml.jackson.core-jackson-annotations.version>2.9.4</com.fasterxml.jackson.core-jackson-annotations.version>
<com.fasterxml.jackson.core-jackson-core.version>2.9.4</com.fasterxml.jackson.core-jackson-core.version>
Expand Down
33 changes: 31 additions & 2 deletions server/src/main/java/org/candlepin/pki/impl/JSSProviderLoader.java
Expand Up @@ -14,9 +14,16 @@
*/
package org.candlepin.pki.impl;

import org.mozilla.jss.CertDatabaseException;
import org.mozilla.jss.CryptoManager;
import org.mozilla.jss.JSSProvider;
import org.mozilla.jss.KeyDatabaseException;
import org.mozilla.jss.crypto.AlreadyInitializedException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.lang.reflect.Field;
import java.security.GeneralSecurityException;
import java.security.Security;
import java.util.Arrays;

Expand All @@ -27,7 +34,9 @@
* is already installed).
* */
public class JSSProviderLoader {
public static final JSSProvider JSS_PROVIDER = new JSSProvider();
private static JSSProvider jssProvider = null;
private static final String NSS_DB_LOCATION = "/etc/pki/nssdb";
private static final Logger log = LoggerFactory.getLogger(JSSProviderLoader.class);

static {
// Satellite 6 is only supported on 64 bit architectures
Expand Down Expand Up @@ -86,6 +95,26 @@ private JSSProviderLoader() {
}

public static void addProvider() {
Security.addProvider(JSS_PROVIDER);
log.debug("Starting call to JSSProviderLoader.addProvider()...");
CryptoManager.InitializationValues ivs =
new CryptoManager.InitializationValues(NSS_DB_LOCATION);
ivs.noCertDB = true;
ivs.installJSSProvider = false;
ivs.initializeJavaOnly = false;

try {
CryptoManager.initialize(ivs);
}
catch (AlreadyInitializedException e) {
log.warn("CryptoManager was already initialized.", e);
}
catch (KeyDatabaseException | CertDatabaseException | GeneralSecurityException e) {
log.error("Could not initialize CryptoManager!", e);
}

jssProvider = new JSSProvider();
int addProviderReturn = Security.addProvider(jssProvider);
log.debug("Finished call to JSSProviderLoader.addProvider(). Returned value: {}",
addProviderReturn);
}
}