Вот и пришло время защитить соединение с сайтом посредством HTTPS (аббр. от англ. HyperText Transfer Protocol Secure). Да… дело нужное. Ну тогда - поехали!

Установка ПО mod_ssl и openssl

yum install mod_ssl openssl

Генерация самоподписного сертификата и ключей

# Генерируем приватный ключ
openssl genrsa -out ca.key 1024
# Генерируем запрос на сертификат CSR
openssl req -new -key ca.key -out ca.csr
# Генерируем ключ
openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
# Перемещаем файлы в положенное место
mv ca.crt /etc/ssl/certs
mv ca.key /etc/ssl/private/ca.key
mv ca.csr /etc/ssl/private/ca.csr

HTTPS для Apache

Далее правим конфиги апача (httpd). Открываем конфигурационный файл SSL апача. Например ssl.conf.

SSLCertificateFile /etc/ssl/certs/ca.crt
SSLCertificateKeyFile /etc/ssl/private/ca.key

Теперь в файле виртуальных хостов прописываем наш хост, который будет слушать 443 порт и работать по https

NameVirtualHost *:443
<VirtualHost *:443>
        SSLEngine on
        SSLCertificateFile /etc/ssl/certs/ca.crt
        SSLCertificateKeyFile /etc/ssl/private/ca.key
        <Directory /var/www/vhosts/secret.anart.ru/httpsdocs>
        AllowOverride All
        </Directory>
        DocumentRoot /var/www/secret.anart.ru/public_html
        ServerName secret.anart.ru
</VirtualHost>

HTTPS для Nginx

Пример файл виртуального хоста для NGINX выглядит следующим образом:

server {
    listen				443;
	server_name			secret.anart.ru;
	root				/home/secret.anart.ru/www;
	access_log			/home/secret.anart.ru/access.log;
	error_log			/home/secret.anart.ru/error.log crit;
	index				index.php index.html;
	rewrite_log			on;
    client_max_body_size 10m;
	
	#SSL configuration
	ssl                  on;
	ssl_certificate      /etc/ssl/certs/ca.crt;
	ssl_certificate_key  /etc/ssl/private/ca.key;
	ssl_session_timeout  5m;
	ssl_protocols        TLSv1;
	ssl_ciphers          ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
	
	...
    
	location ~* ^.+\.(jpg|jpeg|gif|css|png|js|ico|bmp|map)$ {
	   access_log		off;
	   expires			10d;
	   break;
	}
	location ~ /\.ht {
		deny			all;
	}
}

Не забываем настроить iptables

[root@projects ~]# iptables -A INPUT -p tcp --dport 443 -j ACCEPT
[root@projects ~]# iptables save
[root@projects ~]# iptables -L -v