10 минут бесплатно HTTPS

внешний интерфейс сервер HTTPS Nginx

title: 10 минут, чтобы открыть весь сайт https дата: 2018-05-25 16:03:31 теги:

  • https
  • ubuntu

После более чем месяца подачи заявок я наконец получил сегодня текстовое сообщение.

Последняя гидрология, грубо записанная как внешнее использованиеgitlab.comИспользуйте gitlab-ci, чтобы включить автоматическое развертывание CI.Первая попытка ci во фронтенде gitlab. Эта статья собирается начать документирование того, как я включил https.

что такое https?

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

Что такое Давайте зашифруем?

При развертывании веб-сайта https требуется сертификат, и сертификат выдается агентством CA.Большинство традиционных агентств CA должны взимать плату за выдачу сертификатов, что не способствует продвижению использования протокола https. Let's Encrypt тоже является ЦС, но этот ЦС бесплатный! ! ! Это означает, что выдача сертификата не требует затрат.

Что такое общесайтовый https, то есть групповой сертификат?

Подстановочный сертификат доменного имени аналогичен концепции разрешения DNS для доменных имен.Подстановочный сертификат означает, что сертификат может содержать подстановочный знак. Подстановочные сертификаты, выданные основным доменным именем, можно использовать во всех поддоменах, таких как .example.com, bbs.example.com, bbs.example.com. 14 марта 2018 года Let’s Encrypt объявила, что ACME v2 официально поддерживает подстановочные сертификаты. Это означает, что пользователи могут бесплатно подать заявку на SSL-сертификат, поддерживающий подстановочные знаки, в Let’s Encrypt. В прошлом для настройки поддоменов также требовалось отдельное приложение сертификата для каждого доменного имени, а это означает, что теперь вы можете напрямую использовать сертификат *.example.com, чтобы разрешить всему сайту реализовать https.

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

начать настройку

Готов к работе

1. 一个顶级域名:peiqixin.com  # 我这里用的是
2. 一台自己的云服务器 # 我这里用的是我的那个小水管,之前在腾讯云撸的羊毛,6年360块钱的服务器,我这里服务器的系统用的是ubuntu

Все следующие операции выполняются на вашем сервере (у меня серверная система ubuntu 16.04), и операции других систем аналогичны.

Добавить разрешение доменного имени блога

Скачать Nginx

Установите нгинкс. Пропустите этот шаг, если он у вас уже установлен.

sudo apt-get update
sudo apt-get install nginx

Если вы не знакомы с основными операциями и настройкой nginx, рекомендуется сначала разобраться с базовой настройкой nginx, например, как запустить веб-сервер, с основными операциями и настройкой nginx (не обязательно).

Скачать клиент certbot

sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-nginx

При установке все пути для входа проделаны.

Получить сертификат Let's Encrypt

cerbot предоставляет конфигурацию nginx, чтобы помочь нам перенастроить нашу предыдущую конфигурацию nginx, чтобы мы могли использовать SSL-сертификат, который мы собираемся получить.

## 我的域名是peiqixin.com。这里要换成你要配置的域名
sudo certbot --server https://acme-v02.api.letsencrypt.org/directory --manual --preferred-challenges dns  --installer nginx -d *.peiqixin.com -d peiqixin.com

Затем это все, чтобы подтвердить выбор, чтобы подтвердить его.

Но, пожалуйста, обратите внимание на этот шаг, пока не продолжайте вводить

Пожалуйста, скопируйте этот токен. Откройте своего провайдера домена, у которого вы ранее купили доменное имя. Добавьте разрешение доменного имени.

выбор записи выборTXTзаполнение записи хоста_acme-challengeЗначение записи заполняется только что сохраненным токеном.

После нажатия кнопки «Сохранить» клиент certbot проверит, правильно ли вы добавили парсер.

Если правильно добавил парсинг. следующий

Which server blocks would you like to modify?
-------------------------------------------------------------------------------
1: File: /etc/nginx/sites-enabled/default
Addresses: [::]:80 default_server, 80 default_server
Names: _
HTTPS: No

