Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deploy Telegram webhooks #29

Open
m1kc opened this issue Oct 2, 2015 · 3 comments
Open

Deploy Telegram webhooks #29

m1kc opened this issue Oct 2, 2015 · 3 comments
Labels

Comments

@m1kc
Copy link
Member

m1kc commented Oct 2, 2015

No description provided.

@m1kc m1kc changed the title Deploy webhooks Deploy Telegram webhooks Oct 5, 2015
@m1kc m1kc added the feature label Oct 30, 2015
@3bl3gamer
Copy link
Member

Let's Encrypt

Автоматически

В теории, должно сработать:

yaourt -S letsencrypt letsencrypt-nginx
sudo letsencrypt

Оно наверно спросит почту, пропишет аккаунт где-то в /etc/letsencrypt/, пропарсит конфиг Nginx'а, что-то ещё... Положит сетрификаты в ту же /etc/letsencrypt/ и добаит их Nginx'у в конфиг. Так не пробовал.

Вручную

  1. Ленсинкрипт позволяет повесить несколько доменов на сертификат через некий SAN (Subject Alternative Name, одно из расширений, не особо вкуривал), но даже для одного домена оно всё равно надо, так что:
cat /etc/ssl/openssl.cnf > openssl.cnf
echo "[SAN]" >> openssl.cnf
echo "subjectAltName=DNS:my.domain.com" >> openssl.cnf
  1. Ключик, Летсинкрипт хочет его именно в DER-формате (хз, надо ли всё это в -subj, по-моему нет):
openssl req \
    -new -newkey rsa:2048 -sha256 -nodes \
    -keyout privkey1.pem -out signreq.der -outform der \
    -subj "/C=RU/ST=SomeState/L=SomeWhere/O=SomeOrg/[email protected]/CN=my.domain.com" \
    -reqexts SAN \
    -config openssl.cnf
  1. Собсна Летсинкрипт. Накой ему тут почта, я не очень понял. Он вроде как должен был в первый раз создать акаунт, папку с настройкой которого я должен был бережно хранить... А я ей несколько раз делал rm -r... Ну ему и так норм:
letsencrypt certonly \
    --logs-dir ./ \
    --authenticator webroot \
    --webroot-map '{"mq.webhop.me":"/path/to/www"}' \
    --server https://acme-v01.api.letsencrypt.org/directory --text \
    --email [email protected] \
    --csr signreq.der

webroot — т.е. он сам проверит домен, положив в www проверочный файл (в www/.well-known/acme-challenge/) и запросив его со своего сервера. Можно и это сделать вручную с помощью --authenticator manual (--webroot-map тогда не нужен).

В папке после этого появляются 0000_cert.pem, 0000_chain.pem, 0001_chain.pem, openssl.cnf, privkey1.pem, signreq.der. Ну и логи.
0001_chain.pem отправляется nginx'у в ssl_certificate, privkey1.pem — в ssl_certificate_key.

Если letsencrypt выдаст что-то вроде An unexpected error occurred: The client sent an unacceptable anti-replay nonce, надо попытаться выполнить ту же команду ещё раз. Обычно на второй-третий раз срабатывает.

@3bl3gamer
Copy link
Member

А они там время зря не теряли, теперь хватило просто

letsencrypt certonly --logs-dir ./ --config-dir ./ --manual -d example.com

, без (1) и (2). Из ./live/example.com/ fullchain.pem отправляется в ssl_certificate, privkey.pem — в ssl_certificate_key. Вроде работает.

--webroot -w /var/www/ никто не отменял, с ним должно быть ещё проще.

@3bl3gamer
Copy link
Member

А вообще, можно проще: сгенерить свой сертификат (https://core.telegram.org/bots/self-signed) и залить его (https://core.telegram.org/bots/api#setwebhook).

При генерации CN=YOURDOMAIN.EXAMPLE в -subj — обязательно.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants