1 заметка с тегом

SSL

Настраиваем HTTPS-сервер на Raspberry Pi

16 декабря 2014, 23:49

Сегодня покажу как установить сертификат для веб сервера nginx от StartSSL.

Первое, что необходимо, это с помощью панели управления на сайте StartSSL создать приватный ключ и сертификат.
У нас появятся 2 файла: ssl.key и ssl.crt
Загружаем эти файлы на наш сервер.

Расшифровываем личный ключ с помощью пароля, который мы вводили при создании ключа, и помещаем его в папку с конфигами nginx командой:

$ openssl rsa -in ssl.key -out /etc/nginx/conf/ssl.key

Защитим свой ключ от посторонних глаз:

$ chmod 600 /etc/nginx/conf/ssl.key

Загрузим Root CA и Class 1 Intermediate Server CA сертивикаты:

$ wget http://www.startssl.com/certs/ca.pem
$ wget http://www.startssl.com/certs/sub.class1.server.ca.pem

Создадим единый сертификат из сертификатов которые мы получили и помещаем его в папку с конфигами nginx:

$ cat ssl.crt sub.class1.server.ca.pem ca.pem > /etc/nginx/conf/ssl-unified.crt

Добавляем следующие недостающие строчки в конфиг nginx:

$ nano /etc/nginx/sites-available/default
server {
        listen 443 ssl;
        .....

        # SSL
        ssl_certificate /etc/nginx/conf/ssl-unified.crt;
        ssl_certificate_key /etc/nginx/conf/ssl.key;
        ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers  "RC4:HIGH:!aNULL:!MD5:!kEDH";
        add_header Strict-Transport-Security 'max-age=604800';
        .....
        location ~ \.php$ {
                .....
                fastcgi_param HTTPS on; # Для php-fpm
                include fastcgi_params;
        }
}

ssl_certificate и ssl_certificate_key указывают на файл сертфиката и файл приватного ключа для него.
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 Указывает поддерживаемые протоколы.
ssl_ciphers «RC4:HIGH:!aNULL:!MD5:!kEDH» Указывает используемые шифры.
add_header Strict-Transport-Security 'max-age=604800' Strict-Transport-Secutiry — заголовок, указывающий браузеру на то, что сайт доступен только по https.

Сохраняем конфигурационный файл и перезагружаем nginx:

$ /etc/init.d/nginx reload

Проверяем в браузере доступность вашего сайта по https протоколу, если все сделали правильно, до сайт должен загрузиться.
После этого можно проверить на уязвимости с помощью онлайн сервиса.
В моем случае получились следующие показатели:

После показателей появятся рекомендации по улучшению надежности.

nginx   raspberry pi   SSL