Last active
February 21, 2022 12:03
-
-
Save gtitov/23e1b09c06e45bea66943b39c0c16eff to your computer and use it in GitHub Desktop.
Revisions
-
gtitov revised this gist
Feb 21, 2022 . 1 changed file with 2 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -85,6 +85,8 @@ curl https://get.acme.sh | sh -s [email protected] > В конфигурационном файле сервера данные должны отдаваться через указанную в запросе ниже папку > У пользователя, который запрашивает сертификат, должны быть права на запись в папку! `sudo chown -R user:user /var/www/example.ru/html && sudo chmod -R g+rw /var/www/example.ru/html` ```bash acme.sh --issue -d example.ru -d www.example.ru -w /var/www/example.ru/html ``` -
gtitov revised this gist
Oct 19, 2021 . 1 changed file with 2 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -83,6 +83,8 @@ curl https://get.acme.sh | sh -s [email protected] > Предполагается, что уже работает веб-сервер (например, Apache или nginx) и по 80 порту отдаёт данные, например, из `/var/www/html` > В конфигурационном файле сервера данные должны отдаваться через указанную в запросе ниже папку ```bash acme.sh --issue -d example.ru -d www.example.ru -w /var/www/example.ru/html ``` -
gtitov revised this gist
Sep 1, 2021 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -171,7 +171,7 @@ server { server { listen 443 ssl; listen [::]:443 ssl; ssl_certificate /etc/nginx/ssl/example.ru/example.ru.fullchain; # exactly fullchain! ssl_certificate_key /etc/nginx/ssl/example.ru/example.ru.key; server_name example.ru www.example.ru; -
gtitov revised this gist
Aug 27, 2021 . 1 changed file with 34 additions and 34 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,6 +1,6 @@ # Использование доменного имени и протокола HTTPS Предполагаем, что у нас есть доменное имя `example.ru`, наш email `[email protected]`, имеющий права адиминистратора пользователь `user`. Сертификат может быть подключен только к доменному имени. ## Подключение доменного имени @@ -15,18 +15,18 @@ > Неважно будем ли размещать итоговый сайт именно в этой папке: она нужна для описываемого способа получения сертификата. ```bash sudo mkdir -p /var/www/example.ru/html sudo chown -R user:user /var/www/example.ru/html sudo chmod -R g+rw /var/www/example.ru/html ls -la /var/www/example.ru/html nano /var/www/example.ru/html/index.html ``` Создаём конфигурационный файл nginx для сайта. ```bash sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/example.ru sudo nano /etc/nginx/sites-available/example.ru ``` Его содержание должно быть похоже на то, что приведено ниже @@ -36,12 +36,12 @@ server { listen 80; listen [::]:80; root /var/www/example.ru/html; # Add index.php to the list if you are using PHP index index.html; server_name example.ru www.example.ru; location / { # First attempt to serve request as file, then @@ -55,13 +55,13 @@ server { > Если подключится к сайту не получится, стоит проверить фаервол `sudo ufw status` и убедиться, что нужные порты открыты ```bash sudo ln -s /etc/nginx/sites-available/example.ru /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx sudo systemctl status nginx ``` Проверяем подключение к сайту, переходя по доменному имени в браузере. В данном примере перейти нужно было бы по http://example.ru ## Установка программы для получения сертификата @@ -84,16 +84,16 @@ curl https://get.acme.sh | sh -s [email protected] > Предполагается, что уже работает веб-сервер (например, Apache или nginx) и по 80 порту отдаёт данные, например, из `/var/www/html` ```bash acme.sh --issue -d example.ru -d www.example.ru -w /var/www/example.ru/html ``` Должны получить вот такое окончание ``` [Fri 27 Aug 2021 10:43:21 AM BST] Your cert is in: /root/.acme.sh/example.ru/example.ru.cer [Fri 27 Aug 2021 10:43:21 AM BST] Your cert key is in: /root/.acme.sh/example.ru/example.ru.key [Fri 27 Aug 2021 10:43:21 AM BST] The intermediate CA cert is in: /root/.acme.sh/example.ru/ca.cer [Fri 27 Aug 2021 10:43:21 AM BST] And the full chain certs is there: /root/.acme.sh/example.ru/fullchain.cer ``` @@ -107,14 +107,14 @@ acme.sh --issue -d mydomain.ru -d www.mydomain.ru -w /var/www/mydomain.ru/html ```bash mkdir /etc/nginx/ssl mkdir /etc/nginx/ssl/example.ru sudo chown -R user:user /etc/nginx/ssl/example.ru/ sudo chmod -R g+rw /etc/nginx/ssl/example.ru/ # не уверен насчёт `sudo` в `sudo service nginx force-reload` acme.sh --install-cert -d example.ru -d www.example.ru --key-file /etc/nginx/ssl/example.ru/example.ru.key --fullchain-file /etc/nginx/ssl/example.ru/example.ru.fullchain --cert-file /etc/nginx/ssl/example.ru/example.ru.cer --reloadcmd "sudo service nginx force-reload" ``` Открываем конфигурационный файл `sudo nano /etc/nginx/sites-available/example.ru` и делаем его похожим на это. ``` server { @@ -123,15 +123,15 @@ server { listen 443 ssl; listen [::]:443 ssl; ssl_certificate /etc/nginx/ssl/example.ru/example.ru.cer; ssl_certificate_key /etc/nginx/ssl/example.ru/example.ru.key; root /var/www/example.ru/html; # Add index.php to the list if you are using PHP index index.html; server_name example.ru www.example.ru; location / { # First attempt to serve request as file, then @@ -150,33 +150,33 @@ sudo systemctl status nginx sudo ufw allow 'Nginx Full' ``` Теперь при обращении по доменному имени можно использовать протокол HTTPS. В данном примере перейти нужно было бы по https://example.ru ## Перенаправление HTTP трафика на HTTPS Подробнее про редирект с HTTP на HTTPS [тут](https://serverfault.com/questions/67316/in-nginx-how-can-i-rewrite-all-http-requests-to-https-while-maintaining-sub-dom) HTTP-прокотол теперь можно не использовать для обращения к сайту по доменному имени. Перенаправим запросы по HTTP на HTTPS. Открываем конфигурационный файл `sudo nano /etc/nginx/sites-available/example.ru` и делаем его похожим на это. ``` server { listen 80; listen [::]:80; server_name example.ru www.example.ru; return 301 https://$server_name$request_uri; } server { listen 443 ssl; listen [::]:443 ssl; ssl_certificate /etc/nginx/ssl/example.ru/example.ru.cer; ssl_certificate_key /etc/nginx/ssl/example.ru/example.ru.key; server_name example.ru www.example.ru; root /var/www/example.ru/html; # Add index.php to the list if you are using PHP index index.html; @@ -196,4 +196,4 @@ sudo nginx -t sudo systemctl restart nginx sudo systemctl status nginx ``` Теперь при обращении по доменному имени по протоколу HTTP запрос будет перенаправляться на HTTPS. В данном примере при переходе на http://example.ru открылась бы страница https://example.ru -
gtitov created this gist
Aug 27, 2021 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,199 @@ # Использование доменного имени и протокола HTTPS Предполагаем, что у нас есть доменное имя `mydomain.ru`, наш email `[email protected]`, имеющий права адиминистратора пользователь `user`. Сертификат может быть подключен только к доменному имени. ## Подключение доменного имени Предполагаем, что для доменного имени сделаны A Records, указывающие на IP сервера, на котором мы размещаем сайт. Про работу с доменным именем для nginx можно почитать [тут](https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-16-04) > Обычно для работы с веб используют специального пользователя `www-data`. Про образцовую работу с пользователями можно посмотреть [тут](https://decovar.dev/blog/2021/04/05/acme-sh-instead-of-certbot/) Создаём папку под сайт с доменным именем. Даём пользователю права на полное использование папки, проверяем их присвоение, создаём тестовый `index.html`. > Неважно будем ли размещать итоговый сайт именно в этой папке: она нужна для описываемого способа получения сертификата. ```bash sudo mkdir -p /var/www/mydomain.ru/html sudo chown -R user:user /var/www/mydomain.ru/html sudo chmod -R g+rw /var/www/mydomain.ru/html ls -la /var/www/mydomain.ru/html nano /var/www/mydomain.ru/html/index.html ``` Создаём конфигурационный файл nginx для сайта. ```bash sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/mydomain.ru sudo nano /etc/nginx/sites-available/mydomain.ru ``` Его содержание должно быть похоже на то, что приведено ниже ``` server { listen 80; listen [::]:80; root /var/www/mydomain.ru/html; # Add index.php to the list if you are using PHP index index.html; server_name mydomain.ru www.mydomain.ru; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; } } ``` > Если подключится к сайту не получится, стоит проверить фаервол `sudo ufw status` и убедиться, что нужные порты открыты ```bash sudo ln -s /etc/nginx/sites-available/mydomain.ru /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl restart nginx sudo systemctl status nginx ``` Проверяем подключение к сайту, переходя по доменному имени в браузере. В данном примере перейти нужно было бы по http://mydomain.ru ## Установка программы для получения сертификата Про установку см. [тут](https://github.com/acmesh-official/acme.sh/wiki/How-to-install) Из домашней папки выполнить ```bash curl https://get.acme.sh | sh -s [email protected] ``` Чтобы заработала команда `acme.sh`, надо открыть терминал заново. ## Запрос сертификата Про получение сертификата [тут](https://github.com/acmesh-official/acme.sh/wiki/How-to-issue-a-cert) > Предполагается, что уже работает веб-сервер (например, Apache или nginx) и по 80 порту отдаёт данные, например, из `/var/www/html` ```bash acme.sh --issue -d mydomain.ru -d www.mydomain.ru -w /var/www/mydomain.ru/html ``` Должны получить вот такое окончание ``` [Fri 27 Aug 2021 10:43:21 AM BST] Your cert is in: /root/.acme.sh/mydomain.ru/mydomain.ru.cer [Fri 27 Aug 2021 10:43:21 AM BST] Your cert key is in: /root/.acme.sh/mydomain.ru/mydomain.ru.key [Fri 27 Aug 2021 10:43:21 AM BST] The intermediate CA cert is in: /root/.acme.sh/mydomain.ru/ca.cer [Fri 27 Aug 2021 10:43:21 AM BST] And the full chain certs is there: /root/.acme.sh/mydomain.ru/fullchain.cer ``` ## Установка сертификата на nginx Про установку сертификата на nginx [тут](https://github.com/acmesh-official/acme.sh#3-install-the-cert-to-apachenginx-etc) > Про Apache [тут](https://github.com/acmesh-official/acme.sh/wiki/Deploy-ssl-certs-to-apache-server) Создадим папку для сертификата и переместим его туда ```bash mkdir /etc/nginx/ssl mkdir /etc/nginx/ssl/mydomain.ru sudo chown -R user:user /etc/nginx/ssl/mydomain.ru/ sudo chmod -R g+rw /etc/nginx/ssl/mydomain.ru/ # не уверен насчёт `sudo` в `sudo service nginx force-reload` acme.sh --install-cert -d mydomain.ru -d www.mydomain.ru --key-file /etc/nginx/ssl/mydomain.ru/mydomain.ru.key --fullchain-file /etc/nginx/ssl/mydomain.ru/mydomain.ru.fullchain --cert-file /etc/nginx/ssl/mydomain.ru/mydomain.ru.cer --reloadcmd "sudo service nginx force-reload" ``` Открываем конфигурационный файл `sudo nano /etc/nginx/sites-available/mydomain.ru` и делаем его похожим на это. ``` server { listen 80; listen [::]:80; listen 443 ssl; listen [::]:443 ssl; ssl_certificate /etc/nginx/ssl/mydomain.ru/mydomain.ru.cer; ssl_certificate_key /etc/nginx/ssl/mydomain.ru/mydomain.ru.key; root /var/www/mydomain.ru/html; # Add index.php to the list if you are using PHP index index.html; server_name mydomain.ru www.mydomain.ru; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; } } ``` Проверяем корректность конфигурации. ``` sudo nginx -t sudo systemctl restart nginx sudo systemctl status nginx sudo ufw allow 'Nginx Full' ``` Теперь при обращении по доменному имени можно использовать протокол HTTPS. В данном примере перейти нужно было бы по https://mydomain.ru ## Перенаправление HTTP трафика на HTTPS Подробнее про редирект с HTTP на HTTPS [тут](https://serverfault.com/questions/67316/in-nginx-how-can-i-rewrite-all-http-requests-to-https-while-maintaining-sub-dom) HTTP-прокотол теперь можно не использовать для обращения к сайту по доменному имени. Перенаправим запросы по HTTP на HTTPS. Открываем конфигурационный файл `sudo nano /etc/nginx/sites-available/mydomain.ru` и делаем его похожим на это. ``` server { listen 80; listen [::]:80; server_name mydomain.ru www.mydomain.ru; return 301 https://$server_name$request_uri; } server { listen 443 ssl; listen [::]:443 ssl; ssl_certificate /etc/nginx/ssl/mydomain.ru/mydomain.ru.cer; ssl_certificate_key /etc/nginx/ssl/mydomain.ru/mydomain.ru.key; server_name mydomain.ru www.mydomain.ru; root /var/www/mydomain.ru/html; # Add index.php to the list if you are using PHP index index.html; location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. try_files $uri $uri/ =404; } } ``` Проверяем корректность конфигурации. ``` sudo nginx -t sudo systemctl restart nginx sudo systemctl status nginx ``` Теперь при обращении по доменному имени по протоколу HTTP запрос будет перенаправляться на HTTPS. В данном примере при переходе на http://mydomain.ru открылась бы страница https://mydomain.ru