We have some customers that are still using CentOS 5 but require PCI compliance. PCI-DSS 3.1 that was released in April says that TLSv1 is no longer good enough and to be fully compliant folks have to be able to use TLSv1.1 and/or TLSv1.2
CentOS 5's built in OpenSSL can only use up to TLSv1 so we were left with a dilemma, one customer in particular has 200 users on one dedicated server that is running CentOS 5 and a must maintain PCI compliance on it. Because moving 200 Users isn't exactly feasable at this moment we're looking at a stop gap option of simply dropping in OpenSSL 1.0.2a and compiling against it.
Has anyone tried this? This is the method I'm using currently with custombuild 2 on a test machine without any customers on it:
Pull the openSSL code: https://www.openssl.org/source/ (change the link in the wget line obviously with the source version) and compile it.
This installs openSSL in /usr/local/ssl and will not overwrite the openSSL version already on disk so everything else compiled against the built in version of OpenSSL is still good to go.
Now pull and compile curl.
We're disabling LDAP in curl, essentially this will hamper PHP LDAP calls and any LDAP calls within curl so if you require LDAP then you are going to have to compile OpenLDAP and it's requirements (DB4 and all of it's requirements) as well to use the new version of openSSL that we just compiled and is outside the scope of what I'm doing.
Grab the download link from there: http://curl.haxx.se/download.html then compile it...
Edit the custombuild configure script for apache to use the new SSL by editing /usr/local/directadmin/custombuild/configure/ap2/configure.apache and changing
Then the same thing with php: Change /usr/local/directadmin/custombuild/configure/ap2/configure.php___ (php55 is for version 5.5 so use the appropriate version)
Then disable curl within custombuild so we don't overwrite what's there and compile apache and php using custombuild:
And with that you should now be able to use TLS1.2 and PHP curl calls will be able to use TLSv1.2 (for sending credit card info to payment processors gateways). If for some reason it doesn't work, remove the changes made in the configure files, set curl to yes and rebuild curl, apache and php.
==================================
I plan on testing with a customer tomorrow, but figured I'd toss it out there incase anyone else has tried the same method. This is meant to just buy us some time while we move folks over while still maintaining PCI compliance.
CentOS 5's built in OpenSSL can only use up to TLSv1 so we were left with a dilemma, one customer in particular has 200 users on one dedicated server that is running CentOS 5 and a must maintain PCI compliance on it. Because moving 200 Users isn't exactly feasable at this moment we're looking at a stop gap option of simply dropping in OpenSSL 1.0.2a and compiling against it.
Has anyone tried this? This is the method I'm using currently with custombuild 2 on a test machine without any customers on it:
Pull the openSSL code: https://www.openssl.org/source/ (change the link in the wget line obviously with the source version) and compile it.
Code:
mkdir ~/src/
cd ~/src/
wget https://www.openssl.org/source/openssl-1.0.2a.tar.gz
tar -zxvf openssl-*.tar.gz
cd openssl-*
./config -fpic shared && make && make install
echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
ldconfig
This installs openSSL in /usr/local/ssl and will not overwrite the openSSL version already on disk so everything else compiled against the built in version of OpenSSL is still good to go.
Now pull and compile curl.
We're disabling LDAP in curl, essentially this will hamper PHP LDAP calls and any LDAP calls within curl so if you require LDAP then you are going to have to compile OpenLDAP and it's requirements (DB4 and all of it's requirements) as well to use the new version of openSSL that we just compiled and is outside the scope of what I'm doing.
Grab the download link from there: http://curl.haxx.se/download.html then compile it...
Code:
cd /root/src
wget http://curl.haxx.se/download/curl-7.42.1.tar.gz
tar -xzvf curl-*.tar.gz
cd curl-*
./configure --with-ssl=/usr/local/ssl --disable-ldap && make && make install
Edit the custombuild configure script for apache to use the new SSL by editing /usr/local/directadmin/custombuild/configure/ap2/configure.apache and changing
Code:
"--with-ssl=/usr" \
to
"--with-ssl=/usr/local/ssl" \
Then the same thing with php: Change /usr/local/directadmin/custombuild/configure/ap2/configure.php___ (php55 is for version 5.5 so use the appropriate version)
Code:
--with-openssl\
to
--with-openssl=/usr/local/ssl \
Then disable curl within custombuild so we don't overwrite what's there and compile apache and php using custombuild:
Code:
cd /usr/local/directadmin/custombuild/
./build set curl no
./build apache
./build php
And with that you should now be able to use TLS1.2 and PHP curl calls will be able to use TLSv1.2 (for sending credit card info to payment processors gateways). If for some reason it doesn't work, remove the changes made in the configure files, set curl to yes and rebuild curl, apache and php.
==================================
I plan on testing with a customer tomorrow, but figured I'd toss it out there incase anyone else has tried the same method. This is meant to just buy us some time while we move folks over while still maintaining PCI compliance.