wiki/HowtoJava.md

118 lines
4.6 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

**Cette page a été importée automatiquement de notre ancien wiki mais n'a pas encore été révisée.**
# 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.
### Installer Oracle Java 8 sous Debian 7 et 8
Le plus simple est de créer un package automatiquement en utilisant le tar.gz du site oracle.
La procédure à suivre est ici : <https://wiki.debian.org/JavaPackage>
## 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 :
~~~
$ 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 :
~~~
$ 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 :
~~~
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) :
~~~
$ 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
~~~
Sous Wheezy avec JRE Oracle (pas OpenJDK) :
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
~~~