Два способа развернуть HTTPS бесплатно

HTTPS

предисловие

HTTPS (полное название: протокол передачи гипертекста через защищенный уровень сокетов или безопасный протокол передачи гипертекста, безопасный протокол передачи гипертекста) — это защищенный канал HTTP, просто безопасная версия HTTP. Другими словами, уровень SSL добавляется в HTTP, а основой безопасности HTTPS является SSL, поэтому подробное содержание шифрования требует SSL. Это схема URI (схема абстрактного идентификатора) с синтаксисом, аналогичным схеме http:. Для безопасной передачи данных HTTP. URL-адрес https: указывает, что он использует HTTP, но HTTPS имеет порт по умолчанию, отличный от HTTP, и уровень шифрования/аутентификации (между HTTP и TCP). Система была первоначально разработана Netscape и встроена в ее браузер Netscape Navigator для обеспечения аутентификации и зашифрованной связи. В настоящее время он широко используется для чувствительных к безопасности сообщений во всемирной паутине, таких как платежи по транзакциям.

在这里插入图片描述

1. Зачем использовать HTTPS

Протокол HTTP отправляет содержимое в виде открытого текста и не обеспечивает никакого шифрования данных. Если злоумышленник перехватит сообщение о передаче между веб-браузером и веб-сервером, он сможет напрямую прочитать содержащуюся в нем информацию.Поэтому протокол HTTP не подходит для передача некоторых данных.Конфиденциальная информация, такая как номера кредитных карт, пароли и т.д.

Чтобы устранить этот дефект протокола HTTP, необходимо использовать другой протокол: протокол передачи гипертекста Secure Sockets Layer HTTPS. Для безопасности передачи данных HTTPS добавляет протокол SSL к HTTP.SSL использует сертификаты для проверки подлинности сервера и шифрования связи между браузером и сервером.

Протокол HTTPS может предотвратить захват и подделку сетевых данных во время передачи, а также может использоваться для борьбы с захватом оператора связи и размещением рекламы. Кроме того, при посещении веб-сайта, поддерживающего протокол HTTPS, такие браузеры, как Google, будут отображать в адресной строке логотип безопасности, что сделает веб-сайт более безопасным для пользователей и повысит доверие клиентов.

Для развертывания HTTPS необходимо сначала приобрести SSL-сертификат, цена которого колеблется от нескольких тысяч до десятков тысяч юаней в год. Есть также некоторые поставщики услуг, которые предоставляют бесплатные SSL-сертификаты.Вот два способа подать заявку на бесплатный SSL-сертификат и развернуть HTTPS.

2. Зашифруем бесплатный сертификат

Let's Encrypts — общедоступный бесплатный SSL-проект, который постепенно распространяется и используется большинством пользователей, инициирован Mozilla, Cisco, Akamai, IdenTrust, EFF и др. Основная цель — способствовать переходу сайтов с HTTP на HTTPS.Все больше и больше пользователей присоединяются и спонсируют поддержку.

Далее описан процесс установки сертификата Let's encrypt в Ubuntu.

1. Установите certbot (для автоматического обновления сертификатов)

# 添加安装源
sudo add-apt-repository ppa:certbot/certbot
# 更新apt安装源
sudo apt-get update
# 安装
sudo apt-get install python-certbot-apache

2. Установите Lets encrypt

# 安装 letsencrypt
sudo apt-get install letsencrypt
# 生成证书
letsencrypt certonly --agree-tos --email youname@163.com -d www.domain.com

После запуска команды апелляции файлы, связанные с сертификатом, будут созданы в папке /etc/letsencrypt.

3. Настройте nginx

Добавьте файл конфигурации сайта website.conf в папку /etc/nginx/conf.d/ со следующим содержимым (замените www.domain.com вашим фактическим доменным именем):

server {
    listen 80;
    # listen [::]:80;
    server_name www.domain.com; 
  # Redirect all HTTP requests to HTTPS with a 301 Moved Permanently response. 
  return 301 https://$host$request_uri; 
}
server {
    listen 443 ssl http2;
    # listen [::]:443 ssl http2;
    server_name www.domain.com;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
    ssl_certificate /etc/letsencrypt/live/www.domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/www.domain.com/privkey.pem;
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_session_tickets off;

    # Diffie-Hellman parameter for DHE ciphersuites, recommended 2048 bits
    # ssl_dhparam /etc/ssl/certs/dhparam.pem;

    # intermediate configuration. tweak to your needs.
    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-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-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-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-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-SHA:DES-CBC3-SHA:!DSS';
    ssl_prefer_server_ciphers on;

    # HSTS (ngx_http_headers_module is required) (15768000 seconds = 6 months)
    add_header Strict-Transport-Security max-age=15768000;

    # OCSP Stapling ---
    # fetch OCSP records from URL in ssl_certificate and cache them
    ssl_stapling on;
    ssl_stapling_verify on;

    ## verify chain of trust of OCSP response using Root CA and Intermediate certs
    # ssl_trusted_certificate /etc/letsencrypt/live/www.gabin.top/root_ca_cert_plus_intermediates;

    # resolver 8.8.8.8 8.8.4.4 valid=300s;
    # resolver_timeout 5s;
}

4. Перезагрузите конфигурацию nginx

Выполните следующую команду:

nginx -s reload

5. Добавьте запланированную задачу обновления

Сертификат Lets Encrypt по умолчанию действителен в течение трех месяцев и должен регулярно обновляться. Редактирование запланированных задач:

crontab -e

Добавьте запланированные задачи:

# 每天夜里凌晨 2 点续签:
* 2 * * * service nginx stop & letsencrypt renew & service nginx start

3. Бесплатный сертификат Qiniuyun

Многие поставщики облачных услуг, такие как Alibaba Cloud, Tencent Cloud и Qiniu Cloud, предоставляют бесплатные SSL-сертификаты.Большинство из этих сертификатов действительны в течение одного года и должны быть обновлены вручную по истечении срока их действия. Вот пример Qiniuyun.

1. Подать заявку на сертификат

Посетите https://portal.qiniu.com/certificate/apply и выберите покупку бесплатного сертификата:

在这里插入图片描述
После заполнения информации и успешной подачи заявки вы можете просмотреть соответствующие сертификаты в списке сертификатов:
在这里插入图片描述

2. Загрузите сертификат

Нажмите [Подробности] - [Просмотр сертификата] - [Загрузить сертификат], чтобы загрузить файл сертификата:

在这里插入图片描述
Загрузите сертификат на сервер после завершения загрузки.

3. Изменить конфигурацию nginx

Метод установки этого сертификата аналогичен способу Lets encrypt, просто замените путь, по которому находится файл сертификата после загрузки, поэтому я не буду вдаваться в подробности.

在这里插入图片描述


  • Если у вас есть какие-либо вопросы, вы можете подписаться на общедоступную учетную запись WeChat «Сообщество полного стека», чтобы задавать вопросы, а также вы можете получить больше необходимых для веб-мастеров и разработчиков технологий переднего и заднего плана, эксплуатации и обслуживания.

  • 19 юаней США VPS, место для сайта, исходный код сайта: www.xumaoyun.com