Je viens de trouver Let’s Encrypt , tout en cherchant une alternative au fameux StartSSL, pour gérer mes certs DV SSL. Étant donné que les certificates LE sont de courte durée, j’aimerais automatiser le processus de renouvellement.
Je n’ai pas access au shell (juste cPanel), ni au support LE intégré de mon hébergeur, donc Certbot en mode manuel semble être la seule solution.
J’ai remarqué le répertoire /ssl/certs/
cPanel, contenant tous mes certs. Maintenant, je pense à un travail Cron pour exécuter un script PHP qui obtient de nouveaux certs et écrase ceux qui arrivent à expiration, mais je ne suis pas sûr que cela fonctionne, car je devrai faire qu’Apache recharge les certs écrasés. Est-ce possible, en utilisant PHP?
Avarie Letsencrypt dit : Nous ne recommandons pas cette option car cela prend du temps et vous devrez le répéter plusieurs fois par an à mesure que votre certificate expire. Pour la plupart des gens, il est préférable de demander le support Encrypter de votre fournisseur d’hébergement ou de changer de fournisseur s’ils ne prévoient pas de l’implémenter.
Dislaimer 2. Je n’ai pas réellement access à un serveur cPanel, donc je ne peux pas le tester. Il peut y avoir des erreurs. S’il vous plaît faites le moi savoir et je les corrigerai.
$ certbot certonly --manual -d example.com --test-cert --staging
(Remarque: supprimer --test-cert --staging
pour un certificate valide)
Assurez-vous que votre serveur Web affiche le contenu suivant à l’ adresse http://example.com/.well-known/acme-challenge/VnHBr_PVGfhu-jdX0NCKrgAcCeC9A-HVqFjMOUAf24Y avant de continuer:
VnHBr_PVGfhu-jdX0NCKrgAcCeC9A-HVqFjMOUAf24Y.0l4s1uvmfEFHST9EqeW_AnsdrM7GmE0joLEjRGruG-8
Si tout s’est bien passé, vous devriez avoir un nouveau certificate SSL shiny.
/etc/letsencrypt/live/example.com/cert.pem
Note: Je ne vois rien dans les instructions ci-dessus qui mentionnent quoi faire avec la clé privée, mais ce site mentionne un lien “Télécharger une nouvelle clé privée” quelque part. Là où vous voulez, vous voulez y placer votre clé privée.
/etc/letsencrypt/live/example.com/fullchain.pem
) dans le Bloc-notes ou un autre éditeur de texte simple (pas Word). Copiez et collez tout le contenu de ce fichier dans la zone Ca Bundle (CABUNDLE). Une fois les certificates installés, cPanel doit redémarrer / recharger le serveur Web pour que le certificate soit actif.
Adapté d’ ici .
Il y a deux problèmes à résoudre ici. Tout d’abord, comment obtenir le certificate. Et deuxièmement, comment configurer le serveur Web pour l’utiliser. Pour les deux, j’ai deux solutions différentes pour vous.
Disons que vous installez certbot sur votre propre ordinateur. Disons également que vous avez un access SFTP à votre espace Web. Vous pouvez utiliser sshfs pour monter cet espace Web et utiliser certbot pour automatiser l’obtention d’un certificate:
#!/bin/sh domain='example.org' mkdir -p "/tmp/$domain" sshfs "$domain:" "/tmp/$domain" -o nonempty /opt/certbot/certbot-auto certonly --webroot -w "/tmp/$domain/public_html" -d "$domain" # or later: #/opt/certbot/certbot-auto renew umount "/tmp/$domain"
Vous avez maintenant obtenu ou renouvelé le certificate. Vous pouvez utiliser l’API Cpanel pour l’installer sur le serveur:
domain='example.org' ledir="/etc/letsencrypt/live/$domain" cabundle="$ledir/chain.pem" crt="$ledir/cert.pem" key="$ledir/privkey.pem" cpanel_host='cpanel.example.com:2083' cpanel_user='' curl -u "$cpanel_user"\ "$cpanel_host/json-api/cpanel?cpanel_jsonapi_apiversion=2&cpanel_jsonapi_module=SSL&cpanel_jsonapi_func=installssl&cpanel_jsonapi_user=$cpanel_user"\ -d "domain=$domain" --data-urlencode "cabundle@$cabundle" --data-urlencode "crt@$crt" --data-urlencode "key@$key"
Si vous utilisez votre propre ordinateur de bureau, cette solution n’est probablement pas complètement automatisée. J’aime cette solution, car vous n’avez pas besoin de stocker le mot de passe admin pour le compte Cpanel sur le serveur Web. Vous gardez également le contrôle sur le processus d’obtention de certificate et les clés.
Il y a acme.sh et il y a Acme PHP et d’autres qui vous permettent d’obtenir le certificate du serveur. Mon fournisseur d’hébergement me permet d’exécuter des tâches cron afin que je puisse exécuter acme.sh pour obtenir des certificates. Je ne suis pas sûr de pouvoir accéder à l’outil de ligne de commande uapi de uapi
. Sinon, vous pouvez utiliser une application PHP pure avec le support libcurl pour utiliser le même appel API que ci-dessus pour installer le certificate. Cela serait complètement automatisé, mais je ne l’ai pas encore testé.