Solution pour l'erreur 400 (bad request) lors d'un renouvellement de certificat Let's Encrypt sous Plesk

Dernièrement, je suis tombé sur un os lors du renouvelement d'un certificat Let's Encrypt d'un site qui tourne sur un serveur avec Plesk.

Il se trouve que le renouvellement était tout simplement impossible à cause d'une erreur 400 Bad Request:

Attempting to renew cert (example.com) from /etc/letsencrypt/renewal/example.com.conf produced an unexpected error: Failed authorization procedure. www.example.com (http-01): urn:ietf:params:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://www.example.com/.well-known/acme-challenge/2VQAX5eA_dSyl1RB5MjfcHr9YinF8T7nw3Z6OxU5Zu4: "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<html><head>\n<title>400 Bad Request</title>\n</head><body>\n<h1>Bad Request</h1", example.com (http-01): urn:ietf:params:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://example.com/.well-known/acme-challenge/e4Y1e16A6e3czI1106dJiz6BMqsKjJxz21XaqvrHLZQ: "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<html><head>\n<title>400 Bad Request</title>\n</head><body>\n<h1>Bad Request</h1". Skipping.

Après avoir passé pas mal de temps à auditer le site, les .htaccess, la configuration du serveur... il se trouve que la solution est très simple - mais encore faut-il le savoir car cela n'est marqué nulle part!

Sous Plesk:

1. rendez-vous dans le workspace du site en question.

2. cliquez sur SSL/TLS certificates.

3. décochez la case Redirect from http to https:

Relancez maintenant le renouvellement du certificat Let's Encrypt. Il devrait maintenant se renouveler sans aucun problème.

HONEYHONEY - Thin Line

HONEYHONEY performing "Thin Line" at Music City Roots live from the Loveless Cafe in 2012

Thin line
Walking a thin line
Staying out late at night

I'm not happy
Feeling low
It's so hard these days to play my cards right

It's about time
To start the show
I got tickets for my friends that want to go

And I wish you'd come down
Just come on by
Oh, I need your easy roll around of a good time

'Cause I want whiskey when I'm sick
And a man when I'm well
But it's nice to have them both sometimes
When I feel like raising hell

So don't try and save me
I'll be just fine
I'm getting used to walking on a thin line

Some days I try hard
To watch my mouth
To say the right things
But the wrong just slip right out

Oh, I ain't no Southern belle
No Georgia peach
I guess all my good graces are too far out of reach

I sleep so deep each night
I'm lying in the bed we made
And when I get you off, babe
Well you know it's give and take

So I don't feel bad
When I get mine
Oh, I'm getting used to walking on a thin line

Sometimes I'm doing things half-ass wrong
Sometimes the words I sing are just some half-ass song
I get lost and I get found
Oh, and I'll be good until I need another round

'Cause I want whiskey when I'm sick
And a man when I'm well
But it's nice to have them both sometimes
When I feel like raising hell

So don't try and save me
I'll be just fine
Oh, I'm getting used to walking on a thin line

No, don't try and save me
I'll be just fine
Oh, I'm getting used to walking on a thin line

Oh, I'm getting used to walking on a thin line

Lister tous les articles publiés sur un blog WordPress avec wp-cli

Lister les URLs de tous les articles publiés

J'ai récemment eu besoin de lister toutes les URLs des articles du site, pour les promouvoir sur les réseaux sociaux. L'un des services que j'utilise, SocialBee, permet de soumettre une liste de 100 URLs à chaque soumission du formulaire.

Il nous faut donc une liste d'adresse de 100 articles publiés, ce qui est très facile à obtenir grâce à wp-cli. Voici la commande que j'ai écrite:

wp post list --field=url --post_status=publish --allow-root --posts_per_page=100 --paged=1

Explications:

  • wp est un alias de wp-cli, installé sur le serveur
  • post indique l'on va interroger les articles
  • list: on va lister!
  • --field=url : on veut le champ URL
  • --post_status=publish : les articles publiés uniquement
  • --allow-root : parce que je suis en root
  • --posts_per_page=100: le nombre d'article à récupérer
  • --paged=1 : le numéro de la pagination de la requête

Il vous suffit ensuite d'incrémenter la valeur de --paged pour passer en revue toutes les pages de la requête, ou alors retirer totalement les arguments --posts_per_page=100 --paged=1 pour obtenir la liste complète des URLs de tous les articles publiés.

Pin It on Pinterest

Spelling error report

The following text will be sent to our editors: