WP Encrypt

Description

WP Encrypt is an easy-to-use client for the new Let’s Encrypt service which provides free SSL certificates for everyone. No reason to have an unprotected WordPress site any longer! [1]

Using the plugin, you can quickly acquire a new certificate for your site. Once you have registered and received a certificate, you can switch your site to HTTPS. [2]

The Let’s Encrypt service only provides certificates that are valid for 90 days. However, you can always renew them – no limitations there. And with this plugin you don’t even need to worry about that, the plugin will automatically renew existing certificates before they expire (as long as you want it to).

The plugin is fully compatible with Multisite and Multinetwork. In a Multisite it will take care of generating the certificate for all sites in the network. In a Multinetwork you will additionally have the option to generate the certificate for all sites in all networks. [3]

Requirements

This plugin requires you to run at least PHP 5.3 on your server. You also need to have the cURL and OpenSSL extensions active. Please check with your hosting provider if you’re not sure whether your server meets these requirements or how to set them up. You also need to be able to adjust the server configuration to use the certificate the plugin obtains.

If you don’t have permissions to modify the server configuration, you might be able to still use the certificates if your host provides an interface to upload your own SSL certificates. In that case you can simply upload the generated certificate files there.

Notes

[1] Almost no reason. You still need to be able to access and modify your server configuration to set up SSL and use the certificate the plugin obtained for you.

[2] The plugin does not automatically change your site to HTTPS. It obtains and the SSL certificate, but you still need to adjust your server configuration and change your site’s URL setting to use HTTPS. As a guide, you can follow this WP Beginner tutorial for example.

[3] The plugin currently generates the certificate for the entire setup in one step. Therefore it is most likely to fail on large setups with a huge amount of sites. This is the first thing on the list to be improved in a later version though.

Additional Credit

The core of this plugin is mostly a rewrite of analogic/lescript, a PHP client for Let’s Encrypt. The plugin’s implementation includes fixes to work properly in WordPress, plus it provides some enhancements over the original client, like a reusable class hierarchy.

Screenshots

  • Configuring the plugin
  • Registering an account with Let's Encrypt
  • Generating a certificate with Let's Encrypt

Installation

As a regular plugin

  1. Upload the entire wp-encrypt folder to the /wp-content/plugins/ directory or download it through the WordPress backend.
  2. Activate the plugin through the ‘Plugins’ menu in WordPress (in a Multisite it can only be network-activated).

As a must-use plugin

If you don’t know what a must-use plugin is, you might wanna read its introduction in the WordPress Codex – don’t worry, that’s nothing purely for developers.

  1. Upload the entire wp-encrypt folder to the /wp-content/mu-plugins/ directory (create the directory if it doesn’t exist).
  2. Move the file /wp-content/mu-plugins/wp-encrypt/wp-encrypt.php out of its directory to /wp-content/mu-plugins/wp-encrypt.php.

Note that, while must-use plugins have the advantage that they cannot be disabled from the admin area, they cannot be updated through WordPress, so you’re recommended to keep them up to date manually.

FAQ

Installation Instructions

As a regular plugin

  1. Upload the entire wp-encrypt folder to the /wp-content/plugins/ directory or download it through the WordPress backend.
  2. Activate the plugin through the ‘Plugins’ menu in WordPress (in a Multisite it can only be network-activated).

As a must-use plugin

If you don’t know what a must-use plugin is, you might wanna read its introduction in the WordPress Codex – don’t worry, that’s nothing purely for developers.

  1. Upload the entire wp-encrypt folder to the /wp-content/mu-plugins/ directory (create the directory if it doesn’t exist).
  2. Move the file /wp-content/mu-plugins/wp-encrypt/wp-encrypt.php out of its directory to /wp-content/mu-plugins/wp-encrypt.php.

Note that, while must-use plugins have the advantage that they cannot be disabled from the admin area, they cannot be updated through WordPress, so you’re recommended to keep them up to date manually.

How do I use the plugin?

After plugin activation you will find a new admin page in the Settings menu where you can register, generate, renew and revoke certificates for your WordPress site. In a Multisite, this menu is not located in the regular admin, but in the network admin, and it will work for all sites in the network. On the admin page you will find a help tab on top which provides further information on how to get started.

Why can’t I save the certificate?

The problem might be that WordPress is unable to write the certificate and save it on your server. By default WordPress needs to be able to write to the directories ../letsencrypt and .well-known (both paths are relative to the site’s root directory). If WordPress cannot write to these locations, it will show a warning on the plugin’s settings page, and you will be asked to enter your filesystem credentials when necessary. However, note that in this case automatically renewing the certificate is not possible (you will have to do it manually then).

How can I change the location where the keys and certificates are being stored?

To change the directories where the certificates are being stored, please define a constant called WP_ENCRYPT_SSL_CERTIFICATES_DIR_PATH containing the desired path in your wp-config.php. This will override the default location. Note that if you change this after you have already registered a Let’s Encrypt account / generated a certificate, you need to start over with this process.

I have obtained my certificate, but my site is still regular HTTP!

The plugin only acts as a connection between your WordPress site and Let’s Encrypt – it is used to obtain the certificate. WordPress cannot modify your server configuration to use it, that’s why you need to take care of it yourself. However, you will find basic instructions in the plugin. After adjusting your server configuration, you also need to switch your site to HTTPS.

Something seems wrong and I would like to reset. How can I do that?

