2016-12-29 11:25:39 +01:00
# Howto Java
< http: / / docs . oracle . com / javase / >
< http: / / openjdk . java . net / >
## Installation Java
Sous Debian 6, Sun Java 6 ou OpenJDK 6.
Sous Debian 7, OpenJDK 6 ou 7.
Sous Debian 8, OpenJDK 7 (ou 8 via backports).
### Installer OpenJDK 8 sous Debian 7
à compléter.
2017-08-31 17:59:21 +02:00
### Installer Oracle Java 8 sous Debian 7 / 8 et 9
2016-12-29 11:25:39 +01:00
Le plus simple est de créer un package automatiquement en utilisant le tar.gz du site oracle.
2017-08-31 17:59:21 +02:00
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
~~~
2017-10-17 15:36:40 +02:00
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 )
2017-08-31 19:56:15 +02:00
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 :
2017-08-31 17:59:21 +02:00
2017-10-17 15:33:43 +02:00
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"
~~~
2017-08-31 17:59:21 +02:00
< p style = "text-align:center" ; > **< span style = "color:
#fb4141
">IMPORTANT:< / span > A ne pas exécuter en root, mais avec son utilisateur.**< / p >
~~~
$ 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
~~~
2016-12-29 11:25:39 +01:00
## Java sécurité
### Importer un certificat racine
Java stocke ces certificats dans un fichier, situé dans _/usr/lib/jvm/java-6-sun/jre/lib/security/cacerts_ (sous Debian).
Pour lister les certificats :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
$ keytool -list -v -keystore /usr/lib/jvm/java-6-sun/jre/lib/security/cacerts
~~~
Pour importer un nouveau certificat, on peut utiliser la commande keytool :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
$ keytool -import -v -file certificat.cer -alias < mykey > -keystore /usr/lib/jvm/java-6-sun/jre/lib/security/cacerts
~~~
(/usr/lib/jvm/java-6-sun/jre/lib/security/cacerts est en fait un lien symbolique vers /etc/java-6-sun/security/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 :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
keytool error: java.lang.Exception: Certificate not imported, alias < mykey > 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) :
2017-01-03 11:20:35 +01:00
2016-12-29 11:25:39 +01:00
~~~
$ keytool -delete -keystore /usr/lib/jvm/java-6-sun/jre/lib/security/cacerts -alias < mykey >
~~~
### Java Cryptography Extension (JCE)
< http: / / gcolpart . evolix . net / blog21 / jce-non-limitees-sous-debian / >
Sous squeeze :
Télécharger le fichier ici : < http: / / download . oracle . com / otn-pub / java / jce_policy / 6 / jce_policy-6 . zip >
~~~
# 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 : < http: // www . oracle . com / technetwork / java / javase / downloads / jce-6-download-429243 . html > | 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
~~~
2017-01-03 11:20:35 +01:00
Sous Wheezy avec JRE Oracle (pas OpenJDK) :
2016-12-29 11:25:39 +01:00
Télécharger le fichier ici : < http: / / www . oracle . com / technetwork / java / javase / downloads / jce-7-download-432124 . html >
~~~
# 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
2017-01-03 11:20:35 +01:00
~~~