openjdk: Introduce JAVAX_NET_SSL_TRUSTSTORE env

This small patch makes it possible to control java's truststore path through
the environment. This lets you add (system- or session-wide) CAs that should
be allowed by Java. Java users can still use -Djavax.net.ssl.truststore to
override the truststore set by JAVAX_NET_SSL_TRUSTSTORE.

Something like this can be used to build the truststore (in this example just
using the standard pkgs.cacert CA-bundle):

{
  environment.variables.JAVAX_NET_SSL_TRUSTSTORE = "${
    pkgs.runCommand "cacerts" {} ''
      ${pkgs.perl}/bin/perl \
        ${pkgs.path}/pkgs/development/compilers/openjdk/generate-cacerts.pl \
        ${pkgs.jre}/bin/keytool \
        ${pkgs.cacert}/etc/ca-bundle.crt
      mv cacerts $out
    ''
  }";
}

Ideally, the dependency on pkgs.cacert should also be removed from pkgs.openjdk
to avoid rebuilding java each time the standard CA-bundle changes. Something
along the example above must then be added to NixOS (however, it would be
nice to not depend on ${pkgs.jre}/bin/keytool to generate that environment
variable).
This commit is contained in:
Rickard Nilsson
2014-12-09 16:10:06 +01:00
parent 5c52382448
commit 95fdc8cf29
2 changed files with 27 additions and 1 deletions

View File

@@ -61,7 +61,12 @@ stdenv.mkDerivation rec {
makeFlagsArray+=(CUPS_HEADERS_PATH=$cupsDir)
'';
patches = [ ./cppflags-include-fix.patch ./fix-java-home.patch ./paxctl.patch ];
patches = [
./cppflags-include-fix.patch
./fix-java-home.patch
./paxctl.patch
./read-truststore-from-env.patch
];
NIX_NO_SELF_RPATH = true;