The plugin allows you to completely reset it. This will delete all certificates and keys created by the plugin. You must not reset the plugin while your server is using any of those files – if you need to reset, first unassign the certificates in your server configuration. Because the reset functionality is a critical area, it is hidden by default. You can enable it by defining a constant WP_ENCRYPT_ENABLE_DANGER_ZONE and set it to true. After having done so, you will see a new section called “Danger Zone” on the settings page.

Where should I submit my support request?

I preferably take support requests as issues on Github, so I would appreciate if you created an issue for your request there. However, if you don’t have an account there and do not want to sign up, you can of course use the wordpress.org support forums as well.

How can I contribute to the plugin?

If you’re a developer and you have some ideas to improve the plugin or to solve a bug, feel free to raise an issue or submit a pull request in the Github repository for the plugin.

You can also contribute to the plugin by translating it. Simply visit translate.wordpress.org to get started.

Reviews

Beware! This plugin is no longer supported.

I installed this plugin and it worked well… until it was time for auto-renewal. I had installed this plugin on 5 different websites and none of them have auto-renewed. I tried to renew one of them manually but got an error. If you go to the support forum, there is a message from this plugin’s creator that he is no longer supporting it. I feel it is irresponsible to keep a plugin out there that no longer works, without even a warning to that effect. Now I’m left with egg on my face in front of my clients and have to scramble to find another solution. Grrrrrrr.

Just crashed the site

Caused nginx to go into a major CPU eating loop, crashing the site.
I had to desactivate it in command line, using wp-cli

I assume it works for many people.
But didn’t work for me and in a pretty bad way.

This Plugin is Great! Thanks Felix!

One suggestion: make more visible the Help top tab, it’s soooo useful but not very much visible, even if is indicated in the instruction.

I have a multisite with multidomains with Let’s Encrypt certificate and this save me a lot of time.

Thanks Felix!

An useful plugin Godaddy shared cpanel

Well getting this dude installed on a Godaddy Shared CPanel host and on multiple word press installs (not multisite) does take some care. I successfully installed the WP Encrypt plugin, and performed the activation and registration. Then I generated the cert using the button without an issue on the primary host site domain. Then I installed the plugin an performed all those steps for a second wordpress website on the same host. No problem.
At this point the there are cert/key files installed on the host which in my case is a Godaddy Shared Cpanel host (linux). I was worried that the plugin would only support one site on the same host, but that is not the case. It writes the certs in separate areas which is awesome.
At this point, u need to use the Godaddy CPanel SSL/TLS manager to implement the keys to each domain. This process went very smoothly using the cpanel file manager in a separate browser window and cut/paste. This part is hopefully a one-time process, but I won’t know until October 2017 when auto renew should kick in. Fingers crossed.

This is, in my opinion, a really important plugin. SSL certs are a complicated topic with lots of variables on various hosting services. Many hosting companies, like Godaddy, are not making it easy to use letsencrypt free SSL certs yet. It’s a huge revenue source for them so I can kinda see why. I believe that there will always be a portion of the world that would rather continue to pay, so hopefully they will come around for the rest of the user force that would rather roll their own. This whole thing in unnecessarily difficult right now, but this plugin does wonders for moving us in the right direction.

Intolerant to anything but the most vanilla WP config

Unless you’re running a totally standard WP and Apache config this is an absolute trial to get working. I can’t recommend this until it is way more tolerant to different set-ups. Also there’s almost no real error reporting so it’s hard to tell why it’s failing.

Read all 31 reviews

Contributors & Developers

“WP Encrypt” is open source software. The following people have contributed to this plugin.

Contributors

“WP Encrypt” has been translated into 2 locales. Thank you to the translators for their contributions.

Translate “WP Encrypt” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

1.0.0-beta.8

  • Added: New action wpenc_account_registered is triggered after successful account registration with Let’s Encrypt
  • Added: New action wpenc_certificate_generated is triggered after successful SSL certificate generation
  • Fixed: plugin now supports using the latest Let’s Encrypt Subscriber Agreement from November 15th, 2017
  • Fixed: Plugin activation notice automatically hides after accessing the admin screen for the first time
  • Fixed: Domains containing more than a single dot without www (such as those ending in .co.uk) are now handled correctly

1.0.0-beta.7

  • Added: New filter wpenc_addon_domains allows filtering the domains to generate the certificate for
  • Enhanced: If an account has already been registered, the plugin will now fetch the details instead of failing
  • Enhanced: Let’s Encrypt API errors are now being printed out for more transparent errors

1.0.0-beta.6

  • Fixed: cURL error 3: malformed does not happen anymore on WordPress 4.6

1.0.0-beta.5

  • Fixed: use new Multisite functions for WordPress 4.6

1.0.0-beta.4

  • Added: a link to the Let’s Encrypt Subscriber Agreement is now displayed in the admin interface
  • Fixed: plugin now supports using the latest Let’s Encrypt Subscriber Agreement from August 1st, 2016

1.0.0-beta.3

  • Added: plugin main class instance can now easily be accessed via a wpenc() function
  • Enhanced: the admin class instance is now publicly accessible through a WPENC\App::admin() method
  • Enhanced: the admin screen and form POST urls are now managed by single dedicated methods respectively and can be filtered
  • Fixed: use wp_remote_get() for challenge self check to be more error-prone

1.0.0-beta.2

  • Added: a reset functionality has been introduced including UI (hidden by default)
  • Enhanced: error messages provide more detail about what exactly went wrong
  • Tweaked: updated the plugin initialization library to be compatible with WordPress 4.6
  • Fixed: fixed an error where the filesystem credentials form was posting to the wrong location

1.0.0-beta.1

  • First official beta