Безопасный https web сервер на Cenos с использованием SSL

Вот и пришло время защитить соединение с сайтом посредством 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