Let’s Encrypt: How to Upgrade to Python 2.7 in Centos 6

Let’s Encrypt will soon no longer support Python 2.6 due to its security update and the depreciate error prompted when running letsencrypt-auto script.

Here is how to install Python 2.7 in CentOS 6 (can be done on CentOS 7 too) and enable Let’s Encrypt to use Python 2.7 environment.

Install Python 2.7 in Centos

Grab latest Python 2.7 from https://www.python.org/ftp/python, when we write this tutorial, it’s version 2.7.9, it could be different version when you found this tutorial.

We will do a wget for 2.7.9 python installation files.

 # wget https://www.python.org/ftp/python/2.7.9/Python-2.7.9.tar.xz

After file being downloaded let’s un-xz and un-tar it.

# xz -d Python-2.7.9.tar.xz

# tar -xvf Python-2.7.9.tar

Change into the directory and start compile & install Python 2.7 in CentOS 6/7 box

# cd Python-2.7.9

# ./configure --prefix=/usr/local

# make

# make altinstall

Python 2.7 binary will be installed into /usr/local/bin

# cd /usr/local/bin

# ls python2*
python2.7  python2.7-config

Basically the installation of Python 2.7 is done. Next will need to re-configure Let’s Encrypt python environment.

Re-Configure Let’s Encrypt Environment for Python 2.7

The environment files is installed in /root/.local/share/letsencrypt

We will rename the files in /root/.local into other name

# mv /root/.local /root/.oldlocal

Next, go to Let’s Encrypt folder to re-run the install by invoking this command

# cd /opt/letsencrypt

# ./letsencrypt-auto renew
Bootstrapping dependencies for RedHat-based OSes...
yum is /usr/bin/yum
Loaded plugins: fastestmirror, replace
Setting up Install Process
Loading mirror speeds from cached hostfile
 * base: kodeterbuka.beritagar.id
 * epel: epel.mirror.angkasa.id
 * extras: centos.mirror.angkasa.id
 * rpmforge: mirror.smartmedia.net.id
 * updates: centos.mirror.angkasa.id
 * webtatic: us-east.repo.webtatic.com
Package gcc-4.4.7-17.el6.x86_64 already installed and latest version
Package dialog-1.1-9.20080819.1.el6.x86_64 already installed and latest version
Package augeas-libs-1.0.0-10.el6.x86_64 already installed and latest version
Package openssl-1.0.1e-48.el6_8.3.x86_64 already installed and latest version
Package openssl-devel-1.0.1e-48.el6_8.3.x86_64 already installed and latest version
Package libffi-devel-3.0.5-3.2.el6.x86_64 already installed and latest version
Package redhat-rpm-config-9.0.3-51.el6.centos.noarch already installed and latest version
Package ca-certificates-2015.2.6-65.0.1.el6_7.noarch already installed and latest version
Package python-2.6.6-66.el6_8.x86_64 already installed and latest version
Package python-devel-2.6.6-66.el6_8.x86_64 already installed and latest version
Package python-virtualenv-1.10.1-1.el6.noarch already installed and latest version
Package python-tools-2.6.6-66.el6_8.x86_64 already installed and latest version
Package python-pip-7.1.0-1.el6.noarch already installed and latest version
Package 1:mod_ssl-2.2.15-54.el6.centos.x86_64 already installed and latest version
Nothing to do
Creating virtual environment...
Installing Python packages...





Ignore the error, if you do not have any cert created before. To confirm it’s now created Python 2.7 environment, go to the lib folder to take a look.

# cd /root/.local/share/letsencrypt/lib/
# ls
python2.7

Done.

Another question is can you install Python version > 2.7 for Let’s Encrypt? We think it cannot be done, it’s became letsencrypt-auto only search for python2 or python2.7 binary in your environment (/bin /usr/local/bin). As long as you didn’t see the depreciate error like below, Let’s Encrypt should work fine 😉

./letsencrypt-auto renew
/root/.local/share/letsencrypt/lib/python2.6/site-packages/cryptography/__init__.py:26: DeprecationWarning: Python 2.6 is no longer supported by the Python core team, please upgrade your Python. A future version of cryptography will drop support for Python 2.6
  DeprecationWarning