---
# System prepended metadata

title: Generate SSL certificate via Lietencrypt
tags: [DevOps]

---

# Generate SSL certificate via Lietencrypt

###### tags: `DevOps`

#### Генерируем сертификат
Первым делом запускаем certbot в докере
```bash=
docker run -it --rm -v /home/letsencrypt/certs:/etc/letsencrypt -v /home/letsencrypt/data:/data/letsencrypt certbot/certbot certonly --manual --preferred-challenges=dns --email vova.lunev@devhouse.pro --server https://acme-v02.api.letsencrypt.org/directory --agree-tos -d *.example.com
```
Далее нас просят добавить DNS запись типа TXT
```bash=
Please deploy a DNS TXT record under the name
_acme-challenge.example.com with the following value:

Ofc6EQd8llN1PUxhbzgC9mt81bLYEzENZQZRInoLLfo

Before continuing, verify the record is deployed.
```
> После того как мы добавили в DNS ждем примерно 15 минут что бы Letsencrypt узнал об этом.

Если все прошло успешно, то вы увидите это
```bash=
IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your certificate will expire on 2021-10-25. To obtain a new or
   tweaked version of this certificate in the future, simply run
   certbot again. To non-interactively renew *all* of your
   certificates, run "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le
```
> Полученные сертификаты можно использовать. По истечению срока годности придет уведомление на указанную почту. После этого можно будет перевыпустить сертификат, но только с той же машины с которой создавали, и на машине должен быть старый сертификат

#### Генерируем PFX из полученных сертификатов
```bash=
openssl pkcs12 -export -out certificate.pfx -inkey privkey.pem -in cert.pem -certfile fullchain.pem
```
> Следуя инструкции создаем сертификат. Советую сохранить где-то пароль от него.
Полученный сертификат можно загружать например на Azure.

#### Загрузка SSL сертификата в Kubernetes
Получаем нужный нам формат
```bash=
cat cert.pem fullchain.pem > cert.crt
```
Загружаем в куб
```bash=
kubectl create secret tls bizbot-ssl-cert --cert=ssl-bundle.crt --key=private.key -n prod
```