...
-------------------------------------------------------------------------------
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 

Вам будет представлен список серверных блоков в конфигурации nginx, чтобы вы могли выбрать, на какой серверный блок развернуть сертификат. В любом случае, я не могу использовать его. Выберите "Отмена" здесь, введите "c" и нажмите "Enter", чтобы продолжить.

следующий

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.

Этот шаг - позволить вам выбрать, перенаправить ли HTTP-трафика к его предложению HTTPS. Поскольку это вся вокзал HTTPS, весь доступ должен принимать HTTPS, выберите 2, введите. Укажите один и тот же список, что и предыдущий этап, введите C, нажмите Enter, чтобы продолжить.

Далее, когда вы увидите абзац ниже, это означает, что вы его настроили.

пожалуйста

/etc/letsencrypt/live/peiqixin.com/fullchain.pem
/etc/letsencrypt/live/peiqixin.com/privkey.pem

Запишите эти 2 адреса

настроить nginx

sudo nginx -t 

Найдите адрес вашего файла конфигурации nginx

sudo mkdir conf.d #创建一个配置nginx的目录,不可能把所有的配置写在一个文件里面,以后也不好维护

Затем добавьте его в модуль http файла конфигурации nginx по умолчанию nginx.conf.

include /etc/nginx/conf.d/*.conf;  #引入所有的配置文件

Создайте файл в папке conf.dindex.conf, создайте основной файл конфигурации, отвечающий за прослушивание порта 80 и пересылку запросов.

server {
    listen 80;
    server_name peiqixin.com www.peiqixin.com blog.peiqixin.com;
    rewrite ^(.*) https://$host permanent;
}

Создайте файл конфигурации https. Создайте каждый файл конфигурации доменного имени для мониторинга порта 443 (можно разделить по доменному имени, а можно записать в файл, я для удобства записал в файл)

 server {
        listen       443;
        server_name  peiqixin.com  www.peiqixin.com;

        ssl on;
        ssl_certificate      /etc/letsencrypt/live/peiqixin.com/fullchain.pem; ## 这个就是你配置certbot最后一步要你记录下来的地址
        ssl_certificate_key  /etc/letsencrypt/live/peiqixin.com/privkey.pem;
        
        ssl_session_cache    shared:SSL:10m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
            root /home/ubuntu/blog;  ##这里我用hexo博客生成器生成的静态html,js,css都放在了这个文件
            index index.html index.htm;
        }
    }
 server {
        listen       443;
        server_name  blog.peiqixin.com;

        ssl on;
        ssl_certificate      /etc/letsencrypt/live/peiqixin.com/fullchain.pem;
        ssl_certificate_key  /etc/letsencrypt/live/peiqixin.com/privkey.pem;
        
        ssl_session_cache    shared:SSL:10m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
            root /home/ubuntu/blog;
            index index.html index.htm;
        }
    }

Выйти из сохранения. Проверьте, нет ли синтаксической ошибки в конфигурации nginx.

sudo nginx -t

перезапустить nginx

доступblog.peiqixin.com, ты увидишь

вернутьсяpeiqixin.com

Оба автоматически переходят с http на https.

Далее я хочу добавитьapi.peiqixin.comИмя домена https. Повторите первый и последний шаги выше, тогда вы можетеapi.peiqixin.comРядом с доменным именем есть маленький зеленый замок.

Обновить сертификат

Поскольку этот https-сертификат имеет срок действия 3 месяца, он почти приближается к сроку 3 месяца,letsencryptВам будет отправлено электронное письмо с сообщением о том, что срок действия вашего сертификата истекает. На этом этапе вы можете перепланировать сертификат самостоятельно. (Вы также можете написать временной сценарий, но это не тема этой статьи, и я его не писал)

certbot renew
// 上面的指令我跑不成功,就换成下面的这条,等于说是重新的申请下证书,不用改配置,30秒就选择完了
// sudo certbot --force-renew  

использованная литература

  1. официальный сайт certbot
  2. how-to-deploy-wildcard-ssl-certificates-using-lets-encrypt
  3. Nginx настроить многодоменный http на https