--- categories: java title: Howto Java ... * Documentation JAVA : * Documentation OpenJDK : ## Installation Sous Debian 7 et 8, c'est la version 7 d'OpenJDK que l'on installe : ~~~ # apt install openjdk-7-jre-headless ~~~ Sous Debian 9, on installe la version 8 : ~~~ # apt install openjdk-8-jre-headless ~~~ ### OpenJDK 8 sous Debian 8 On peut vouloir installer OpenJDK 8 sous Debian Jessie, on utilisera alors les backports : ~~~ # echo "deb http://mirror.evolix.org/debian jessie-backports main " >> /etc/apt/sources.list.d/backports.list ~~~ Il vaut mieux aussi s'assurer que les backports aient une préférence basse, dans `/etc/apt/preferences.d/0-backports-defaults` ~~~ Package: * Pin: release a=jessie-backports Pin-Priority: 50 ~~~ Et que les backports pour les paquets Java aient une préférence haute, dans `/etc/apt/preferences.d/z-backports-openjdk` ~~~ Package: openjdk-8-jre openjdk-8-jre-headless openjdk-8-jdk openjdk-8-jdk-headless ca-certificates-java Pin: release a=jessie-backports Pin-Priority: 900 ~~~ ~~~ # apt install openjdk-8-jre-headless # update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java ~~~ ### Oracle Java 8 sous Debian 7 / 8 et 9 Le plus simple est de créer un package automatiquement en utilisant le tar.gz du site oracle. 1- Tout d'abord il faut ajouter le dépôt contrib dans */etc/apt/sources.list* : ~~~ deb http://mirror.evolix.org/debian stretch main contrib ~~~ 2- Mettre à jour les dépôts et installer le paquet *java-package* ~~~ apt update && apt install java-package ~~~ Sur Debian 7, il faut installé java-package depuis les backports, car il y a un bug avec la version de wheezy [ici](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=750092#15) 3- Il faut télécharger l'archive .tar.gz depuis le site d'[Oracle](http://www.oracle.com/technetwork/java/javase/downloads/index.html), et utiliser la commande make-jpkg pour créer le paquet Debian : Pour télécharger l'archive en acceptant les conditions d'Oracle, on peut utilisé ces options avec wget : ~~~ wget --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" ~~~

**IMPORTANT: A ne pas exécuter en root, mais avec son utilisateur.**

~~~ $ make-jpkg jdk-8u51-linux-x64.tar.gz ~~~ Pour faire le build du paquet Debian, le TMPDIR par défaut est */tmp/*, il faut donc que la partition */tmp/* soit en exec ou s'il y a pas assez de place dans /tmp on peut spécifier un TMPDIR différent, par exemple dans son */home/* : ~~~ $ TMPDIR=/home/utilisateur/ make-jpkg jre-8u144-linux-x64.tar.gz ~~~ 4- On peut ensuite installer le paquet Debian généré : ~~~ # dpkg -i oracle-java8-jdk_8u51_amd64.deb ~~~ ## Sécurité ### Importer un certificat racine Java stocke ces certificats dans un fichier, situé dans _/etc/ssl/certs/java/cacerts_ (sous Debian). Pour lister les certificats : ~~~ $ keytool -list -v -keystore /etc/ssl/certs/java/cacerts ~~~ Pour importer un nouveau certificat, on peut utiliser la commande keytool : ~~~ $ keytool -import -v -file certificat.cer -alias -keystore /etc/ssl/certs/java/cacerts ~~~ Il est ensuite demandé un mot de passe pour ouvrir la base de données des certificats. Par défaut, il s'agit de **changeit**. Si vous ne précisez pas d'alias vous pourriez rencontrer l'erreur suivante : ~~~ keytool error: java.lang.Exception: Certificate not imported, alias already exists ~~~ Basiquement, cela peut vouloir dire que le certificat a déjà été importé avec l'alias par défaut: mykey, il faudra donc trouver un autre nom pour importer le certificat. Pour supprimer un certificat (parce qu'il est expiré par exemple) : ~~~ $ keytool -delete -keystore /etc/ssl/certs/java/cacerts -alias ~~~ ### Java Cryptography Extension (JCE) Sous squeeze : Télécharger le fichier ici : ~~~ # dpkg-divert --add --rename --divert /usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/security/US_export_policy.jar.debianorig /usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/security/US_export_policy.jar # dpkg-divert --add --rename --divert /usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/security/local_policy.jar.debianorig /usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/security/local_policy.jar - (Télécharger sur votre poste) sur le site d'oracle : | scp sur le serveur # cd /home/$USER # unzip jce_policy-6.zip # cp jce/US_export_policy.jar /usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/security/ # cp jce/local_policy.jar /usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/security/ # chmod 644 /usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/security/*.jar ~~~ Il faut aussi modifier `/etc/java-6-sun/security/java.security`, en mettant les lignes suivantes après `# List of providers and their preference orders (see above):` ~~~ security.provider.1=org.jasypt.hibernate.type.EncryptedStringType security.provider.2=sun.security.rsa.SunRsaSign security.provider.3=com.sun.net.ssl.internal.ssl.Provider security.provider.4=com.sun.crypto.provider.SunJCE security.provider.5=sun.security.jgss.SunProvider security.provider.6=com.sun.security.sasl.Provider security.provider.7=org.jcp.xml.dsig.internal.dom.XMLDSigRI security.provider.8=sun.security.smartcardio.SunPCSC security.provider.9=sun.security.provider.Sun ~~~ Sous Wheezy avec JRE Oracle (pas OpenJDK) : Télécharger le fichier ici : ~~~ # cd /home/$USER # unzip UnlimitedJCEPolicyJDK7.zip # cp UnlimitedJCEPolicy/US_export_policy.jar /usr/local/opt/jdk1.7.0_45/jre/lib/security/ # cp UnlimitedJCEPolicy/local_policy.jar /usr/local/opt/jdk1.7.0_45/jre/lib/security/ # chmod 644 /usr/local/opt/jdk1.7.0_45/jre/lib/security/*.jar ~~~ Il faut aussi modifier `/usr/local/opt/jdk1.7.0_45/jre/lib/security/java.security`, en mettant les lignes suivantes après `# List of providers and their preference orders (see above):` ~~~ security.provider.1=org.jasypt.hibernate.type.EncryptedStringType security.provider.2=sun.security.rsa.SunRsaSign security.provider.3=com.sun.net.ssl.internal.ssl.Provider security.provider.4=com.sun.crypto.provider.SunJCE security.provider.5=sun.security.jgss.SunProvider security.provider.6=com.sun.security.sasl.Provider security.provider.7=org.jcp.xml.dsig.internal.dom.XMLDSigRI security.provider.8=sun.security.smartcardio.SunPCSC security.provider.9=sun.security.provider.Sun ~~~