mirroir readonly du Gitit wiki.evolix.org (attention, ne rien commiter/merger sur ce dépôt) https://wiki.evolix.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

HowtoJava.md 6.6 KiB

3 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. ---
  2. categories: java
  3. title: Howto Java
  4. ...
  5. * Documentation JAVA : <https://docs.oracle.com/javase/>
  6. * Documentation OpenJDK : <http://openjdk.java.net/>
  7. ## Installation
  8. Sous Debian 7 et 8, c'est la version 7 d'OpenJDK que l'on installe :
  9. ~~~
  10. # apt install openjdk-7-jre-headless
  11. ~~~
  12. Sous Debian 9, on installe la version 8 :
  13. ~~~
  14. # apt install openjdk-8-jre-headless
  15. ~~~
  16. ### OpenJDK 8 sous Debian 8
  17. On peut vouloir installer OpenJDK 8 sous Debian Jessie, on utilisera alors les backports :
  18. ~~~
  19. # echo "deb http://mirror.evolix.org/debian jessie-backports main " >> /etc/apt/sources.list.d/backports.list
  20. ~~~
  21. Il vaut mieux aussi s'assurer que les backports aient une préférence basse, dans `/etc/apt/preferences.d/0-backports-defaults`
  22. ~~~
  23. Package: *
  24. Pin: release a=jessie-backports
  25. Pin-Priority: 50
  26. ~~~
  27. Et que les backports pour les paquets Java aient une préférence haute, dans `/etc/apt/preferences.d/z-backports-openjdk`
  28. ~~~
  29. Package: openjdk-8-jre openjdk-8-jre-headless openjdk-8-jdk openjdk-8-jdk-headless ca-certificates-java
  30. Pin: release a=jessie-backports
  31. Pin-Priority: 900
  32. ~~~
  33. ~~~
  34. # apt install openjdk-8-jre-headless
  35. # update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
  36. ~~~
  37. ### Oracle Java 8 sous Debian 7 / 8 et 9
  38. Le plus simple est de créer un package automatiquement en utilisant le tar.gz du site oracle.
  39. 1- Tout d'abord il faut ajouter le dépôt contrib dans */etc/apt/sources.list* :
  40. ~~~
  41. deb http://mirror.evolix.org/debian stretch main contrib
  42. ~~~
  43. 2- Mettre à jour les dépôts et installer le paquet *java-package*
  44. ~~~
  45. apt update && apt install java-package
  46. ~~~
  47. 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)
  48. 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 :
  49. Pour télécharger l'archive en acceptant les conditions d'Oracle, on peut utilisé ces options avec wget :
  50. ~~~
  51. wget --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie"
  52. ~~~
  53. <p style="text-align:center";>**<span style="color:
  54. #fb4141
  55. ">IMPORTANT:</span> A ne pas exécuter en root, mais avec son utilisateur.**</p>
  56. ~~~
  57. $ make-jpkg jdk-8u51-linux-x64.tar.gz
  58. ~~~
  59. 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/* :
  60. ~~~
  61. $ TMPDIR=/home/utilisateur/ make-jpkg jre-8u144-linux-x64.tar.gz
  62. ~~~
  63. 4- On peut ensuite installer le paquet Debian généré :
  64. ~~~
  65. # dpkg -i oracle-java8-jdk_8u51_amd64.deb
  66. ~~~
  67. ## Sécurité
  68. ### Importer un certificat racine
  69. Java stocke ces certificats dans un fichier, situé dans _/etc/ssl/certs/java/cacerts_ (sous Debian).
  70. Pour lister les certificats :
  71. ~~~
  72. $ keytool -list -v -keystore /etc/ssl/certs/java/cacerts
  73. ~~~
  74. Pour importer un nouveau certificat, on peut utiliser la commande keytool :
  75. ~~~
  76. $ keytool -import -v -file certificat.cer -alias <mykey> -keystore /etc/ssl/certs/java/cacerts
  77. ~~~
  78. 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**.
  79. Si vous ne précisez pas d'alias vous pourriez rencontrer l'erreur suivante :
  80. ~~~
  81. keytool error: java.lang.Exception: Certificate not imported, alias <mykey> already exists
  82. ~~~
  83. 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.
  84. Pour supprimer un certificat (parce qu'il est expiré par exemple) :
  85. ~~~
  86. $ keytool -delete -keystore /etc/ssl/certs/java/cacerts -alias <mykey>
  87. ~~~
  88. ### Java Cryptography Extension (JCE)
  89. <http://gcolpart.evolix.net/blog21/jce-non-limitees-sous-debian/>
  90. Sous squeeze :
  91. Télécharger le fichier ici : <http://download.oracle.com/otn-pub/java/jce_policy/6/jce_policy-6.zip>
  92. ~~~
  93. # 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
  94. # 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
  95. - (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
  96. # cd /home/$USER
  97. # unzip jce_policy-6.zip
  98. # cp jce/US_export_policy.jar /usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/security/
  99. # cp jce/local_policy.jar /usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/security/
  100. # chmod 644 /usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/security/*.jar
  101. ~~~
  102. 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):`
  103. ~~~
  104. security.provider.1=org.jasypt.hibernate.type.EncryptedStringType
  105. security.provider.2=sun.security.rsa.SunRsaSign
  106. security.provider.3=com.sun.net.ssl.internal.ssl.Provider
  107. security.provider.4=com.sun.crypto.provider.SunJCE
  108. security.provider.5=sun.security.jgss.SunProvider
  109. security.provider.6=com.sun.security.sasl.Provider
  110. security.provider.7=org.jcp.xml.dsig.internal.dom.XMLDSigRI
  111. security.provider.8=sun.security.smartcardio.SunPCSC
  112. security.provider.9=sun.security.provider.Sun
  113. ~~~
  114. Sous Wheezy avec JRE Oracle (pas OpenJDK) :
  115. Télécharger le fichier ici : <http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html>
  116. ~~~
  117. # cd /home/$USER
  118. # unzip UnlimitedJCEPolicyJDK7.zip
  119. # cp UnlimitedJCEPolicy/US_export_policy.jar /usr/local/opt/jdk1.7.0_45/jre/lib/security/
  120. # cp UnlimitedJCEPolicy/local_policy.jar /usr/local/opt/jdk1.7.0_45/jre/lib/security/
  121. # chmod 644 /usr/local/opt/jdk1.7.0_45/jre/lib/security/*.jar
  122. ~~~
  123. 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):`
  124. ~~~
  125. security.provider.1=org.jasypt.hibernate.type.EncryptedStringType
  126. security.provider.2=sun.security.rsa.SunRsaSign
  127. security.provider.3=com.sun.net.ssl.internal.ssl.Provider
  128. security.provider.4=com.sun.crypto.provider.SunJCE
  129. security.provider.5=sun.security.jgss.SunProvider
  130. security.provider.6=com.sun.security.sasl.Provider
  131. security.provider.7=org.jcp.xml.dsig.internal.dom.XMLDSigRI
  132. security.provider.8=sun.security.smartcardio.SunPCSC
  133. security.provider.9=sun.security.provider.Sun
  134. ~~~