[{"data":1,"prerenderedAt":1237},["ShallowReactive",2],{"blog-\u002Fblog\u002Flets-encrypt-certificat-gratuit-valide":3,"blog-\u002Fblog\u002Flets-encrypt-certificat-gratuit-valide-surround":1182,"blog-\u002Fblog\u002Flets-encrypt-certificat-gratuit-valide-certifications":1236},{"id":4,"title":5,"body":6,"categories":1171,"cover":1172,"cover_contain":210,"credly_badge_id":1171,"date":1173,"description":1174,"extension":1175,"meta":1176,"navigation":210,"path":1177,"related_certifications":1171,"seo":1178,"slug":1179,"stem":1180,"__hash__":1181},"blog\u002Fblog\u002Flets-encrypt-certificat-gratuit-valide.md","Let’s Encrypt certificat gratuit et valide",{"type":7,"value":8,"toc":1164},"minimark",[9,14,18,21,32,39,43,46,83,86,102,105,139,142,155,158,393,396,409,412,431,434,456,459,478,481,495,498,502,505,526,529,545,548,557,560,741,744,835,838,853,856,1146,1153,1157,1160],[10,11,13],"h2",{"id":12},"cas-dusage-concret","Cas d'usage concret",[15,16,17],"p",{},"Vous voulez chiffrer vos domaines sans payer de certificat commercial : découvrez comment mettre en place Let's Encrypt.",[10,19,5],{"id":20},"lets-encrypt-certificat-gratuit-et-valide",[15,22,23,24,31],{},"Le certificat SSL est un élément de confiance indispensable depuis les révélations d’Edward Snowden en 2013. De plus les sites sécurisés sont favorisés dans les résultats de recherche. Dans notre cas nous utiliserons le service Let’s encrypt qui est open-source (",[25,26,30],"a",{"href":27,"rel":28},"https:\u002F\u002Fgithub.com\u002Fletsencrypt\u002F",[29],"nofollow","Github",") et financé par des grands noms du web comme Mozilla par exemple.",[15,33,34,38],{},[35,36,37],"strong",{},"Info :"," Dans cet article, nous utiliserons notre certificat SSL avec le reverse proxy Pound et nous faciliterons le renouvellement du certificat (car il n’est valide que 90 jours).",[10,40,42],{"id":41},"un-service-simple-dusage","Un service simple d’usage",[15,44,45],{},"Dans tout les cas d’usage Let’s encrypt requiert un pré-requis avant son déploiement. Le champs A de votre domaine (ou sous domaine) devra être redirigé vers le serveur qui utilisera le\u002Fles certificats. Ensuite nous allons récupérer les sources du projet via git et nous nous rendons dans son répertoire  :",[47,48,53],"pre",{"className":49,"code":50,"language":51,"meta":52,"style":52},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","git clone https:\u002F\u002Fgithub.com\u002Fletsencrypt\u002Fletsencrypt && cd letsencrypt\n","bash","",[54,55,56],"code",{"__ignoreMap":52},[57,58,61,65,69,72,76,80],"span",{"class":59,"line":60},"line",1,[57,62,64],{"class":63},"sBMFI","git",[57,66,68],{"class":67},"sfazB"," clone",[57,70,71],{"class":67}," https:\u002F\u002Fgithub.com\u002Fletsencrypt\u002Fletsencrypt",[57,73,75],{"class":74},"sMK4o"," &&",[57,77,79],{"class":78},"s2Zo4"," cd",[57,81,82],{"class":67}," letsencrypt\n",[15,84,85],{},"Let’s encrypt requiert que les ports http et https ne soit pas en écoute sur le serveur, arrêtons donc le service Pound :",[47,87,89],{"className":49,"code":88,"language":51,"meta":52,"style":52},"service pound stop\n",[54,90,91],{"__ignoreMap":52},[57,92,93,96,99],{"class":59,"line":60},[57,94,95],{"class":63},"service",[57,97,98],{"class":67}," pound",[57,100,101],{"class":67}," stop\n",[15,103,104],{},"Voici un exemple d’usage pour la génération des certificats avec le domaine principal et un seul sous domaine :",[47,106,108],{"className":49,"code":107,"language":51,"meta":52,"style":52},".\u002Fletsencrypt-auto --standalone certonly -d kassianoff.fr -d www.kassianoff.fr --rsa-key-size 4096\n",[54,109,110],{"__ignoreMap":52},[57,111,112,115,118,121,124,127,129,132,135],{"class":59,"line":60},[57,113,114],{"class":63},".\u002Fletsencrypt-auto",[57,116,117],{"class":67}," --standalone",[57,119,120],{"class":67}," certonly",[57,122,123],{"class":67}," -d",[57,125,126],{"class":67}," kassianoff.fr",[57,128,123],{"class":67},[57,130,131],{"class":67}," www.kassianoff.fr",[57,133,134],{"class":67}," --rsa-key-size",[57,136,138],{"class":137},"sbssI"," 4096\n",[15,140,141],{},"Pour informations :",[143,144,145,149,152],"ul",{},[146,147,148],"li",{},"certonly : il permet de générer seulement le certificat et ses clés dans le répertoire \u002Fetc\u002Fletsencrypt\u002Flive\u002F.",[146,150,151],{},"-d (ou –domains) : il permet de passer les domaines et sous domaines en argument.",[146,153,154],{},"–rsa-key-size :  taille de la clé RSA est de 4096 bits (par défaut en 2048 bits : non recommandé).",[15,156,157],{},"Le résultat doit être celui-ci :",[47,159,161],{"className":49,"code":160,"language":51,"meta":52,"style":52},"Requesting root privileges to run letsencrypt...\n   \u002Froot\u002F.local\u002Fshare\u002Fletsencrypt\u002Fbin\u002Fletsencrypt --standalone certonly -d kassianoff.fr -d www.kassianoff.fr --rsa-key-size 4096\n\nIMPORTANT NOTES:\n - Congratulations! Your certificate and chain have been saved at\n   \u002Fetc\u002Fletsencrypt\u002Flive\u002Fkassianoff.fr\u002Ffullchain.pem. Your cert will\n   expire on 2016-07-24. To obtain a new version of the certificate in\n   the future, simply run Let's Encrypt again.\n - If you like Let's Encrypt, please consider supporting our work by:\n\n   Donating to ISRG \u002F Let's Encrypt:   https:\u002F\u002Fletsencrypt.org\u002Fdonate\n   Donating to EFF:                    https:\u002F\u002Feff.org\u002Fdonate-le\n",[54,162,163,183,205,212,221,254,268,306,329,361,366,387],{"__ignoreMap":52},[57,164,165,168,171,174,177,180],{"class":59,"line":60},[57,166,167],{"class":63},"Requesting",[57,169,170],{"class":67}," root",[57,172,173],{"class":67}," privileges",[57,175,176],{"class":67}," to",[57,178,179],{"class":67}," run",[57,181,182],{"class":67}," letsencrypt...\n",[57,184,186,189,191,193,195,197,199,201,203],{"class":59,"line":185},2,[57,187,188],{"class":63},"   \u002Froot\u002F.local\u002Fshare\u002Fletsencrypt\u002Fbin\u002Fletsencrypt",[57,190,117],{"class":67},[57,192,120],{"class":67},[57,194,123],{"class":67},[57,196,126],{"class":67},[57,198,123],{"class":67},[57,200,131],{"class":67},[57,202,134],{"class":67},[57,204,138],{"class":137},[57,206,208],{"class":59,"line":207},3,[57,209,211],{"emptyLinePlaceholder":210},true,"\n",[57,213,215,218],{"class":59,"line":214},4,[57,216,217],{"class":63},"IMPORTANT",[57,219,220],{"class":67}," NOTES:\n",[57,222,224,227,230,233,236,239,242,245,248,251],{"class":59,"line":223},5,[57,225,226],{"class":63}," -",[57,228,229],{"class":67}," Congratulations!",[57,231,232],{"class":67}," Your",[57,234,235],{"class":67}," certificate",[57,237,238],{"class":67}," and",[57,240,241],{"class":67}," chain",[57,243,244],{"class":67}," have",[57,246,247],{"class":67}," been",[57,249,250],{"class":67}," saved",[57,252,253],{"class":67}," at\n",[57,255,257,260,262,265],{"class":59,"line":256},6,[57,258,259],{"class":63},"   \u002Fetc\u002Fletsencrypt\u002Flive\u002Fkassianoff.fr\u002Ffullchain.pem.",[57,261,232],{"class":67},[57,263,264],{"class":67}," cert",[57,266,267],{"class":67}," will\n",[57,269,271,274,277,280,283,286,289,292,295,298,301,303],{"class":59,"line":270},7,[57,272,273],{"class":63},"   expire",[57,275,276],{"class":67}," on",[57,278,279],{"class":67}," 2016-07-24.",[57,281,282],{"class":67}," To",[57,284,285],{"class":67}," obtain",[57,287,288],{"class":67}," a",[57,290,291],{"class":67}," new",[57,293,294],{"class":67}," version",[57,296,297],{"class":67}," of",[57,299,300],{"class":67}," the",[57,302,235],{"class":67},[57,304,305],{"class":67}," in\n",[57,307,309,312,315,318,320,323,326],{"class":59,"line":308},8,[57,310,311],{"class":63},"   the",[57,313,314],{"class":67}," future,",[57,316,317],{"class":67}," simply",[57,319,179],{"class":67},[57,321,322],{"class":67}," Let",[57,324,325],{"class":74},"'",[57,327,328],{"class":67},"s Encrypt again.\n",[57,330,332,335,337,340,343,346,349,352,355,358],{"class":59,"line":331},9,[57,333,334],{"class":67}," - If you like Let",[57,336,325],{"class":74},[57,338,339],{"class":67},"s",[57,341,342],{"class":67}," Encrypt,",[57,344,345],{"class":67}," please",[57,347,348],{"class":67}," consider",[57,350,351],{"class":67}," supporting",[57,353,354],{"class":67}," our",[57,356,357],{"class":67}," work",[57,359,360],{"class":67}," by:\n",[57,362,364],{"class":59,"line":363},10,[57,365,211],{"emptyLinePlaceholder":210},[57,367,369,372,374,377,380,382,384],{"class":59,"line":368},11,[57,370,371],{"class":63},"   Donating",[57,373,176],{"class":67},[57,375,376],{"class":67}," ISRG",[57,378,379],{"class":67}," \u002F",[57,381,322],{"class":67},[57,383,325],{"class":74},[57,385,386],{"class":67},"s Encrypt:   https:\u002F\u002Fletsencrypt.org\u002Fdonate\n",[57,388,390],{"class":59,"line":389},12,[57,391,392],{"class":67},"   Donating to EFF:                    https:\u002F\u002Feff.org\u002Fdonate-le\n",[15,394,395],{},"Une fois réussi, notre certificat est donc disponible dans le dossier kassianoff.fr :",[47,397,399],{"className":49,"code":398,"language":51,"meta":52,"style":52},"cd \u002Fetc\u002Fletsencrypt\u002Flive\u002Fkassianoff.fr\u002F\n",[54,400,401],{"__ignoreMap":52},[57,402,403,406],{"class":59,"line":60},[57,404,405],{"class":78},"cd",[57,407,408],{"class":67}," \u002Fetc\u002Fletsencrypt\u002Flive\u002Fkassianoff.fr\u002F\n",[15,410,411],{},"Nous avons donc les fichiers suivants :",[47,413,415],{"className":49,"code":414,"language":51,"meta":52,"style":52},"cert.pem  chain.pem  fullchain.pem  privkey.pem\n",[54,416,417],{"__ignoreMap":52},[57,418,419,422,425,428],{"class":59,"line":60},[57,420,421],{"class":63},"cert.pem",[57,423,424],{"class":67},"  chain.pem",[57,426,427],{"class":67},"  fullchain.pem",[57,429,430],{"class":67},"  privkey.pem\n",[15,432,433],{},"Les deux fichiers qui nous intéressent sont privekey.pem et cert.pem que nous allons concaténer pour Pound :",[47,435,437],{"className":49,"code":436,"language":51,"meta":52,"style":52},"cat \u002Fetc\u002Fletsencrypt\u002Flive\u002Fkassianoff.fr\u002Fprivkey.pem \u002Fetc\u002Fletsencrypt\u002Flive\u002Fkassianoff.fr\u002Ffullchain.pem > \u002Fetc\u002Fpound\u002Fkassianoff.pem\n",[54,438,439],{"__ignoreMap":52},[57,440,441,444,447,450,453],{"class":59,"line":60},[57,442,443],{"class":63},"cat",[57,445,446],{"class":67}," \u002Fetc\u002Fletsencrypt\u002Flive\u002Fkassianoff.fr\u002Fprivkey.pem",[57,448,449],{"class":67}," \u002Fetc\u002Fletsencrypt\u002Flive\u002Fkassianoff.fr\u002Ffullchain.pem",[57,451,452],{"class":74}," >",[57,454,455],{"class":67}," \u002Fetc\u002Fpound\u002Fkassianoff.pem\n",[15,457,458],{},"Pour que cela fonctionne, ajoutons dans le fichier de configuration de pound \u002Fetc\u002Fpound\u002Fpound.cfg :",[47,460,462],{"className":49,"code":461,"language":51,"meta":52,"style":52},"Cert \"\u002Fetc\u002Fpound\u002Fkassianoff.pem\"\n",[54,463,464],{"__ignoreMap":52},[57,465,466,469,472,475],{"class":59,"line":60},[57,467,468],{"class":63},"Cert",[57,470,471],{"class":74}," \"",[57,473,474],{"class":67},"\u002Fetc\u002Fpound\u002Fkassianoff.pem",[57,476,477],{"class":74},"\"\n",[15,479,480],{},"Le service Pound peut ensuite être démarré :",[47,482,484],{"className":49,"code":483,"language":51,"meta":52,"style":52},"service pound start\n",[54,485,486],{"__ignoreMap":52},[57,487,488,490,492],{"class":59,"line":60},[57,489,95],{"class":63},[57,491,98],{"class":67},[57,493,494],{"class":67}," start\n",[15,496,497],{},"Nous avons désormais un certificat valide 90 jours signé et en place sur nos domaines et notre sous domaine !",[10,499,501],{"id":500},"création-ou-renouvellement-simplifié","Création ou renouvellement simplifié",[15,503,504],{},"Il faut avouer que posséder un certificat avec Let’s encrypt c’est pratique. Cependant il peut être intéressant de créer et de renouveler encore plus simplement ses certificats. Dans mon cas j’ai créé mon propre script  :",[47,506,508],{"className":49,"code":507,"language":51,"meta":52,"style":52},"git clone https:\u002F\u002Fgithub.com\u002Fffonaissak\u002Fletsencrypt-pound.git && cd letsencrypt-pound\n",[54,509,510],{"__ignoreMap":52},[57,511,512,514,516,519,521,523],{"class":59,"line":60},[57,513,64],{"class":63},[57,515,68],{"class":67},[57,517,518],{"class":67}," https:\u002F\u002Fgithub.com\u002Fffonaissak\u002Fletsencrypt-pound.git",[57,520,75],{"class":74},[57,522,79],{"class":78},[57,524,525],{"class":67}," letsencrypt-pound\n",[15,527,528],{},"Il suffit ensuite de rendre exécutable le script :",[47,530,532],{"className":49,"code":531,"language":51,"meta":52,"style":52},"chmod +x letsencrypt-pound.sh\n",[54,533,534],{"__ignoreMap":52},[57,535,536,539,542],{"class":59,"line":60},[57,537,538],{"class":63},"chmod",[57,540,541],{"class":67}," +x",[57,543,544],{"class":67}," letsencrypt-pound.sh\n",[15,546,547],{},"Puis :",[47,549,551],{"className":49,"code":550,"language":51,"meta":52,"style":52},".\u002Fletsencrypt-pound.sh\n",[54,552,553],{"__ignoreMap":52},[57,554,555],{"class":59,"line":60},[57,556,550],{"class":63},[15,558,559],{},"Une erreur peut se produire si par exemple un autre service écoute sur le port http ou https, comme par exemple dans le cas présent un conteneur Docker :",[47,561,563],{"className":49,"code":562,"language":51,"meta":52,"style":52},"The program docker (process ID 5427) is already listening on TCP port 80. This\nwill prevent us from binding to that port. Please stop the docker program\ntemporarily and then try again.\n-------------------------------------------------------------------------------\nPress Enter to Continue\nAt least one of the (possibly) required ports is already taken.\ncat: \u002Fetc\u002Fletsencrypt\u002Flive\u002Fkassianoff.fr\u002Fprivkey.pem: No such file or directory\ncat: \u002Fetc\u002Fletsencrypt\u002Flive\u002Fkassianoff.fr\u002Ffullchain.pem: No such file or directory\n[....] Starting reverse proxy and load balancer: poundstarting...\n. ok\n",[54,564,565,589,627,643,648,661,679,702,719,733],{"__ignoreMap":52},[57,566,567,570,573,576,580,583,586],{"class":59,"line":60},[57,568,569],{"class":63},"The",[57,571,572],{"class":67}," program",[57,574,575],{"class":67}," docker",[57,577,579],{"class":578},"sTEyZ"," (process ",[57,581,582],{"class":67},"ID",[57,584,585],{"class":137}," 5427",[57,587,588],{"class":578},") is already listening on TCP port 80. This\n",[57,590,591,594,597,600,603,606,608,611,614,617,620,622,624],{"class":59,"line":185},[57,592,593],{"class":63},"will",[57,595,596],{"class":67}," prevent",[57,598,599],{"class":67}," us",[57,601,602],{"class":67}," from",[57,604,605],{"class":67}," binding",[57,607,176],{"class":67},[57,609,610],{"class":67}," that",[57,612,613],{"class":67}," port.",[57,615,616],{"class":67}," Please",[57,618,619],{"class":67}," stop",[57,621,300],{"class":67},[57,623,575],{"class":67},[57,625,626],{"class":67}," program\n",[57,628,629,632,634,637,640],{"class":59,"line":207},[57,630,631],{"class":63},"temporarily",[57,633,238],{"class":67},[57,635,636],{"class":67}," then",[57,638,639],{"class":67}," try",[57,641,642],{"class":67}," again.\n",[57,644,645],{"class":59,"line":214},[57,646,647],{"class":63},"-------------------------------------------------------------------------------\n",[57,649,650,653,656,658],{"class":59,"line":223},[57,651,652],{"class":63},"Press",[57,654,655],{"class":67}," Enter",[57,657,176],{"class":67},[57,659,660],{"class":67}," Continue\n",[57,662,663,666,669,672,674,676],{"class":59,"line":256},[57,664,665],{"class":63},"At",[57,667,668],{"class":67}," least",[57,670,671],{"class":67}," one",[57,673,297],{"class":67},[57,675,300],{"class":67},[57,677,678],{"class":578}," (possibly) required ports is already taken.\n",[57,680,681,684,687,690,693,696,699],{"class":59,"line":270},[57,682,683],{"class":63},"cat:",[57,685,686],{"class":67}," \u002Fetc\u002Fletsencrypt\u002Flive\u002Fkassianoff.fr\u002Fprivkey.pem:",[57,688,689],{"class":67}," No",[57,691,692],{"class":67}," such",[57,694,695],{"class":67}," file",[57,697,698],{"class":67}," or",[57,700,701],{"class":67}," directory\n",[57,703,704,706,709,711,713,715,717],{"class":59,"line":308},[57,705,683],{"class":63},[57,707,708],{"class":67}," \u002Fetc\u002Fletsencrypt\u002Flive\u002Fkassianoff.fr\u002Ffullchain.pem:",[57,710,689],{"class":67},[57,712,692],{"class":67},[57,714,695],{"class":67},[57,716,698],{"class":67},[57,718,701],{"class":67},[57,720,721,724,727,730],{"class":59,"line":331},[57,722,723],{"class":74},"[",[57,725,726],{"class":578},"....",[57,728,729],{"class":74},"]",[57,731,732],{"class":578}," Starting reverse proxy and load balancer: poundstarting...\n",[57,734,735,738],{"class":59,"line":363},[57,736,737],{"class":78},".",[57,739,740],{"class":67}," ok\n",[15,742,743],{},"Pour résoudre ce problème temporaire avant le déploiement de mon patch, localiser le service :",[47,745,747],{"className":49,"code":746,"language":51,"meta":52,"style":52},"ps aux | grep \"5427\"\nroot      5427  0.0  0.1 116292 11672 ?        Sl   18:45   0:00 docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 80 -container-ip 172.17.0.72 -container-port 80\n",[54,748,749,770],{"__ignoreMap":52},[57,750,751,754,757,760,763,765,768],{"class":59,"line":60},[57,752,753],{"class":63},"ps",[57,755,756],{"class":67}," aux",[57,758,759],{"class":74}," |",[57,761,762],{"class":63}," grep",[57,764,471],{"class":74},[57,766,767],{"class":67},"5427",[57,769,477],{"class":74},[57,771,772,775,778,781,784,787,790,793,796,799,802,805,808,811,814,817,820,823,826,829,832],{"class":59,"line":185},[57,773,774],{"class":63},"root",[57,776,777],{"class":137},"      5427",[57,779,780],{"class":137},"  0.0",[57,782,783],{"class":137},"  0.1",[57,785,786],{"class":137}," 116292",[57,788,789],{"class":137}," 11672",[57,791,792],{"class":67}," ?",[57,794,795],{"class":67},"        Sl",[57,797,798],{"class":67},"   18:45",[57,800,801],{"class":67},"   0:00",[57,803,804],{"class":67}," docker-proxy",[57,806,807],{"class":67}," -proto",[57,809,810],{"class":67}," tcp",[57,812,813],{"class":67}," -host-ip",[57,815,816],{"class":137}," 0.0.0.0",[57,818,819],{"class":67}," -host-port",[57,821,822],{"class":137}," 80",[57,824,825],{"class":67}," -container-ip",[57,827,828],{"class":137}," 172.17.0.72",[57,830,831],{"class":67}," -container-port",[57,833,834],{"class":137}," 80\n",[15,836,837],{},"Docker monopolise le port http avec un conteneur en cours d’utilisation, arrêtons le :",[47,839,841],{"className":49,"code":840,"language":51,"meta":52,"style":52},"docker stop mon_conteneur\n",[54,842,843],{"__ignoreMap":52},[57,844,845,848,850],{"class":59,"line":60},[57,846,847],{"class":63},"docker",[57,849,619],{"class":67},[57,851,852],{"class":67}," mon_conteneur\n",[15,854,855],{},"Il suffit de ré-exécuter le script comme cela :",[47,857,861],{"className":858,"code":859,"language":860,"meta":52,"style":52},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight",".\u002Fletsencrypt-pound.sh\nYour first domain (ex:kassianoff.fr)\nkassianoff.fr\nYour second domain (ex:www.kassianoff.fr)\nwww.kassianoff.fr\nYour third domain (ex:www2.kassianoff.fr)\nwww2.kassianoff.fr\nYou domains are : [kassianoff.fr] [www.kassianoff.fr] [www2.kassianoff.fr], Do you want to continue ? [Y\u002FN]\nY\nCloning into 'letsencrypt'...\nremote: Counting objects: 34827, done.\nremote: Total 34827 (delta 0), reused 0 (delta 0), pack-reused 34827\nReceiving objects: 100% (34827\u002F34827), 9.30 MiB | 6.53 MiB\u002Fs, done.\nResolving deltas: 100% (24741\u002F24741), done.\n[ ok ] Stopping reverse proxy and load balancer: pound.\nYour email contact for the certificat (ex:postmaster@kassianoff.fr)\npostmaster@kassianoff.fr\nChecking for new version...\nRequesting root privileges to run letsencrypt...\n   \u002Froot\u002F.local\u002Fshare\u002Fletsencrypt\u002Fbin\u002Fletsencrypt --text --email postmaster@kassianoff.fr --domains kassianoff.fr -d www.kassianoff.fr -d www2.kassianoff.fr --agree-tos --standalone certonly --rsa-key-size 4096\n\nIMPORTANT NOTES:\n - Congratulations! Your certificate and chain have been saved at\n   \u002Fetc\u002Fletsencrypt\u002Flive\u002Fkassianoff.fr\u002Ffullchain.pem. Your\n   cert will expire on 2016-07-24. To obtain a new version of the\n   certificate in the future, simply run Let's Encrypt again.\n - If you like Let's Encrypt, please consider supporting our work by:\n\n   Donating to ISRG \u002F Let's Encrypt:   https:\u002F\u002Fletsencrypt.org\u002Fdonate\n   Donating to EFF:                    https:\u002F\u002Feff.org\u002Fdonate-le\n\n[....] Starting reverse proxy and load balancer: poundstarting...\n. ok\n","yaml",[54,862,863,867,872,877,882,887,892,897,934,940,945,961,970,981,992,1011,1017,1023,1029,1035,1041,1046,1055,1063,1069,1075,1081,1091,1096,1107,1118,1123,1140],{"__ignoreMap":52},[57,864,865],{"class":59,"line":60},[57,866,550],{"class":67},[57,868,869],{"class":59,"line":185},[57,870,871],{"class":67},"Your first domain (ex:kassianoff.fr)\n",[57,873,874],{"class":59,"line":207},[57,875,876],{"class":67},"kassianoff.fr\n",[57,878,879],{"class":59,"line":214},[57,880,881],{"class":67},"Your second domain (ex:www.kassianoff.fr)\n",[57,883,884],{"class":59,"line":223},[57,885,886],{"class":67},"www.kassianoff.fr\n",[57,888,889],{"class":59,"line":256},[57,890,891],{"class":67},"Your third domain (ex:www2.kassianoff.fr)\n",[57,893,894],{"class":59,"line":270},[57,895,896],{"class":67},"www2.kassianoff.fr\n",[57,898,899,903,906,909,912,914,916,919,921,923,926,928,931],{"class":59,"line":308},[57,900,902],{"class":901},"swJcz","You domains are",[57,904,905],{"class":74}," :",[57,907,908],{"class":74}," [",[57,910,911],{"class":67},"kassianoff.fr",[57,913,729],{"class":74},[57,915,908],{"class":74},[57,917,918],{"class":67},"www.kassianoff.fr",[57,920,729],{"class":74},[57,922,908],{"class":74},[57,924,925],{"class":67},"www2.kassianoff.fr",[57,927,729],{"class":74},[57,929,930],{"class":578},", ",[57,932,933],{"class":67},"Do you want to continue ? [Y\u002FN]\n",[57,935,936],{"class":59,"line":331},[57,937,939],{"class":938},"sfNiH","Y\n",[57,941,942],{"class":59,"line":363},[57,943,944],{"class":67},"Cloning into 'letsencrypt'...\n",[57,946,947,950,953,956,958],{"class":59,"line":368},[57,948,949],{"class":901},"remote",[57,951,952],{"class":74},":",[57,954,955],{"class":901}," Counting objects",[57,957,952],{"class":74},[57,959,960],{"class":67}," 34827, done.\n",[57,962,963,965,967],{"class":59,"line":389},[57,964,949],{"class":901},[57,966,952],{"class":74},[57,968,969],{"class":67}," Total 34827 (delta 0), reused 0 (delta 0), pack-reused 34827\n",[57,971,973,976,978],{"class":59,"line":972},13,[57,974,975],{"class":901},"Receiving objects",[57,977,952],{"class":74},[57,979,980],{"class":67}," 100% (34827\u002F34827), 9.30 MiB | 6.53 MiB\u002Fs, done.\n",[57,982,984,987,989],{"class":59,"line":983},14,[57,985,986],{"class":901},"Resolving deltas",[57,988,952],{"class":74},[57,990,991],{"class":67}," 100% (24741\u002F24741), done.\n",[57,993,995,997,1000,1003,1006,1008],{"class":59,"line":994},15,[57,996,723],{"class":74},[57,998,999],{"class":67}," ok",[57,1001,1002],{"class":74}," ]",[57,1004,1005],{"class":901}," Stopping reverse proxy and load balancer",[57,1007,952],{"class":74},[57,1009,1010],{"class":67}," pound.\n",[57,1012,1014],{"class":59,"line":1013},16,[57,1015,1016],{"class":67},"Your email contact for the certificat (ex:postmaster@kassianoff.fr)\n",[57,1018,1020],{"class":59,"line":1019},17,[57,1021,1022],{"class":67},"postmaster@kassianoff.fr\n",[57,1024,1026],{"class":59,"line":1025},18,[57,1027,1028],{"class":67},"Checking for new version...\n",[57,1030,1032],{"class":59,"line":1031},19,[57,1033,1034],{"class":67},"Requesting root privileges to run letsencrypt...\n",[57,1036,1038],{"class":59,"line":1037},20,[57,1039,1040],{"class":67},"   \u002Froot\u002F.local\u002Fshare\u002Fletsencrypt\u002Fbin\u002Fletsencrypt --text --email postmaster@kassianoff.fr --domains kassianoff.fr -d www.kassianoff.fr -d www2.kassianoff.fr --agree-tos --standalone certonly --rsa-key-size 4096\n",[57,1042,1044],{"class":59,"line":1043},21,[57,1045,211],{"emptyLinePlaceholder":210},[57,1047,1049,1052],{"class":59,"line":1048},22,[57,1050,1051],{"class":901},"IMPORTANT NOTES",[57,1053,1054],{"class":74},":\n",[57,1056,1058,1060],{"class":59,"line":1057},23,[57,1059,226],{"class":74},[57,1061,1062],{"class":67}," Congratulations! Your certificate and chain have been saved at\n",[57,1064,1066],{"class":59,"line":1065},24,[57,1067,1068],{"class":67},"   \u002Fetc\u002Fletsencrypt\u002Flive\u002Fkassianoff.fr\u002Ffullchain.pem. Your\n",[57,1070,1072],{"class":59,"line":1071},25,[57,1073,1074],{"class":67},"   cert will expire on 2016-07-24. To obtain a new version of the\n",[57,1076,1078],{"class":59,"line":1077},26,[57,1079,1080],{"class":67},"   certificate in the future, simply run Let's Encrypt again.\n",[57,1082,1084,1086,1089],{"class":59,"line":1083},27,[57,1085,226],{"class":74},[57,1087,1088],{"class":901}," If you like Let's Encrypt, please consider supporting our work by",[57,1090,1054],{"class":74},[57,1092,1094],{"class":59,"line":1093},28,[57,1095,211],{"emptyLinePlaceholder":210},[57,1097,1099,1102,1104],{"class":59,"line":1098},29,[57,1100,1101],{"class":901},"   Donating to ISRG \u002F Let's Encrypt",[57,1103,952],{"class":74},[57,1105,1106],{"class":67},"   https:\u002F\u002Fletsencrypt.org\u002Fdonate\n",[57,1108,1110,1113,1115],{"class":59,"line":1109},30,[57,1111,1112],{"class":901},"   Donating to EFF",[57,1114,952],{"class":74},[57,1116,1117],{"class":67},"                    https:\u002F\u002Feff.org\u002Fdonate-le\n",[57,1119,1121],{"class":59,"line":1120},31,[57,1122,211],{"emptyLinePlaceholder":210},[57,1124,1126,1128,1130,1132,1135,1137],{"class":59,"line":1125},32,[57,1127,723],{"class":74},[57,1129,726],{"class":137},[57,1131,729],{"class":74},[57,1133,1134],{"class":901}," Starting reverse proxy and load balancer",[57,1136,952],{"class":74},[57,1138,1139],{"class":67}," poundstarting...\n",[57,1141,1143],{"class":59,"line":1142},33,[57,1144,1145],{"class":67},". ok\n",[15,1147,1148,1149,1152],{},"Bien que mon script soit encore jeune et rencontre quelques bugs, je souhaite améliorer mon code !",[1150,1151],"br",{},"\nN’hésitez pas à me faire part de vos commentaires.J’espère que cet article vous aura permis de sécuriser vos domaines.",[10,1154,1156],{"id":1155},"conclusion","Conclusion",[15,1158,1159],{},"Cet article a montré comment générer un certificat SSL gratuit et valide avec Let’s Encrypt, en l’intégrant au reverse proxy Pound, ainsi qu’un script personnel facilitant la création et le renouvellement des certificats tous les 90 jours. Cette solution open-source rend le chiffrement SSL accessible à tous, sans coût de licence, ce qui ne laisse plus d’excuse pour ne pas sécuriser ses domaines. Le script présenté reste perfectible et pourra encore évoluer pour corriger quelques bugs restants.",[1161,1162,1163],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":52,"searchDepth":185,"depth":185,"links":1165},[1166,1167,1168,1169,1170],{"id":12,"depth":185,"text":13},{"id":20,"depth":185,"text":5},{"id":41,"depth":185,"text":42},{"id":500,"depth":185,"text":501},{"id":1155,"depth":185,"text":1156},null,"\u002Fimages\u002Fblog\u002Flets-encrypt-certificat-gratuit-valide\u002F021b61a5a9.jpg","2016-04-25","Dans une démarche de protection de vos domaines optez pour Let's encrypt ! Découvrez comment l'utiliser simplement pour générer vos certificats.","md",{},"\u002Fblog\u002Flets-encrypt-certificat-gratuit-valide",{"title":5,"description":1174},"lets-encrypt-certificat-gratuit-valide","blog\u002Flets-encrypt-certificat-gratuit-valide","CGlUI0jUDrGEhDo9PnqhMWglCo8pcljU7-P9UTBT_3M",[1183,1189,1195,1201,1210,1216,1222,1228],{"title":1184,"path":1185,"stem":1186,"date":1187,"cover":1188,"categories":1171,"children":-1},"Contrôlez l’utilisation de vos données personnelles","\u002Fblog\u002Fcertificat-controlez-utilisation-vos-donnees-personnelles","blog\u002Fcertificat-controlez-utilisation-vos-donnees-personnelles","2016-05-02","\u002Fimages\u002Fblog\u002Fcertificat-controlez-utilisation-vos-donnees-personnelles\u002Faa606ad523.png",{"title":1190,"path":1191,"stem":1192,"date":1193,"cover":1194,"categories":1171,"children":-1},"Comprendre le Web","\u002Fblog\u002Fcertificat-comprendre-web","blog\u002Fcertificat-comprendre-web","2016-04-30","\u002Fimages\u002Fblog\u002Fcertificat-comprendre-web\u002F9e7020c860.jpg",{"title":1196,"path":1197,"stem":1198,"date":1199,"cover":1200,"categories":1171,"children":-1},"Surfez incognito sur Internet avec le réseau Tor","\u002Fblog\u002Fcertificat-surfez-incognito-sur-internet-avec-reseau-tor","blog\u002Fcertificat-surfez-incognito-sur-internet-avec-reseau-tor","2016-04-28","\u002Fimages\u002Fblog\u002Fcertificat-surfez-incognito-sur-internet-avec-reseau-tor\u002F647d68fc59.png",{"title":1202,"path":1203,"stem":1204,"date":1205,"cover":1206,"categories":1207,"children":-1},"Gérer son code avec Git et GitHub","\u002Fblog\u002Fcertificat-gerer-son-code-avec-git-github","blog\u002Fcertificat-gerer-son-code-avec-git-github","2016-04-26","\u002Fimages\u002Fblog\u002Fcertificat-gerer-son-code-avec-git-github\u002F00706bb178.png",[1208,1209],"Certifications","Code",{"title":1211,"path":1212,"stem":1213,"date":1214,"cover":1215,"categories":1171,"children":-1},"Apprenez à naviguer en sécurité sur Internet","\u002Fblog\u002Fcertificat-apprenez-naviguer-securite-sur-internet","blog\u002Fcertificat-apprenez-naviguer-securite-sur-internet","2016-04-08","\u002Fimages\u002Fblog\u002Fcertificat-apprenez-naviguer-securite-sur-internet\u002F29fef6bda4.png",{"title":1217,"path":1218,"stem":1219,"date":1220,"cover":1221,"categories":1171,"children":-1},"Protégez l’ensemble de vos données sur votre ordinateur","\u002Fblog\u002Fcertificat-protegez-ensemble-vos-donnees-sur-votre-ordinateur","blog\u002Fcertificat-protegez-ensemble-vos-donnees-sur-votre-ordinateur","2016-04-06","\u002Fimages\u002Fblog\u002Fcertificat-protegez-ensemble-vos-donnees-sur-votre-ordinateur\u002Fb4c7d4ec05.png",{"title":1223,"path":1224,"stem":1225,"date":1226,"cover":1227,"categories":1171,"children":-1},"Introduction aux conteneurs","\u002Fblog\u002Fcertificat-introduction-aux-conteneurs","blog\u002Fcertificat-introduction-aux-conteneurs","2016-04-03","\u002Fimages\u002Fblog\u002Fcertificat-introduction-aux-conteneurs\u002Fb36ecfb03e.png",{"title":1229,"path":1230,"stem":1231,"date":1232,"cover":1233,"categories":1234,"children":-1},"Installation d’un certificat Gandi sous Zimbra","\u002Fblog\u002Finstallation-certificat-gandi-sous-zimbra","blog\u002Finstallation-certificat-gandi-sous-zimbra","2016-03-23","\u002Fimages\u002Fblog\u002Finstallation-certificat-gandi-sous-zimbra\u002F832221cad6.png",[1235],"Linux",[],1786644876414]