/usr/share/doc/HOWTO/fr-html/Apache-WebDAV-LDAP-HOWTO.html is in doc-linux-fr-html 2013.01-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 | <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Guide pratique de mise en œuvre d'un serveur WebDAV sous Apache avec LDAP et SSL</title><link rel="stylesheet" type="text/css" href="style.css"/><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"/><meta name="description" content="Ce document constitue le guide pratique de mise en œuvre d'un serveur WebDAV Apache utilisant LDAP pour l'authentification et SSL pour le chiffrement."/></head><body><div xml:lang="fr" class="article"><div class="titlepage"><div><div><h2 class="title"><a id="d0e1"/>Guide pratique de mise en œuvre d'un serveur WebDAV sous Apache avec LDAP et
SSL</h2></div><div><h3 class="subtitle"><em>Version française du <span class="foreignphrase"><em class="foreignphrase">Apache based WebDAV Server
with LDAP and SSL</em></span></em></h3></div><div><div class="author"><h3 class="author"><span class="firstname">Saqib</span> <span class="surname">Ali</span></h3><div class="affiliation"><span class="orgname">
<a class="ulink" href="http://www.xml-dev.com" target="_top">Développement XML/XHTML
distant</a>
<br/></span><div class="address"><p><code class="email"><<a class="email" href="mailto:saqib CHEZ seagate POINT com">saqib CHEZ seagate POINT com</a>></code></p></div></div></div></div><div><p class="othercredit"><span class="contrib">Adaptation française</span> : <span class="firstname">Denis</span> <span class="surname">Berhaut</span></p></div><div><p class="othercredit"><span class="contrib">Relecture de la version française</span> : <span class="firstname">Vincent</span> <span class="surname">Loupien</span></p></div><div><p class="othercredit"><span class="contrib">Préparation de la publication de la v.f.</span> : <span class="firstname">Jean-Philippe</span> <span class="surname">Guérard</span></p></div><div><p class="releaseinfo">Version : 4.1.2.fr.1.1</p></div><div><p class="pubdate">30 janvier 2006</p></div><div><div class="revhistory"><table summary="Historique des versions"><tr><th align="left" valign="top" colspan="3"><strong>Historique des versions</strong></th></tr><tr><td align="left">Version 4.1.2.fr.1.1</td><td align="left">2006-01-30</td><td align="left">JPG</td></tr><tr><td align="left" colspan="3">
Correction de mise en forme sur une suggestion de Bernard Siaud.
</td></tr><tr><td align="left">Version 4.1.2.fr.1.0</td><td align="left">2004-12-20</td><td align="left">DB, VL, JPG</td></tr><tr><td align="left" colspan="3">Première traduction française</td></tr><tr><td align="left">Version 4.1.2</td><td align="left">2003-10-17</td><td align="left">SA</td></tr><tr><td align="left" colspan="3">Ajout de la section d'optimisation SSL</td></tr><tr><td align="left">Version 4.1.1</td><td align="left">2003-09-29</td><td align="left">SA</td></tr><tr><td align="left" colspan="3">Mise à jour de la section SSL suite à des commentaires de lecteurs
</td></tr><tr><td align="left">Version 4.1.0</td><td align="left">2003-09-02</td><td align="left">SA</td></tr><tr><td align="left" colspan="3">Mise à jour de la section SSL suite à des commentaires de lecteurs
</td></tr><tr><td align="left">Version 4.0.2</td><td align="left">2003-08-01</td><td align="left">SA</td></tr><tr><td align="left" colspan="3">
Mises à jour mineures de la ligne de commande de configuration
d'Apache /dev/random référencée dans la section SSL.
</td></tr><tr><td align="left">Version 4.0.1</td><td align="left">2003-07-27</td><td align="left">SA</td></tr><tr><td align="left" colspan="3">
Ajout d'informations dans la section SSL
</td></tr><tr><td align="left">Version 4.0</td><td align="left">2003-06-29</td><td align="left">SA</td></tr><tr><td align="left" colspan="3">
Mise à jour du guide pratique pour Apache 2.0. De plus, conversion du
source en XML.
</td></tr></table></div></div><div><div class="abstract"><p class="title"><strong>Résumé</strong></p><p>
Ce document constitue le guide pratique de mise en œuvre d'un serveur
WebDAV Apache utilisant LDAP pour l'authentification et SSL pour le
chiffrement.
</p></div></div></div><hr/></div><div class="toc"><p><strong>Table des matières</strong></p><dl class="toc"><dt><span class="sect1"><a href="#intro">1. Introduction</a></span></dt><dd><dl><dt><span class="sect2"><a href="#d0e159">1.1. À propos de ce document</a></span></dt><dt><span class="sect2"><a href="#d0e180">1.2. Contributions au document</a></span></dt><dt><span class="sect2"><a href="#d0e190">1.3. Qu'est-ce qu'Apache ?</a></span></dt><dt><span class="sect2"><a href="#d0e199">1.4. Qu'est-ce que WebDAV ?</a></span></dt><dt><span class="sect2"><a href="#d0e231">1.5. Qu'est-ce que PHP ?</a></span></dt><dt><span class="sect2"><a href="#d0e243">1.6. Qu'est-ce que mySQL ?</a></span></dt><dt><span class="sect2"><a href="#d0e253">1.7. Que nous faut-il ?</a></span></dt><dt><span class="sect2"><a href="#d0e285">1.8. Considérations</a></span></dt></dl></dd><dt><span class="sect1"><a href="#d0e301">2. Pré-requis</a></span></dt><dd><dl><dt><span class="sect2"><a href="#d0e306">2.1.
Éléments essentiels</a></span></dt><dt><span class="sect2"><a href="#d0e311">2.2. Apache 2.0.46</a></span></dt><dt><span class="sect2"><a href="#d0e319">2.3. OpenSSL</a></span></dt><dt><span class="sect2"><a href="#d0e329">2.4. La bibliothèque iPlanet LDAP</a></span></dt><dt><span class="sect2"><a href="#d0e336">2.5. mod_auth_ldap</a></span></dt><dt><span class="sect2"><a href="#d0e343">2.6. Le moteur de base de données mySQL</a></span></dt><dt><span class="sect2"><a href="#d0e350">2.7. PHP</a></span></dt></dl></dd><dt><span class="sect1"><a href="#d0e357">3. Installation</a></span></dt><dd><dl><dt><span class="sect2"><a href="#d0e362">3.1. Pré-requis</a></span></dt><dt><span class="sect2"><a href="#d0e411">3.2. mySQL</a></span></dt><dt><span class="sect2"><a href="#d0e463">3.3. Apache 2.0</a></span></dt><dt><span class="sect2"><a href="#d0e494">3.4. mod_auth_ldap</a></span></dt><dt><span class="sect2"><a href="#d0e505">3.5. CERT DB for LDAPS://</a></span></dt><dt><span class="sect2"><a href="#d0e517">3.6. PHP</a></span></dt></dl></dd><dt><span class="sect1"><a href="#config-webdav">4. Configurer et installer les services WebDAV</a></span></dt><dd><dl><dt><span class="sect2"><a href="#d0e541">4.1.
Modifications au fichier
<code class="filename">/usr/local/apache/conf/httpd.conf</code>
</a></span></dt><dt><span class="sect2"><a href="#d0e573">4.2. Créer un répertoire pour DAVLockDB</a></span></dt><dt><span class="sect2"><a href="#d0e591">4.3. Donner l'accès à DAV</a></span></dt><dt><span class="sect2"><a href="#d0e610">4.4. Créer un répertoire nommé DAVtest</a></span></dt><dt><span class="sect2"><a href="#d0e640">4.5. Redémarrer Apache</a></span></dt><dt><span class="sect2"><a href="#d0e661">4.6. Test de conformité au protocole du serveur WebDAV</a></span></dt></dl></dd><dt><span class="sect1"><a href="#d0e695">5. Administration du serveur WebDAV</a></span></dt><dd><dl><dt><span class="sect2"><a href="#d0e727">5.1. Limiter les accès aux partages de DAV</a></span></dt><dt><span class="sect2"><a href="#d0e772">5.2. Limiter l'accès en écriture à des partages DAV</a></span></dt></dl></dd><dt><span class="sect1"><a href="#ssl">6.
Mettre en œuvre et utiliser SSL pour protéger le trafic HTTP
</a></span></dt><dd><dl><dt><span class="sect2"><a href="#d0e796">6.1. Introduction à SSL</a></span></dt><dt><span class="sect2"><a href="#d0e954">6.2. Certificats de test</a></span></dt><dt><span class="sect2"><a href="#d0e963">6.3. Certificats destinés à la production</a></span></dt><dt><span class="sect2"><a href="#d0e970">6.4. Génération d'un CSR</a></span></dt><dt><span class="sect2"><a href="#InstallingServerCert">6.5. Installation de la clé privée et du certificat du serveur</a></span></dt><dt><span class="sect2"><a href="#d0e1152">6.6. Annulation de la phrase de passe pour la clef privée RSA</a></span></dt><dt><span class="sect2"><a href="#d0e1179">6.7. Réglage des performances SSL</a></span></dt></dl></dd><dt><span class="appendix"><a href="#d0e1226">A. Outils d'évaluation de performances HTTP/HTTPS</a></span></dt><dt><span class="appendix"><a href="#d0e1250">B. Solutions matérielles basées sur le chiffrement SSL</a></span></dt><dt><span class="appendix"><a href="#d0e1268">C. Autorités de certification</a></span></dt><dt><span class="glossary"><a href="#glossary">Glossaire de termes PKI</a></span></dt></dl></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="intro"/>1. Introduction</h2></div></div></div><p>
L'objectif de ce document est de configurer un serveur d'applications
Apache avec mySQL, PHP et WebDAV, qui utilise LDAP pour
l'authentification. La documentation fournira aussi des détails sur le
chiffrement des transactions LDAP.
</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note: N.B. :"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">N.B. :</th></tr><tr><td align="left" valign="top"><p>
Si vous rencontrez des problèmes en installant Apache ou un
quelconque de ses modules n'hésitez pas à contacter l'auteur en
anglais à
<code class="email"><<a class="email" href="mailto:saqib CHEZ seagate POINT com">saqib CHEZ seagate POINT com</a>></code>
</p><p>
N'hésitez pas à faire parvenir tout commentaire relatif à la
version française de ce document à
<code class="email"><<a class="email" href="mailto:commentaires CHEZ traduc POINT org">commentaires CHEZ traduc POINT org</a>></code>
en précisant le titre et la version du document.
</p></td></tr></table></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e159"/>1.1. À propos de ce document</h3></div></div></div><p>
J'ai commencé à écrire ce document en 2001. Un grand nombre de mises à
jour et de rajouts ont été faits depuis. Je remercie tous ceux qui m'ont
soumis des mises à jour et des corrections.</p><p>
Le code source XML DocBook de la plus récente version française de ce
document à l'adresse : <a class="ulink" href="ftp://ftp.traduc.org/pub/traduc.org/doc-vf/HOWTO/telechargement/sgml/Apache-WebDAV-LDAP-HOWTO.xml" target="_top">ftp://ftp.traduc.org/pub/traduc.org/doc-vf/HOWTO/telechargement/sgml/Apache-WebDAV-LDAP-HOWTO.xml</a>.
</p><p>
Vous trouverez la plus récente version française de ce document à
l'adresse : <a class="ulink" href="http://www.traduc.org/docs/howto/lecture/Apache-WebDAV-LDAP-HOWTO.html" target="_top">http://www.traduc.org/docs/howto/lecture/Apache-WebDAV-LDAP-HOWTO.html</a>.
</p><p>
La code source au format XML de la version originale ce document est
disponible à <a class="ulink" href="http://www.xml-dev.com/xml/Apache-WebDAV-LDAP-HOWTO.xml" target="_top">http://www.xml-dev.com/xml/Apache-WebDAV-LDAP-HOWTO.xml</a>.
</p><p>
La dernière version originale de ce document est disponible à <a class="ulink" href="http://www.xml-dev.com:8080/tldp/http://cvsview.tldp.org/index.cgi/*checkout*/LDP/howto/docbook/Apache-WebDAV-LDAP-HOWTO.xml" target="_top">http://www.xml-dev.com:8080/tldp/http://cvsview.tldp.org/index.cgi/*checkout*/LDP/howto/docbook/Apache-WebDAV-LDAP-HOWTO.xml</a>.
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e180"/>1.2. Contributions au document</h3></div></div></div><p>
Si vous désirez contribuer à la version originale de ce guide pratique,
vous pouvez télécharger le code source XML de <a class="ulink" href="http://www.xml-dev.com/xml/Apache-WebDAV-LDAP-HOWTO.xml" target="_top">http://www.xml-dev.com/xml/Apache-WebDAV-LDAP-HOWTO.xml</a>, et
envoyer le fichier source modifié à
<code class="email"><<a class="email" href="mailto:saqib CHEZ seagate POINT com">saqib CHEZ seagate POINT com</a>></code>
AVEC VOTRE NOM DANS LA LISTE D'AUTEURS ET DANS L'HISTORIQUE DES VERSIONS
:) Cela sera plus facile pour moi de contacter la personne en cas de
mises à jour ou de corrections. Je vous remercie.
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e190"/>1.3. Qu'est-ce qu'Apache ?</h3></div></div></div><p>
Le serveur HTTP Apache est un serveur HTTP open-source pour systèmes
d'exploitation modernes comme UNIX et Windows NT. Il fournit des
services HTTP conformes aux standards HTTP actuels.
</p><p>
Le serveur Web Apache peut être téléchargé librement de <a class="ulink" href="http://httpd.apache.org/" target="_top">http://httpd.apache.org/</a>
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e199"/>1.4. Qu'est-ce que WebDAV ?</h3></div></div></div><p>
WebDAV signifie Web enabled Distributed Authoring and Versioning, c'est-à-dire gestion de publication et de configuration sur Internet. Il fournit un environnement partagé aux utilisateurs pour éditer/gérer leurs fichiers sur les serveurs Web. Techniquement, DAV est une extension du protocole http.
</p><p>
Voici une brève description des extensions fournies par DAV :
</p><p>
<span class="bold"><strong>Protection contre l'écrasement :</strong></span>
mécanisme de verrouillage et de déverrouillage pour éviter les problèmes
de synchronisation de mises à jour. Le protocole DAV supporte les accès
exclusifs et partagés.
</p><p>
<span class="bold"><strong>Propriétés :</strong></span>
méta-données (titre, sujet, créateur, et cætera)
</p><p>
<span class="bold"><strong>Gestion des attributs de
fichiers :</strong></span>
copier, renommer, déplacer et supprimer des fichiers
</p><p>
<span class="bold"><strong>Contrôle d'accès :</strong></span>
limitation d'accès à des ressources diverses. Généralement, DAV
considère qu'un contrôle d'accès est déjà en place, et ne fournit pas de
mécanisme d'authentification robuste.
</p><p>
<span class="bold"><strong>Gestion des versions :</strong></span>
contrôle de versions des documents. Le contrôle des versions n'est pas
encore mis en œuvre.
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e231"/>1.5. Qu'est-ce que PHP ?</h3></div></div></div><p>
PHP (acronyme récursif pour <span class="foreignphrase"><em class="foreignphrase">Processeur Hypertexte
PHP</em></span>) : c'est un langage de scripts open source à
usage général qui est particulièrement adapté au développement Web et
qui peut être associé à du HTML.
</p><p>
On peut se procurer PHP de <a class="ulink" href="http://www.php.net" target="_top">http://www.php.net</a>
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e243"/>1.6. Qu'est-ce que mySQL ?</h3></div></div></div><p>
MySQL, la base de données SQL open source la plus populaire, est
développée, distribuée, et maintenue par MySQL AB
</p><p>
On peut télécharger le moteur de base de données de MySQL de <a class="ulink" href="http://www-fr.mysql.com/" target="_top">
http://www.mysql-fr.com/</a>
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e253"/>1.7. Que nous faut-il ?</h3></div></div></div><p>
Les outils nécessaires sont :
</p><div class="orderedlist"><ol class="orderedlist" type="i"><li class="listitem"><p>
un compilateur C, c-à-d GCC
</p></li><li class="listitem"><p>
un serveur Web Apache 2
</p></li><li class="listitem"><p>
le module LDAP pour Apache
</p></li><li class="listitem"><p>
les fichiers de la bibliothèque iPlanet LDAP lib
</p></li><li class="listitem"><p>
le moteur SSL
</p></li><li class="listitem"><p>
PHP
</p></li><li class="listitem"><p>
Le moteur de base de données mySQL
</p></li></ol></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note: N.B. :"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">N.B. :</th></tr><tr><td align="left" valign="top"><p>
tous ces paquets sont libres, téléchargeables sur Internet.
</p></td></tr></table></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e285"/>1.8. Considérations</h3></div></div></div><p>
Nous considérons que vous avez déjà installé les éléments suivants dans
votre système.
</p><div class="orderedlist"><ol class="orderedlist" type="i"><li class="listitem"><p>
gzip or gunzip — disponibles à <a class="ulink" href="http://www.gnu.org/home.fr.html" target="_top">http://www.gnu.org/home.fr.html</a>
</p></li><li class="listitem"><p>
gcc et GNU make — disponibles à <a class="ulink" href="http://www.gnu.org/home.fr.html" target="_top">http://www.gnu.org/home.fr.html</a>
</p></li></ol></div></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="d0e301"/>2. Pré-requis</h2></div></div></div><p>
Il est nécessaire de télécharger et de compiler différent paquets. Ce
document expliquera le processus de compilation, mais vous êtes sensés
savoir installer à partir du code source.
</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e306"/>2.1.
Éléments essentiels</h3></div></div></div><p>
Il vous faudra une machine sous Solaris ou Linux et un compilateur GCC.
Vous aurez aussi besoin de GNU gzip et de GNU tar.
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e311"/>2.2. Apache 2.0.46</h3></div></div></div><p>
Apache est le serveur HTTP, et on l'utilisera pour faire tourner le serveur Web applicatif. Téléchargez les sources d'Apache 2.0.46 depuis <a class="ulink" href="http://www.apache.org/dist/httpd/" target="_top">
http://www.apache.org/dist/httpd/</a>.
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e319"/>2.3. OpenSSL</h3></div></div></div><p>
Il vous faudra télécharger OpenSSL de <a class="ulink" href="http://www.openssl.org/source/" target="_top">http://www.openssl.org/source/</a>. Téléchargez la dernière
version. L'installation d'OpenSSL sera utilisée pour compiler mod_ssl
avec Apache à l'aide des bibliothèques SSL, et pour gérer les
certificats SSL sur le serveur Web. Téléchargez les sources d'OpenSSL
compressées par gzip dans <code class="filename">/tmp/downloads</code>
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e329"/>2.4. La bibliothèque iPlanet LDAP</h3></div></div></div><p>
Téléchargez le SDK de iPlanet LDAP de <a class="ulink" href="http://wwws.sun.com/software/download/products/3ec28dbd.html" target="_top">http://wwws.sun.com/software/download/products/3ec28dbd.html</a>.
Nous utiliserons le SDK d'iPlanet LDAP, parce qu'il comprend les
bibliothèques pour ldaps:// (LDAP over SSL) :
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e336"/>2.5. mod_auth_ldap</h3></div></div></div><p>
Nous utiliserons mod_auth_ldap pour compiler le support LDAP avec
Apache. Téléchargez mod_auth_ldap de <a class="ulink" href="http://www.muquit.com/muquit/software/mod_auth_ldap/mod_auth_ldap_apache2.html" target="_top">http://www.muquit.com/muquit/software/mod_auth_ldap/mod_auth_ldap_apache2.html</a>
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e343"/>2.6. Le moteur de base de données mySQL</h3></div></div></div><p>
Téléchargez les exécutables mySQL pour votre plate-forme de <a class="ulink" href="http://www-fr.mysql.com/downloads/index.html" target="_top">http://www-fr.mysql.com/downloads/index.html</a>
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e350"/>2.7. PHP</h3></div></div></div><p>
Téléchargez les sources de PHP de <a class="ulink" href="http://www.php.net/downloads.php" target="_top">http://www.php.net/downloads.php</a>
</p></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="d0e357"/>3. Installation</h2></div></div></div><p>
Nous nous occuperons d'abord des quelques pré-requis, puis nous
procéderons à l'installation principale.
</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e362"/>3.1. Pré-requis</h3></div></div></div><p>
Pour installer le serveur d'application, nous avons besoin des
bibliothèques SSL et LDAP. Le moteur SSL est lui aussi nécessaire pour
gérer les certificats SSL dans Apache 2.x
</p><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e367"/>3.1.1. Le SDK iPlanet LDAP</h4></div></div></div><p>
Devenez root à l'aide de la commande su :
</p><pre class="screen">
$ su -
</pre><p>
Créez le répertoire <code class="filename">/usr/local/iplanet-ldap-sdk.5</code>. Copiez le
répertoire
<code class="filename">ldapcsdk5.08-Linux2.2_x86_glibc_PTH_OPT.OBJ.tar.gz</code>
de <code class="filename">/tmp/downloads</code> vers <code class="filename">/usr/local/iplanet-ldap-sdk.5</code>.
</p><pre class="screen">
# mkdir /usr/local/iplanet-ldap-sdk.5
# cp /tmp/downloads/ldapcsdk5.08-Linux2.2_x86_glibc_PTH_OPT.OBJ.tar /usr/local/iplanet-ldap-sdk.5
# cd /usr/local/iplanet-ldap-sdk.5
# tar -xvf ldapcsdk5.08-Linux2.2_x86_glibc_PTH_OPT.OBJ.tar
</pre><p>
À présent, tous les fichiers de la bibliothèque iPlanet LDAP devraient
se trouver dans le bon répertoire.
</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e392"/>3.1.2. Le moteur OpenSSL</h4></div></div></div><p>
Ensuite, il nous faut installer le moteur OpenSSL
</p><p>
OpenSSL est une mise en œuvre open source du protocole SSL/TLS. Il est
indispensable pour créer et gérer les certificats SSL sur le serveur
Web. Cette installation est aussi indispensable pour les fichiers et les
bibliothèques qui seront utilisés par le module SSL d'Apache.
</p><p>
Allez dans le répertoire où vous avez placé les fichiers du code source
openSSL
</p><pre class="screen">
# cd /tmp/download
# gzip -d openssl.x.x.tar.gz
# tar -xvf openssl.x.x.tar
# cd openssl.x.x
# make
# make test
# make install
</pre><p>
Après exécution complète de la commande <strong class="userinput"><code>make
install</code></strong> les exécutables openssl devraient se trouver dans le
répertoire <code class="filename">/usr/local/ssl</code>
</p></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e411"/>3.2. mySQL</h3></div></div></div><p>
L'installation de mySQL est très simple. Les binaires téléchargés
doivent être placés dans le répertoire approprié.
</p><p>
Nous commençons par créer un utilisateur:groupe pour le démon mysql, et
copions les fichiers dans les répertoires appropriés.
</p><pre class="screen">
# groupadd mysql
# useradd -g mysql mysql
# cd /usr/local
# gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
# ln -s full-path-to-mysql-VERSION-OS mysql
</pre><p>
Puis nous lançons le script install_db et changeons les permissions des
fichiers
</p><pre class="screen">
# cd mysql
# scripts/mysql_install_db
# chown -R mysql .
</pre><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e424"/>3.2.1. Démarrer mySQL</h4></div></div></div><p>
Nous lançons maintenant le serveur mySQL pour vérifier l'installation
</p><pre class="screen">
# bin/mysqld_safe --user=mysql &
</pre><p>
Vérifiez que le démon mySQL est lancé en utilisant la commande
<strong class="userinput"><code>ps -ef</code></strong>. Vous devriez voir s'afficher :
</p><pre class="screen">
# ps -ef | grep mysql
root 3237 1 0 May29 ? 00:00:00 /bin/sh bin/safe_mysqld
mysql 3256 3237 0 May29 ? 00:06:58 /usr/local/mysql/bin/mysqld --defaults-extra-file=/usr/local/mysql/data/my.cnf --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql --pid-file=/usr/local/mysql/data/download
</pre></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e438"/>3.2.2. Arrêter mySQL</h4></div></div></div><p>
Pour arrêter le serveur mySQL, suivez les instructions suivantes
</p><pre class="screen">
# cd /usr/local/mysql
# ./bin/mysqladmin -u root -p shutdown
</pre></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e445"/>3.2.3. Localiser le répertoire de données</h4></div></div></div><p>
Le démon mySQL place toutes les informations dans un répertoire appelé
<span class="quote">« <span class="quote">répertoire de données</span> »</span>. Si vous avez suivi les
instructions d'installation ci-dessus, votre répertoire de données
devrait être situé sous <code class="filename">
/use/local/mysql/data</code>.
</p><p>
Pour trouver l'emplacement de votre répertoire de données, utilisez la
commande <span class="command"><strong>mysqladmin</strong></span> comme suit :
</p><pre class="screen">
# /usr/local/mysql/bin/mysqladmin variables -u root --password={votre_mot_de_passe} | grep datadir
</pre></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e463"/>3.3. Apache 2.0</h3></div></div></div><p>
Commençons par rajouter quelques options de compilation
</p><pre class="screen">
# export LDFLAGS="-L/usr/local/iplanet-ldap-sdk.5/lib/ -R/usr/local/iplanet-ldap-sdk.5/lib/:/usr/local/lib"
# export CPPFLAGS="-I/usr/local/iplanet-ldap-sdk.5/include"
</pre><p>
Puis décompressez les sources d'Apache 2.0 avec UNTAR, et exécutez le
script de <code class="filename"> configuration</code>.
</p><pre class="screen">
# cd /tmp/download
# gzip -d httpd-2.0.46.tar.gz
# tar -xvf httpd-2.0.46.tar
# cd httpd-2.0.46
#./configure --enable-so --with-ssl --enable-ssl --enable-rewrite --enable-dav
</pre><p>
Exécutez ensuite la commande <span class="command"><strong>make</strong></span>
</p><pre class="screen">
# make
# make install
</pre><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e484"/>3.3.1. Démarrer Apache</h4></div></div></div><pre class="screen">
# /usr/local/apache2/bin/apachectl start
</pre></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e489"/>3.3.2. Arrêter Apache</h4></div></div></div><pre class="screen">
# /usr/local/apache2/bin/apachectl stop
</pre></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e494"/>3.4. mod_auth_ldap</h3></div></div></div><p>
Décompressez modauthldap_apache2.tar.gz avec Untar
</p><pre class="screen">
cd /tmp/download
# gzip -d modauthldap_apache2.tar.gz
# tar -xvf modauthldap_apache2.tar
# cd modauthldap_apache2
</pre><p>
À présent, configurez et installez mod_auth_ldap
</p><pre class="screen">
# ./configure --with-apxs=/usr/local/apache2/bin/apxs --with-ldap-dir=/usr/local/iplanet-ldap-sdk.5/
# make
# make install
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e505"/>3.5. CERT DB for LDAPS://</h3></div></div></div><p>
Vous devrez aussi télécharger cert7.db and key7.db des sites <a class="ulink" href="http://www.xml-dev.com/xml/key3.db" target="_top">http://www.xml-dev.com/xml/key3.db</a> et <a class="ulink" href="http://www.xml-dev.com/xml/cert7.db" target="_top">http://www.xml-dev.com/xml/cert7.db</a> et les placer dans le
répertoire <code class="filename">/usr/local/ssl</code>.
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e517"/>3.6. PHP</h3></div></div></div><p>
Décompressez les fichiers source de PHP avec Unzip
</p><pre class="screen">
gzip -d php-xxx.tar.gz
tar -xvf php-xxx.tar
</pre><p>
Exécutez les commandes configure puis make
</p><pre class="screen">
cd php-xxx
./configure --with-mysql --with-apxs=/usr/local/apache2/bin/apxs
</pre><p>
Compilez le code source
</p><pre class="screen">
# make
# make install
</pre><p>
Copiez le fichier php.ini dans le répertoire approprié
</p><pre class="screen">
cp php.ini-dist /usr/local/lib/php.ini
</pre></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="config-webdav"/>4. Configurer et installer les services WebDAV</h2></div></div></div><p>
Et maintenant la partie la plus facile. Dans cette section, nous
rendrons un répertoire situé à la racine d'Apache disponible à WebDAV.
</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e541"/>4.1.
Modifications au fichier
<code class="filename">/usr/local/apache/conf/httpd.conf</code>
</h3></div></div></div><p>
Vérifiez que la directive Apache suivante apparaît dans le fichier
<code class="filename">/usr/local/apache/conf/httpd.conf</code> :
</p><pre class="screen">
Addmodule mod_dav.c
</pre><p>
Si elle n'y est pas, ajoutez la. Cette directive informe Apache du support des
fonctionnalités de DAV. La directive doit être placée à l'extérieur des
conteneurs.
</p><p>
Ensuite nous devons déterminer où Apache stockera le fichier DAVLockDB.
DAVLockDB est une base de données de verrouillage pour WebDAV. le
processus httpd doit avoir les droits en écriture dans ce répertoire.
</p><p>
J'enregistre le fichier DAVLock sous
<code class="filename">/usr/local/apache/var</code>. J'utilise aussi ce
répertoire pour d'autres besoins. Ajoutez la ligne suivante dans votre
fichier <code class="filename">/usr/local/apache/conf/httpd.conf</code> pour
préciser que le fichier DAVLockDB est situé dans le répertoire
<code class="filename">/usr/local/apache/var</code> :
</p><pre class="screen">
DAVLockDB /usr/local/apache/var/DAVLock
</pre><p>
La directive doit être placée à l'extérieur des conteneurs.
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e573"/>4.2. Créer un répertoire pour DAVLockDB</h3></div></div></div><p>
Comme il est mentionné plus haut, il faut créer un répertoire pour
DAVLockDB auquel le processus du serveur Web doit pouvoir accéder en
écriture. D'habitude, le processus du serveur Web s'exécute sous
l'utilisateur <span class="quote">« <span class="quote"><code class="literal">nobody</code></span> »</span>. Vérifiez-le sur
votre système en utilisant la commande :
</p><pre class="screen">
ps -ef | grep httpd
</pre><p>
à partir de <code class="filename">/usr/local/apache</code>. Créez le répertoire
et définissez ces permissions en utilisant les commandes
suivantes :
</p><pre class="screen">
# cd /usr/local/apache
# mkdir var
# chmod -R 755 var/
# chown -R nobody var/
# chgrp -R nobody var/
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e591"/>4.3. Donner l'accès à DAV</h3></div></div></div><p>
Donner l'accès à DAV est une tâche insignifiante. Pour autoriser DAV à
accéder à un répertoire situé sous la racine d'Apache, ajoutez
simplement la directive suivante dans le conteneur de cette directive
particulière :
</p><pre class="screen">
DAV On
</pre><p>
Cette directive autorisera DAV à accéder au répertoire et à ses
sous-répertoires.
</p><p>
Ce qui suit est un exemple de configuration activant WebDAV et le
service d'authentification LDAP dans
<code class="filename">/usr/local/apache/htdocs/DAVtest</code>. Placez ceci dans
le fichier <code class="filename">/usr/local/apache/conf/httpd.conf</code>.
</p><pre class="screen">
DavLockDB /tmp/DavLock
<Directory "/usr/local/apache2/htdocs/DAVtest">
Options Indexes FollowSymLinks
AllowOverride None
order allow,deny
allow from all
AuthName "SMA Development server"
AuthType Basic
LDAP_Debug On
#LDAP_Protocol_Version 3
#LDAP_Deref NEVER
#LDAP_StartTLS On
LDAP_Server you.ldap.server.com
#LDAP_Port 389
# If SSL is on, must specify the LDAP SSL port, usually 636
LDAP_Port 636
LDAP_CertDbDir /usr/local/apache2/sslcert
Base_DN "o=SDS"
UID_Attr uid
DAV On
#require valid-user
require valid-user
#require roomnumber "123 Center Building"
#require filter "(&(telephonenumber=1234)(roomnumber=123))"
#require group cn=rcs,ou=Groups
</Directory>
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e610"/>4.4. Créer un répertoire nommé DAVtest</h3></div></div></div><p>
Comme il est mentionné dans une section précédente, le processus du
serveur Web doit avoir les droits en écriture dans tous les répertoires
DAV. Dans cet exemple nous considérons que le serveur Web s'exécute sous
l'utilisateur <span class="quote">« <span class="quote"><code class="literal">nobody</code></span> »</span>. La plupart du
temps c'est le cas. Pour vérifier sous quel utilisateur httpd s'exécute,
saisissez :
</p><pre class="screen">
# ps -ef | grep httpd
</pre><p>
Créez un répertoire nommé <span class="quote">« <span class="quote"><code class="filename">DAVtest</code></span> »</span>
dans le répertoire <code class="filename">/usr/local/apache/htdocs</code> :
</p><pre class="screen">
# mkdir /usr/local/apache/htdocs/DAVtest
</pre><p>
Changez les permissions du répertoire pour le rendre accessible au
processus httpd en lecture et écriture. Considérant que httpd s'exécute
sous l'utilisateur <span class="quote">« <span class="quote"><code class="literal">nobody</code></span> »</span>, utilisez
les commandes suivantes :
</p><pre class="screen">
# cd /usr/local/apache/htdocs
# chmod -R 755 DAVtest/
# chown -R nobody DAVtest/
# chgrp -R nobody DAVtest/
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e640"/>4.5. Redémarrer Apache</h3></div></div></div><p>
Pour finir, vous devez exécuter la routine du test de configuration
fournie avec Apache pour vérifier la syntaxe du fichier
<code class="filename">httpd.conf</code> :
</p><pre class="screen">
# /usr/local/apache/bin/apachectl configtest
</pre><p>
S'il y a des messages d'erreur, vérifiez que vous avez suivi
correctement toutes les étapes mentionnées ci-dessus. Si vous n'arrivez
pas à comprendre ce que signifie le message d'erreur, n'hésitez pas à
m'envoyer un courrier électronique (en anglais) avec le message d'erreur
(<code class="email"><<a class="email" href="mailto:saqib CHEZ seagate POINT com">saqib CHEZ seagate POINT com</a>></code>).
</p><p>
Si le test de configuration a réussi, démarrez le serveur Web
Apache :
</p><pre class="screen">
# /usr/local/apache/bin/apachectl restart
</pre><p>
À présent, vous avez un serveur WebDAV Apache utilisant LDAP pour
l'authentification et SSL pour le chiffrement.
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e661"/>4.6. Test de conformité au protocole du serveur WebDAV</h3></div></div></div><p>
Il est très important que le serveur WebDAV que nous venons juste
d'installer soit totalement compatible avec le protocole WebDAV-2. S'il
n'est pas totalement compatible, les applications WebDAV côté client
pourront ne pas fonctionner correctement.
</p><p>
Pour tester la compatibilité nous utiliserons un outil nommé Litmus.
Litmus est une suite de tests de compatibilité avec le protocole d'un
serveur WebDAV, qui est destinée à tester si un serveur est compatible
avec le protocole WebDAV selon les spécifications de la norme RFC2518.
</p><p>
Téléchargez les sources de Litmus du site <a class="ulink" href="http://www.webdav.org/neon/litmus/" target="_top">http://www.webdav.org/neon/litmus/</a> et placez les dans le
répertoire /tmp/downloads
</p><p>
Puis utilisez gzip et tar pour extraire les fichiers :
</p><pre class="screen">
# cd /tmp/downloads
# gzip -d litmus-0.6.x.tar.gz
# tar -xvf litmus-0.6.x.tar
# cd litmus-0.6.x
</pre><p>
Il est facile de compiler et d'installer Litmus :
</p><pre class="screen">
# ./configure
# make
# make install
</pre><p>
<span class="command"><strong>make install</strong></span> installera les fichiers binaires de
Litmus dans les répertoires <code class="filename">/usr/local/bin</code> et les
fichiers d'aide dans <code class="filename">/usr/local/man</code>
</p><p>
Pour tester la compatibilité du serveur WebDAV que vous venez
d'installer, recourez à la commande suivante
</p><pre class="screen">
# /usr/local/bin/litmus http://you.dav.server/DAVtest userid passwd
</pre></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="d0e695"/>5. Administration du serveur WebDAV</h2></div></div></div><p>
Dans cette section, nous aborderons les différentes tâches
d'administration — par exemple l'utilisation de LDAP pour le
contrôle d'accès, et comment on travaille dans Apache avec DAV
</p><p>
La plupart des changements de configuration pour DAV devront être faits
dans le fichier <code class="filename">httpd.conf</code>. L'emplacement de ce
fichier est <code class="filename">/usr/local/apache/conf/httpd.conf</code>.
</p><p>
<code class="filename">httpd.conf</code> est un fichier texte qui est utilisé
pour la configuration d'Apache. Il peut être édité à l'aide de n'importe
quel éditeur de texte — je préfère vi. Faites une copie de
sauvegarde de ce fichier avant de le modifier.
</p><p> Après avoir effectué des modifications au fichier <code class="filename">
httpd.conf</code> le serveur Apache doit être redémarré avec la
commande <strong class="userinput"><code>/usr/local/apache/bin/apachectl restart</code></strong>.
Cependant avant de le redémarrer, vous testerez la validité du fichier
<code class="filename">httpd.conf</code> en utilisant la commande
<strong class="userinput"><code>/usr/local/apache/bin/apachectl configtest</code></strong>.
</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e727"/>5.1. Limiter les accès aux partages de DAV</h3></div></div></div><p>
Dans la section précédente, quand nous avons créé le partage DAVtest,
nous avons utilisé LDAP pour l'authentification. Cependant, n'importe
qui pouvant s'authentifier en utilisant son
compte_utilisateur/mot_de_passe pourra accéder à ce dossier.
</p><p>
En utilisant la directive <code class="literal">require</code> dans le fichier
httpd.conf, vous pouvez limiter l'accès à certains individus ou groupes
d'individus.
</p><p>
Si nous regardons la configuration de DAVtest de la précédente
section :
</p><pre class="screen">
<Directory /usr/local/apache/htdocs/DAVtest>
Dav On
#Options Indexes FollowSymLinks
AllowOverride None
order allow,deny
allow from all
AuthName "LDAP_userid_password_required"
AuthType Basic
<Limit GET PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Require valid-user
</Limit>
LDAP_Server ldap.server.com
LDAP_Port 389
Base_DN "o=ROOT"
UID_Attr uid
</Directory>
</pre><p>
nous voyons que la commande <code class="literal">require</code> a pour paramètre
<code class="literal">valid-user</code>. Ce qui signifie que n'importe quel
utilisateur authentifié peut accéder à ce dossier.
</p><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e749"/>5.1.1. Limitations d'accès basées sur les UID individuels</h4></div></div></div><p>
Les UID de LDAP peuvent être utilisés pour limiter les accès au dossier DAV.
</p><p>
La directive require <code class="literal">valid-user</code> peut être remplacée
par <code class="literal">require user 334455 445566</code>
</p><p>
Ceci limitera l'accès aux individus ayant pour UID 334455 et 445566.
Personne d'autre ne pourra accéder à ce dossier.
</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e764"/>5.1.2. Limitations d'accès basées sur des groupes d'individus</h4></div></div></div><p>
La directive <code class="literal">require</code> peut aussi être utilisée pour
limiter les accès à des groupes d'individus. On peut le faire en
utilisant soit les groupes de LDAP, soit les filtres de LDAP. Le filtre
doit avoir une syntaxe de filtre LDAP valide.
</p></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e772"/>5.2. Limiter l'accès en écriture à des partages DAV</h3></div></div></div><p>
On peut avoir besoin de limiter l'accès en écriture aux ressources des
partages DAV à une certaine personne, en laissant toutefois n'importe
qui voir les ressources. On peut le faire facilement en utilisant les
balises <code class="literal"><Limit></code> dans le fichier httpd.conf
</p><pre class="screen">
<Directory /usr/local/apache/htdocs/DAVtest>
Dav On
#Options Indexes FollowSymLinks
AllowOverride None
order allow,deny
allow from all
AuthName "LDAP_userid_password_required"
AuthType Basic
<Limit GET PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Require valid-user
</Limit>
LDAP_Server ldap.server.com
LDAP_Port 389
Base_DN "o=ROOT"
UID_Attr uid
</Directory>
</pre><p>
Vous limiterez l'accès en écriture à certains utilisateurs en changeant
la balise <code class="literal"><limit></code> en
</p><pre class="screen">
<Limit PUT POST DELETE PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Require 334455
</Limit>
</pre><p>
En fait, nous limitons les méthodes PUT POST DELETE PROPPATH MKCOL COPY
MOVE LOCK et UNLOCK à l'utilisateur qui a pour UID 334455. N'importe
qui d'autre pourra employer les méthodes GET et PROPFIND pour les
ressources, mais aucune autre méthode.
</p></div></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title"><a id="ssl"/>6.
Mettre en œuvre et utiliser SSL pour protéger le trafic HTTP
</h2></div></div></div><p>
De nos jours, la sécurité des données stockées sur un serveur de
fichiers est très importante. Des données compromises peuvent coûter des
milliers de dollars à une entreprise. Dans la dernière section, nous
avons compilé le module d'authentification LDAP dans Apache pour fournir
un mécanisme d'authentification. Cependant, le trafic http est très peu
sur, et toutes les données sont transférées en clair — ce qui
signifie que l'authentification LDAP (utilisateur/mot_de_passe) sera
transmise elle aussi en clair. Ceci pose un problème. N'importe qui peut
intercepter cet utilisateur/mot_de_passe et accéder aux dossiers de DAV.
Pour éviter ceci nous devrons chiffrer le trafic http, essentiellement
par HTTP + SSL ou HTTPS. Tout ce qui est transféré en HTTPS est chiffré,
ce qui fait que le couple utilisateur/mot_de_passe LDAP ne peut pas être
aisément déchiffré. HTTPS tourne sur le port 443. Les binaires
résultants étant compilés selon la dernière section, Apache pourra
écouter à la fois sur les ports 80 (HTTP normal) et 443 (HTTPS). Si vous
désirez utiliser ce serveur uniquement pour DAV, alors je vous suggère
fortement de fermer le port 80. Dans cette section du guide pratique, je
fournirai des informations sur SSL et comment l'administrer dans un
serveur http Apache.
</p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e796"/>6.1. Introduction à SSL</h3></div></div></div><p>
SSL (Secure Socket Layer) est une couche protocolaire qui se situe entre
la couche Réseau et la couche Application. Comme son nom le suggère, SSL
fournit un mécanisme de déchiffrement pour toutes sortes de
trafic : LDAP, POP, IMAP et plus important, HTTP.
</p><p>
Ce qui suit est une structure ultra simplifiée des couches impliquées
par SSL.
</p><pre class="screen">
+-------------------------------------------+
| LDAP | HTTP | POP | IMAP |
+-------------------------------------------+
| SSL |
+-------------------------------------------+
| Couche réseau |
+-------------------------------------------+
</pre><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e805"/>6.1.1. Algorithmes de cryptographie utilisés par SSL</h4></div></div></div><p>
SSL utilise trois sortes de techniques de cryptographie : les
systèmes de clés publiques-privées, de clés symétriques et de <a class="link" href="#digitsign" title="Digital Signature : signature numérique">signatures numériques</a>.
</p><p>
<span class="strong"><strong>Chiffrement par clés publiques-privées —
Initialisation d'une connexion SSL :</strong></span> dans cet
algorithme, le chiffrement et le déchiffrement sont effectués en
utilisant une paire de clés publiques et privées. Le serveur Web détient
la clé privée, et envoie la clé publique au client dans le certificat.
</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
Le client demande un contenu au serveur Web en utilisant HTTPS.
</p></li><li class="listitem"><p>
Le serveur Web répond en envoyant un certificat numérique qui comprend
la clé publique du serveur.
</p></li><li class="listitem"><p>
Le client vérifie si le certificat est expiré.
</p></li><li class="listitem"><p>
Puis le client vérifie si l'autorité de certification qui a signé le
certificat est une autorité de confiance figurant dans la liste du
navigateur. Ceci explique pourquoi il est nécessaire d'obtenir un
certificat d'une autorité de certification de confiance.
</p></li><li class="listitem"><p>
Puis, le client vérifie si le nom de domaine pleinement qualifié (FQDN)
du serveur Web coïncide avec le Nom Commun (Common Name CN) du
certificat.
</p></li><li class="listitem"><p>
Si tout est correct, la connexion SSL est initialisée.
</p></li></ol></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note: N.B. :"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">N.B. :</th></tr><tr><td align="left" valign="top"><p>
On ne peut déchiffrer ce qui a été chiffré avec une clé privée qu'avec
sa clé publique. De la même façon, on ne peut déchiffrer ce qui a été
chiffré avec une clé publique qu'avec sa clé privée. C'est une erreur
répandue de penser qu'une clé publique est utilisée pour le chiffrement
et que la clé privée est utilisée pour le déchiffrement. Ce n'est pas le
cas. On peut utiliser les deux clés pour chiffrer ou déchiffrer.
Cependant, si on utilise une clé pour chiffrer, alors l'autre clé devra
servir à déchiffrer. Par exemple On ne peut chiffrer un message puis le
déchiffrer en utilisant uniquement une clé publique.
</p><p>
<span class="emphasis"><em>L'utilisation d'une clé privée pour chiffrer et d'une clé
publique pour déchiffrer garantit l'identité de l'émetteur (qui est le
propriétaire de la clé publique) à ses destinataires. L'utilisation
d'une clé publique pour chiffrer et d'une clé privée pour déchiffrer
garantit que seul le destinataire (qui est le propriétaire de la clé
publique) accédera aux données.</em></span> (c'est-à-dire que seul le
détenteur de la clé privée pourra déchiffrer le message).
</p></td></tr></table></div><p>
<span class="strong"><strong>Chiffrement symétrique — Transmission
effective des données</strong></span> : une fois la connexion SSL
établie, on utilise le chiffrement symétrique, qui est moins
consommateur en cycles de processeur. Avec le chiffrement symétrique, on
peut chiffrer et déchiffrer les données en utilisant la même clé. La clé
de chiffrement symétrique est échangée durant le processus
d'initialisation, en utilisant la clé de chiffrement publique.
</p><p>
<span class="strong"><strong>Sommation de messages</strong></span> Le serveur
utilise des algorithmes de sommation de messages comme <a class="link" href="#hmac" title="HMAC : (Keyed Hashing for Message Authentication) : clé de hachage pour l'authentification d'un message">HMAC</a>, <a class="link" href="#sha1" title="SHA-1 (Secure Hash Algorithm) algorithme de hachage sécurisé">SHA-1</a>, <a class="link" href="#md5" title="Message Digest 5 — MD5 : sommation de messages 5 — somme MD5">MD5</a> pour vérifier l'intégrité des données
transférées.
</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e866"/>6.1.2. Garantie d'authenticité et d'intégrité</h4></div></div></div><p>Processus de chiffrement</p><pre class="screen">
Clef privée Clef publique
de l'émetteur du destinataire
,-. ,-.
( ).......... ( )..........
`-' ''''|'|'|| `-' ''''''''||
| | |
| | |
.----------. | | .----------. | .----------.
| Texte | V | | Texte | V | Texte |
| en |--------->| chiffré |--------->| chiffré |
| clair | Étape1 | 1 | Étape2 | 2 |\
`----------' | `----------' `----------' \ __
| | \ [_'
| | Étape5 \ |
|Étape3 | __ --|--
| | _.--' |
V | _..-'' / \
.---------. | .---------. _..-'' Destinataire
| SHA 1 | V |Signature| _..-''
|SomMessag|--------->|numérique|'
`---------' Étape4 `---------'
_ ___ ___
_ (_)/ _) _) _
____| |__ _ | |_| |_ ____ _____ _____ _____ _____ ____ _| |_
/ ___) _ \| || _) _) ___) ___ | _ \| _ \| ___ | _ (_ _)
( (___ | | | || | | || | | ____| || | | || | | ____| | | || |_
\____)_| |_|_||_| |_||_| |_____)_||_|_|_||_|_|_____)_| |_| \__)
</pre><div class="itemizedlist"><ul class="itemizedlist" type="opencircle"><li class="listitem"><p>
Étape 1 : le message original en clair est chiffré avec la clé
privée de l'émetteur, ce qui produit le texte chiffré 1. L'authenticité
de l'émetteur est garantie.
</p></li><li class="listitem"><p>
Étape 2 : le <span class="quote">« <span class="quote">texte chiffré 1</span> »</span> est chiffré à l'aide de
la clé publique du destinataire, aboutissant au <span class="quote">« <span class="quote">texte crypté
2</span> »</span>. Celui-ci garantira l'authenticité du destinataire,
c'est-à-dire que seul le destinataire peut déchiffrer le message à
l'aide de sa clé privée.
</p></li><li class="listitem"><p>
Étape 3 : la somme SHA1 du <span class="quote">« <span class="quote">texte en clair</span> »</span> est créée.
</p></li><li class="listitem"><p>
Étape 4 : la somme SHA1 du message est ensuite chiffrée avec la clé
privée de l'émetteur, ce qui produit la signature numérique du
<span class="quote">« <span class="quote">texte en clair</span> »</span>. Le destinataire peut utiliser la
signature numérique pour s'assurer de l'intégrité du message et de
l'authenticité de l'émetteur.
</p></li><li class="listitem"><p>
Étape 5 : la <span class="quote">« <span class="quote">signature numérique</span> »</span> et le <span class="quote">« <span class="quote">texte
chiffré 2</span> »</span> sont ensuite envoyés au destinataire.
</p></li></ul></div><p>
Processus de déchiffrement
</p><pre class="screen">
Clef privée Clef publique
du destinataire de l'émetteur
,-. ,-.
( ).......... ( )..........
`-' ''''''''|| `-' '''''''|||
| | |
| | |
.----------. | .----------. | | .----------.
| Texte | V | Texte | V | | Texte | .---No1---.
| chiffré |--------->| chiffré |--------->| en |------>| SHA 1 |
| 2 | Étape1 | 1 | Étape2 | | clair |Étape3 |SomMessag|
`----------' `----------' | `----------' `---------'
| ||
| ||Étape5
| ||
| ||
.---------. | .---------.
| Digital | V | SHA 1 |
|Signature|---------------------->|SomMessag|
`---------' Étape4 `---No2---'
_ _ _ ___ ___
| | // _ (_)/ _) _) _
__| |_____ ____| |__ _ | |_| |_ ____ _____ _____ _____ _____ ____ _| |_
/ _ | ___ |/ ___) _ \| || _) _) ___) ___ | _ \| _ \| ___ | _ (_ _)
( (_| | ____( (___ | | | || | | || | | ____| || | | || | | ____| | | || |_
\____|_____)\____)_| |_|_||_| |_||_| |_____)_||_|_|_||_|_|_____)_| |_| \__)
</pre><div class="itemizedlist"><ul class="itemizedlist" type="opencircle"><li class="listitem"><p>
Étape 1 : le <span class="quote">« <span class="quote">Texte chiffré 2</span> »</span> est déchiffré avec la
clé privée du destinataire, ce qui produit le texte chiffré 1.
</p></li><li class="listitem"><p>
Étape 2 : le <span class="quote">« <span class="quote">texte chiffré 1</span> »</span> est déchiffré à l'aide
de la clé publique de l'émetteur, ce qui produit le <span class="quote">« <span class="quote">texte en
clair</span> »</span>.
</p></li><li class="listitem"><p>
Étape 3 : la somme SHA1 du <span class="quote">« <span class="quote">texte en clair</span> »</span> est créée.
</p></li><li class="listitem"><p>
Étape 4 : la <span class="quote">« <span class="quote">signature numérique</span> »</span> est ensuite
déchiffrée à l'aide de la clé publique de l'émetteur, ce qui produit la
<span class="quote">« <span class="quote">somme SHA 1 du message</span> »</span>.
</p></li><li class="listitem"><p>
Étape 5 : la <span class="quote">« <span class="quote">somme SHA 1 du message numéro 1</span> »</span> est
ensuite comparée à la <span class="quote">« <span class="quote">somme SHA 1 du message numéro 2</span> »</span>. Si
elles sont égales, cela signifie que les données n'ont pas été modifiées
durant la transmission, et que l'intégrité de l'original <span class="quote">« <span class="quote">texte en
clair</span> »</span> a été préservée.
</p></li></ul></div></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e954"/>6.2. Certificats de test</h3></div></div></div><p>
Lorsque nous compilons Apache, nous créons un certificat de test. Nous
avons utilisé le makefile fourni par mod_ssl pour créer ce certificat
sur mesure. Nous avons utilisé la commande :
</p><pre class="screen">
# make certificate TYPE=custom
</pre><p>
Nous pourrons utiliser ce certificat à des fins de test.
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e963"/>6.3. Certificats destinés à la production</h3></div></div></div><p>
Il est nécessaire d'obtenir un certificat d'une Autorité de
Certification de confiance (nommée ci-après AC) pour une utilisation en
production. Les autorités de certification sont des vendeurs de
certificats, qui figurent dans la liste des AC de confiance de chaque
navigateur. Comme on l'a précisé dans la section des algorithmes de
cryptographie, si l'AC ne figure pas dans la liste des autorités de
confiance, un message d'alerte s'affichera quand l'utilisateur essayera
de se connecter à un site sécurisé.
</p><p>
Les certificats de test provoqueront eux aussi l'apparition d'un message
d'alerte dans le navigateur de l'utilisateur.
</p></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e970"/>6.4. Génération d'un CSR</h3></div></div></div><p>
Pour être signée, une CSR (Certificate Signature Request: Demande de
Signature de Certificat) doit être envoyée à une AC de confiance. Cette
section montre comment on crée une CSR, et comment on l'envoie à l'AC de
son choix.
</p><pre class="screen">
# openssl req</pre><p>
Pour créer une CSR, on peut recourir à cette commande comme suit :
</p><pre class="screen">
# cd /usr/local/apache/conf/
# /usr/local/ssl/bin/openssl req -new -nodes -keyout private.key -out public.csr
Generating a 1024 bit RSA private key
............++++++
....++++++
writing new private key to 'private.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:California
Locality Name (eg, city) []:San Jose
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Seagate
Organizational Unit Name (eg, section) []:Global Client Server
Common Name (eg, YOUR name) []:xml.seagate.com
Email Address []:saqib@seagate.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:badpassword
An optional company name []:
</pre><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note: PRNG not seeded"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left"><span class="quote">« <span class="quote">PRNG not seeded</span> »</span></th></tr><tr><td align="left" valign="top"><p>
Si le fichier <code class="filename"> /dev/random</code> n'existe pas sur votre
système, le message d'erreur <span class="quote">« <span class="quote"><code class="literal">PRNG not
seeded</code></span> »</span> s'affichera. Dans ce cas, vous pouvez utiliser
la commande suivante :
</p><pre class="screen">
# /usr/local/ssl/bin/openssl req -rand <code class="filename">mon_fichier.ext</code> -new -nodes -keyout private.key -out public.csr
</pre><p>
Remplacez le fichier mon_fichier.ext par le nom d'un fichier existant
dans votre système. Vous pouvez spécifier n'importe quel fichier.
Openssl utilisera ce fichier pour générer le noyau.
</p><p>
Sur Solaris 9 on trouve le fichier <code class="filename">/dev/random</code> .
Cependant, il est possible que vous ayez à installer le correctif <a class="ulink" href="http://sunsolve.sun.com/pub-cgi/findPatch.pl?patchId=112438" target="_top">
112438</a> pour accéder à /dev/random
</p></td></tr></table></div><p>
Arrivé là, vous devrez répondre à plusieurs questions concernant votre
serveur pour générer la CSR.
</p><p>
N.B. : Votre Common Name (CN) est le nom DNS pleinement qualifié
(FQDN) de votre serveur web, c'est-à-dire dav.server.com . Si vous
saisissez quelque chose d'autre, ça ne marchera PAS. Mettez de côté le
mot de passe pour un usage ultérieur.
</p><p>
Une fois le processus achevé, un fichier
<code class="filename">private.key</code> et un fichier
<code class="filename">public.csr</code> seront présents dans votre arborescence.
Il vous faudra envoyer le fichier <code class="filename"> public.csr</code> à
l'autorité de certification. À ce stade, le fichier public.key n'est pas
chiffré. pour le chiffrer, saisissez :
</p><pre class="screen">
# mv private.key private.key.unecrpyted
# /usr/local/ssl/bin/openssl rsa -in private.key.unecrpyted -des3 -out private.key
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="InstallingServerCert"/>6.5. Installation de la clé privée et du certificat du serveur</h3></div></div></div><p>
une fois que l'autorité de certification aura traitée votre demande,
elle vous renverra un certificat codé (certificat numérique). Le
certificat numérique est au format défini par la norme X.509 v3. Les
lignes qui suivent montre la structure d'un certificat numérique
conforme à X509 v3 (version française entre parenthèses)
</p><div class="itemizedlist"><ul class="itemizedlist" type="opencircle"><li class="listitem"><p>
Certificat
</p><div class="itemizedlist"><ul class="itemizedlist" type="opencircle"><li class="listitem"><p>
Version (Version)
</p></li><li class="listitem"><p>
Serial Number (Numéro de série)
</p></li><li class="listitem"><p>
Algorithm ID (Identification de l'algorithme)
</p></li><li class="listitem"><p>
Issuer (Émetteur)
</p></li></ul></div><p>
</p><div class="itemizedlist"><ul class="itemizedlist" type="opencircle"><li class="listitem"><p>
Validity (Validité)
</p></li><li class="listitem"><div class="itemizedlist"><ul class="itemizedlist" type="opencircle"><li class="listitem"><p>
Not Before (pas avant)
</p></li><li class="listitem"><p>
Not After (pas après)
</p></li></ul></div></li></ul></div><p>
</p><div class="itemizedlist"><ul class="itemizedlist" type="opencircle"><li class="listitem"><p>
Subject (sujet)
</p></li></ul></div><p>
</p><div class="itemizedlist"><ul class="itemizedlist" type="opencircle"><li class="listitem"><p>
Subject Public Key Info (Info de sujet de clé publique)
</p></li><li class="listitem"><div class="itemizedlist"><ul class="itemizedlist" type="opencircle"><li class="listitem"><p>
Public Key Algorithm (algorithme de clé publique)
</p></li><li class="listitem"><p>
RSA Public Key (clé publique RSA)
</p></li></ul></div></li></ul></div><p>
</p><div class="itemizedlist"><ul class="itemizedlist" type="opencircle"><li class="listitem"><p>
Extensions (Extensions)
</p></li></ul></div><p>
</p></li><li class="listitem"><p>
Certificate Signature Algorithm (algorithme de signature du certificat)
</p></li><li class="listitem"><p>
Certificate Signature (signature du certificat)
</p></li></ul></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e1091"/>6.5.1. Vérification d'un certificat numérique</h4></div></div></div><p>
Pour vérifier un certificat X.509, utilisez la commande suivante :
</p><pre class="screen">
# openssl verify <code class="filename">server.crt</code>
server.crt: OK
</pre><p>
où <code class="filename">server.crt</code> est le nom du fichier qui contient le
certificat numérique.
</p></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="viewingdigitcertcontent"/>6.5.2. Vérification du contenu d'un certificat numérique</h4></div></div></div><p>
On peut voir le contenu d'un certificat numérique en utilisant la
commande <strong class="userinput"><code># openssl x509</code></strong> comme suit :
</p><pre class="screen">
# openssl x509 -text -in <code class="filename">server.crt</code>
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 312312312 (0x0)
Signature Algorithm: md5WithRSAEncryption
Issuer: C=US, O=GTE Corporation, CN=GTE CyberTrust Root
Validity
Not Before: Feb 8 03:25:50 2000 GMT
Not After : Feb 8 03:25:50 2001 GMT
Subject: C=US, ST=New York, L=Pelham, O=xml-dev, OU=web, CN=www.xml-dev.com/Email=saqib@xml-dev.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (1024 bit)
Modulus (1024 bit):
............
............
Exponent: 65537 (0x10001)
Signature Algorithm: md5WithRSAEncryption
............
............
</pre></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e1119"/>6.5.3.
Installation des certificats : modification du fichier httpd.conf
</h4></div></div></div><p>
Vous devrez placer ce certificat dans le serveur, et indiquer à Apache
où le trouver.
</p><p>
Dans cet exemple, la clé privée est située dans le répertoire <code class="filename">/usr/local/apache2/conf/ssl.key/</code> et le
certificat du serveur est placé dans le répertoire <code class="filename">/usr/local/apache2/conf/ssl.crt/</code>.
</p><p>
Copiez en le renommant le fichier reçu de l'autorité de certification en
<code class="filename">server.crt</code> dans le répertoire <code class="filename">/usr/local/apache2/conf/ssl.crt/</code>.
</p><p>
et placez le fichier private.key généré à l'étape précédente dans le
répertoire <code class="filename">/usr/local/apache2/conf/ssl.key/</code>
</p><p>
Puis modifiez le fichier <code class="filename">/usr/local/apache2/conf/ssl.key/</code> pour qu'il
pointe correctement vers la clé privée et le certificat du
serveur :
</p><pre class="screen">
# Server Certificate:
# Point SSLCertificateFile at a PEM encoded certificate. If
# the certificate is encrypted, then you will be prompted for a
# pass phrase. Note that a kill -HUP will prompt again. Keep
# in mind that if you have both an RSA and a DSA certificate you
# can configure both in parallel (to also allow the use of DSA
# ciphers, etc.)
SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server.crt
#SSLCertificateFile /usr/local/apache2/conf/ssl.crt/server-dsa.crt
# Server Private Key:
# If the key is not combined with the certificate, use this
# directive to point at the key file. Keep in mind that if
# you've both a RSA and a DSA private key you can configure
# both in parallel (to also allow the use of DSA ciphers, etc.)
SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/private.key
#SSLCertificateKeyFile /usr/local/apache2/conf/ssl.key/server-dsa.key
</pre></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e1152"/>6.6. Annulation de la phrase de passe pour la clef privée RSA</h3></div></div></div><p>
La clé privée RSA conservée sur le serveur Web est d'habitude chiffrée,
et il vous faut une phrase de passe pour parcourir le fichier. Voilà
pourquoi quand Apache est lancé avec modssl, une phrase de passe vous
est demandée :
</p><pre class="screen">
# apachectl startssl
Apache/1.3.23 mod_ssl/2.8.6 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide us with the pass phrases.
Server your.server.dom:443 (RSA)
Enter pass phrase:
</pre><p>
Il est très important de chiffrer une clé privée RSA. Si un pirate
s'empare de votre clé privée RSA non chiffrée, il pourra facilement
emprunter l'identité de votre serveur Web. Si la clé est chiffrée, la
seule chose que pourra faire le pirate est de tenter une attaque en
force brute sur votre phrase de passe. L'utilisation d'une phrase de
passe robuste (c'est-à-dire longue) est encouragée.
</p><p>
Cependant, le fait de chiffrer la clé peut parfois être gênant, dans la
mesure où vous devrez saisir la phrase de passe à chaque démarrage du
serveur Web. En particulier si vous utilisez les scripts rc pour lancer
le serveur Web au démarrage, le processus de démarrage sera stoppé sur
l'invite de saisie d'une phrase de passe.
</p><p>
Vous pouvez facilement vous débarrasser de l'invite de saisie de la
phrase de passe en déchiffrant la clé. Cependant, assurez-vous que
personne ne pourra s'emparer de cette clé. Je ne saurais trop vous
recommander d'appliquer les lignes de conduite de durcissement et de
sécurisation du serveur avant de déchiffrer la clé du serveur Web.
</p><p>
Pour déchiffrer la clé :
</p><p>
tout d'abord, faites une copie de la clé chiffrée
</p><pre class="screen">
# cp server.key server.key.cryp
</pre><p>
Puis recréez la clé avec chiffrement. L'invite vous demandera la phrase
de passe de la clé chiffrée d'origine
</p><pre class="screen">
# /usr/local/ssl/bin/openssl rsa -in server.key.cryp -out server.key
read RSA key Enter PEM pass phrase: writing RSA key
</pre><p>
Une façon de sécuriser la clé privée non chiffrée est de limiter l'accès
en lecture à l'utilisateur root :
</p><pre class="screen">
# chmod 400 server.key
</pre></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a id="d0e1179"/>6.7. Réglage des performances SSL</h3></div></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e1182"/>6.7.1. Cache de session SSL inter-processus</h4></div></div></div><p>
Le modèle de fonctionnement d'Apache est multi-processus ; toutes
les requêtes ne seront PAS prises en charge par le même processus.
L'information sur la session SSL se perd donc quand un client effectue
de multiples requêtes. De multiples échanges de données SSL provoquent
une surcharge du système sur le serveur Web et le client. Pour éviter
cela, les informations de session SSL doivent être stockées dans un
cache de session inter-processus, pour permettre à tous les processus
d'accéder aux informations protocolaires. On peut spécifier
l'emplacement du cache de session SSL dans la directive SSLSessionCache
dans le
fichier<code class="filename">/usr/local/apache2/conf/ssl.key/</code> :
</p><pre class="screen">
SSLSessionCache shmht:logs/ssl_scache(512000)
#SSLSessionCache shmcb:logs/ssl_scache(512000)
#SSLSessionCache dbm:logs/ssl_scache
SSLSessionCacheTimeout 300
</pre><p>
L'utilisation de dbm:logs/ssl_scache crée un cache de type fichier de
hachage DBM sur le disque local.
</p><p>
L'utilisation de shmht:logs/ssl_scache(512000) crée un cache dans un
segment de mémoire partagée
</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note: shmht contre shmcb"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">shmht contre shmcb</th></tr><tr><td align="left" valign="top"><p>
shmht : recoure à une table de hachage pour cacher les informations
du protocole SSL dans la mémoire partagée.
</p><p>
shmcb : recoure à un tampon cyclique pour cacher les informations
du protocole SSL dans la mémoire partagée.
</p></td></tr></table></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note: N.B. : "><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="images/note.png"/></td><th align="left">N.B. : </th></tr><tr><td align="left" valign="top"><p>
tous les OS/plates-formes ne supportent pas de créer des tables de
hachage dans la mémoire partagée. Donc, il faut utiliser
dbm:logs/ssl_scache à la place.
</p></td></tr></table></div></div><div class="sect3"><div class="titlepage"><div><div><h4 class="title"><a id="d0e1208"/>6.7.2. Vérification du cache de session SSL</h4></div></div></div><p>
Pour vérifier si le cache de session SSL fonctionne correctement, vous
devez utiliser la commande <span class="command"><strong>openssl</strong></span> avec l'option
<code class="option">-reconnect</code> comme suit :
</p><pre class="screen">
# openssl s_client -connect your.server.dom:443 -state -reconnect
CONNECTED(00000003)
.......
.......
Reused, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA
SSL-Session:
.....
Reused, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA
SSL-Session:
.....
Reused, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA
SSL-Session:
.....
Reused, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA
SSL-Session:
.....
Reused, TLSv1/SSLv3, Cipher is EDH-RSA-DES-CBC3-SHA
SSL-Session:
.....
</pre><p>
<code class="option">-reconnect</code> oblige le s_client à se connecter au serveur
5 fois de suite en utilisant la même ID de session SSL. Comme vous le
voyez plus haut, vous devriez voir cinq tentatives de réutilisation de
la même ID de session.
</p></div></div></div><div class="appendix"><h2 class="title"><a id="d0e1226"/>A. Outils d'évaluation de performances HTTP/HTTPS</h2><p>
Vous trouverez ci-dessous une liste de quelques outils d'évaluation de
performances OpenSource pour serveurs Web
</p><div class="orderedlist"><ol class="orderedlist" type="i"><li class="listitem"><p>
<a class="ulink" href="http://distcache.sourceforge.net/" target="_top">SSLswamp</a> —
pour un audit de performances lors de la connexion à un serveur SSL
autorisé
</p></li><li class="listitem"><p>
<a class="ulink" href="http://www.hpl.hp.com/personal/David_Mosberger/httperf.html" target="_top">HTTPERF</a>
— un outil pour mesurer les performances d'un serveur Web
</p></li><li class="listitem"><p>
<a class="ulink" href="http://httpd.apache.org/docs-2.1/en/programs/ab.html" target="_top">ab</a>
— outil d'évaluation d'un serveur HTTP Apache
</p></li></ol></div></div><div class="appendix"><h2 class="title"><a id="d0e1250"/>B. Solutions matérielles basées sur le chiffrement SSL</h2><p>
Des solutions de chiffrement SSL matérielles sont présentées
ci-dessous :
</p><div class="orderedlist"><ol class="orderedlist" type="i"><li class="listitem"><p>
<a class="ulink" href="http://www.ncipher.com/international/fr/" target="_top">CHIL
(Cryptographic Hardware Interface Library)</a> fabriqué par nCipher
</p></li><li class="listitem"><p>
<a class="ulink" href="http://httpd.apache.org/docs-2.1/en/programs/ab.html" target="_top">ab</a>
— outil d'évaluation d'un serveur HTTP Apache
</p></li></ol></div></div><div class="appendix"><h2 class="title"><a id="d0e1268"/>C. Autorités de certification</h2><p>
La liste qui suit présente des autorités de certification acceptées par
les différents navigateurs :
</p><div class="orderedlist"><ol class="orderedlist" type="i"><li class="listitem"><p>
<a class="ulink" href="http://www.baltimore.com/" target="_top">Baltimore</a>
</p></li><li class="listitem"><p>
<a class="ulink" href="http://www.entrust.com/" target="_top">Entrust</a>
</p></li><li class="listitem"><p>
<a class="ulink" href="http://www.globalsign.net/" target="_top">GeoTrust</a>
</p></li><li class="listitem"><p>
<a class="ulink" href="http://www.thawte.com" target="_top">Thawte</a>
</p></li><li class="listitem"><p>
<a class="ulink" href="http://www.trustcenter.de/" target="_top">TrustCenter</a>
</p></li></ol></div></div><div class="glossary"><div class="titlepage"><div><div><h2 class="title"><a id="glossary"/>Glossaire de termes PKI</h2></div></div></div><div class="glossdiv"><h3 class="title">A</h3><dl><dt><a id="asymmetric_crypt"/><span class="glossterm">
Asymmetric Cryptography : Chiffrement asymétrique
</span></dt><dd class="glossdef"><p>
Une paire de clés publiques et privées est utilisée dans ce type de
chiffrement. La clé privée est secrète et la clé publique est
distribuée à volonté.
</p></dd></dl></div><div class="glossdiv"><h3 class="title">C</h3><dl><dt><a id="certificate"/><span class="glossterm">
Certificat
</span></dt><dd class="glossdef"><p>
Enregistrement contenant des informations conformes au format <a class="link" href="#InstallingServerCert" title="6.5. Installation de la clé privée et du certificat du serveur"> format X.509.</a>.
</p></dd><dt><a id="ca"/><span class="glossterm">
Certificate Authority (CA) : Autorité de Certification
</span></dt><dd class="glossdef"><p>
Émetteur d'un certificat numérique. De plus, il valide l'identité de
l'entité finale propriétaire du certificat numérique.
</p></dd><dt><a id="csr"/><span class="glossterm">
Certificate Signing Request (CSR) : demande de signature de
certificat
</span></dt><dd class="glossdef"><p>
Une demande de signature de certificat est ce que vous envoyez à une
autorité de certification (CA) pour vous inscrire. Une CSR contient la
clé publique de l'entité finale effectuant la demande de certificat
numérique.
</p></dd><dt><a id="cn"/><span class="glossterm">
Common Name (CN) : Nom Commun
</span></dt><dd class="glossdef"><p>
Le Common Name est le nom de l'entité finale c.-à-d. Saqib Ali. Si
l'entité finale est un serveur Web, le Common Name (CN) est le nom DNS
pleinement qualifié (FQDN) du serveur web.
</p></dd></dl></div><div class="glossdiv"><h3 class="title">D</h3><dl><dt><a id="digitcert"/><span class="glossterm">
Certificat numérique
</span></dt><dd class="glossdef"><p>
Certificat qui relie une clé publique à un sujet (entité finale). Ce
certificat contient également d'autres informations (définies dans le
<a class="link" href="#InstallingServerCert" title="6.5. Installation de la clé privée et du certificat du serveur"> format X.509) sur le sujet.</a>
Il est signé par l'autorité de certification, à l'aide de la clé privée
de l'autorité de certification, c'est-à-dire à l'aide d'un <a class="link" href="#viewingdigitcertcontent" title="6.5.2. Vérification du contenu d'un certificat numérique"> certificat numérique</a>
</p></dd><dt><a id="digitsign"/><span class="glossterm">
Digital Signature : signature numérique
</span></dt><dd class="glossdef"><p>
On crée une signature numérique en signant la somme du message (hachage
du message) à l'aide de la clé privée. Elle garantit l'identité de
l'émetteur et l'intégrité des données.
</p></dd></dl></div><div class="glossdiv"><h3 class="title">E</h3><dl><dt><a id="end_entity"/><span class="glossterm">
Entité finale
</span></dt><dd class="glossdef"><p>
Entité protagoniste dans la PKI (infrastructure de clé publique). Il
s'agit normalement d'un serveur, d'un service ou d'une personne. Une
autorité de certification n'est pas une entité finale. Pour une autorité
de certification, l'auteur de la demande est une entité finale.
</p></dd></dl></div><div class="glossdiv"><h3 class="title">H</h3><dl><dt><a id="hash"/><span class="glossterm">
Hash: hachage
</span></dt><dd class="glossdef"><p>
Un hachage est un nombre hexadécimal généré à partir d'une chaîne de texte,
de telle façon que deux chaînes différentes ne puissent produire le même
hachage.
</p></dd><dt><a id="hmac"/><span class="glossterm">
HMAC : (<span class="foreignphrase"><em class="foreignphrase">Keyed Hashing for Message
Authentication</em></span>) : clé de hachage pour
l'authentification d'un message
</span></dt><dd class="glossdef"><p>
HMAC est une mise en œuvre de l'algorithme <span class="quote">« <span class="quote">code
d'authentification de messages</span> »</span> MAC.
</p></dd></dl></div><div class="glossdiv"><h3 class="title">M</h3><dl><dt><a id="mac"/><span class="glossterm">
Message Authentication Code : code d'authentification de messages
</span></dt><dd class="glossdef"><p>
Analogue à une sommation de message (hachage/empreintes digitales), à ceci
près qu'on utilise la clé secrète partagée pour calculer le hachage. Étant
donné qu'une clé secrète partagée est utilisée, aucun attaquant ne peut
changer la somme du message. Cependant, une clé secrète partagée doit
tout d'abord être communiquée aux entités participantes, contrairement à
une signature numérique pour laquelle une somme de messages est signée à
l'aide de la clé privée. HMAC est un exemple d'un algorithme de code
d'authentification de messages.
</p></dd><dt><a id="md5"/><span class="glossterm">
Message Digest 5 — MD5 : sommation de messages 5 —
somme MD5
</span></dt><dd class="glossdef"><p>
Message Digest 5 (MD5) est un ensemble de fonctions de hachage
unidirectionnelles à 128 bits
</p></dd></dl></div><div class="glossdiv"><h3 class="title">P</h3><dl><dt><a id="private_key"/><span class="glossterm">
Private Key : clé privée
</span></dt><dd class="glossdef"><p>
En chiffrement asymétrique, la clé privée est celle qui est tenue
secrète par le propriétaire (entité finale). Elle peut être utilisée
pour le chiffrement ou le déchiffrement.
</p></dd><dt><a id="public_key"/><span class="glossterm">
Public Key : clé publique
</span></dt><dd class="glossdef"><p>
En chiffrement asymétrique, la clé publique est celle qui distribuée
librement. Elle peut être utilisée pour le chiffrement ou le
déchiffrement.
</p></dd><dt><a id="pki"/><span class="glossterm">
Public Key Infrastructure (PKI) : infrastructure de clé
publique
</span></dt><dd class="glossdef"><p>
Infrastructure de clé publique
</p></dd></dl></div><div class="glossdiv"><h3 class="title">S</h3><dl><dt><a id="sha1"/><span class="glossterm">
SHA-1 (Secure Hash Algorithm) algorithme de hachage sécurisé
</span></dt><dd class="glossdef"><p>
Secure Hash Algorithm (SHA-1) est une fonction de hachage unidirectionnelle
à 160 bits. La taille maximum d'un message est de 2^64 bits.
</p></dd><dt><a id="sslayer"/><span class="glossterm">
Secure Socket Layer (SSL)
</span></dt><dd class="glossdef"><p>
Secure Socket Layer (SSL) est un protocole de sécurité qui fournit des
services d'authentification (certificats numériques), de confidentialité
(chiffrement) et d'intégrité des données (sommation de messages —
MD5, SHA, et cætera).
</p></dd><dt><a id="symmetric_crypt"/><span class="glossterm">
Chiffrement symétrique
</span></dt><dd class="glossdef"><p>
Dans ce type de chiffrement, le message est chiffré et déchiffré par la
même clé. (((n^2-n))/2) clés sont nécessaires pour n utilisateurs
désirant utiliser ce système de chiffrement.
</p></dd></dl></div></div></div></body></html>
|