Просмотр поста

.
Swank
Сексуальность валенка
Привет, решил показать как получить бесплатно trusted сертификат(ибо насколько я понял ещё не все знают) и рейтинг A+
Показывать я буду все на примере nginx.
Для начала нужно получить trusted сертификат, для этого воспользуемся Let's Encrypt, клонируем Let's Encrypt client
git clone https://github.com/letsencrypt ... crypt

Хочу сразу предупредить, если у вас чистый сервер, установлено только то что нужно вам и вы не хотите ставить python и еще кучу зависимостей для letsencrypt, запускайте в LXC или в чем-то другом.
Теперь собственно установим letsencrypt:
cd letsencrypt
./letsencrypt-auto

Ждём пока он все что нужно установит, когда завершит приступим к генерации сертификата, letsencrypt умеет генерировать готовые конфиги для apache и nginx но я больше доверяю себе, будем генерировать только сертификат, делается это так:
./letsencrypt-auto certonly --webroot -w /path/to/webroot/dir -d domain.name

/path/to/webroot/dir - это путь к корневой директории вашего сайта(там будет создана директория и файлы в ней для проверки того что домен действительно ваш).
domain.name - ваш домен
в итоге чтоб сгенерировать себе сертификат я делаю так:
/letsencrypt-auto certonly --webroot -w /var/www/the-swank.pp.ua/public -d the-swank.pp.ua

После генерации можно перейти по пути /etc/letsencrypt/live/domain.name и увидеть 4 файла(cert.pem, privkey.pem, chain.pem, fullchain.pem)

Теперь приступил к настройке nginx.
Создадим конфиг нашего сайта, где его создавать обьяснять не стану ибо в разных дистрибутивах немного по разному, я думаю вы знаете где у вас конфиги.
Для начала делаем переадресацию с http на https
server {
    listen 80;
    server_name domain.name;
    return 301 https://$host$request_uri;
}


Теперь server блок для https:
server {
    listen 443 ssl;
    server_name domain.name;

    root /var/www/domain.name/public;
    index index.html;

    ssl_stapling_verify on;
    ssl_stapling on;

    # Установка длительности TLS сессии в 3 минуты
    ssl_session_timeout 3m;
    ssl_session_cache shared:SSL:3m;
    ssl_session_tickets off;

    # Использовать только TLS
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    # Различные параметры
    ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384HE-RSA-AES128-GCM-SHA256HE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHAHE-RSA-AES128-SHA256HE-RSA-AES128-SHAHE-RSA-AES256-SHA256HE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHAES-CBC3-SHA:!DSS';
    # Отдавать предпочтение шифрам, заданным на сервере
    ssl_prefer_server_ciphers on;

    # Файл доверенных сертификатов CA
    ssl_trusted_certificate /etc/letsencrypt/live/domain.name/chain.pem;
    # Указание закрытого ключа
    ssl_certificate_key /etc/letsencrypt/live/domain.name/privkey.pem;
    # Задание файла, содержащего сертификаты
    ssl_certificate /etc/letsencrypt/live/domain.name/fullchain.pem;
    # Файл с параметрами Диффи-Хеллмана
    ssl_dhparam /etc/letsencrypt/live/domain.name/dhparam.pem;

    # Передача Strict-Transport-Secutiry заголовка
    add_header Strict-Transport-Security max-age=15768000;

}


Теперь с помощу openssl нужно сгенерировать файл с параметрами Диффи-Хеллмана
openssl dhparam -out /etc/letsencrypt/live/domain.name/dhparam.pem 2048

Тут прийдется подождать, генерируется оно довольно долго
После этого можно сделать service nginx restart и попробовать зайти на свой сайт и/или проверить его на https://www.ssllabs.com
Вот что вышло у меня:
https://www.ssllabs.com/ssltes ... pp.ua
Сертификат действует 90 дней, обновлять его желательно каждые 60 дней, можете поставить на cron