letsencrypt Cisco ASA

Потребуется web сервер если хотете пройти валидацию FQDN посредством файла,

или доступ к DNS чтоб создать запись в DNS. 

Рассмотрим всеже файл. 

И так, если у вас есть docker host то можно создать docker-compose.yml подобно такому (пробелы если надо поправьте): 

 

services:
  apache:
    image: httpd:2.4
    ports:
      - 80:80
    volumes:
      - ./src:/usr/local/apache2/htdocs

в директории с этим файлом создать директорию src в ней создать директории .well-known/acme-challenge 

На вашей ASA нужно создать статический NAT с 80 порта внешнего интерфейса на 80 порт вашего сервера, например так:

object network DOCKER1_SRV
 host 192.168.1.46

object service WWW
 service tcp destination eq www

nat (outside,inside) source static any any destination static interface DOCKER1_SRV service WWW WWW

далее нужен ACL на внешнем интерфейсе (если его еще нет) разрешаем всем доступ на 80 порт нашего сервера (напоминаю что адрес указываем после трансляции) например: 

access-list OUTSIDE_IN extended permit tcp any object DOCKER1_SRV eq www

теперь вешаем этот ACL на интерфейс:

access-group OUTSIDE_IN in interface outside 

 Теперь на Linux хосте ставим:

yum -y install epel-release

yum install certbot

Теперь выполняем certbot с параметрами:

certbot certonly --manual -d <ваш FQDN>  --agree-tos --manual-public-ip-logging-ok --preferred-challenges http --server https://acme-v02.api.letsencrypt.org/directory --register-unsafely-without-email --rsa-key-size 2048

Получаем текстовое сообщение с указанием файл с каким именем и с каким содержимым должен быть доступен по адресу http://<ваш FQDN>/.well-known/acme-challenge/<имя файла>

Пример вывода:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Create a file containing just this data:

M6uriQ6o1i-8QPiH2FWgpVHO4eSaAcxxxxxxxxxntw.PH5vdcBJk6xxxxxxxxxxxxxx0po-A6vWfg

And make it available on your web server at this URL:

http://test.doubletest.net/.well-known/acme-challenge/M6uriQ6o1i-8Qxxxxxx2FWgpxxxxxxxxxxpsMKm33untw

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

НЕ НАЖИМАЕМ Enter - создаем файл с содержимым в созданных заранее (выше описанных папках)

Запускаем httpd - docker-compose up

Проверяем из браузера (не из внутренней сети) что файл доступен и вот теперь нажимаем в консоли Linux ENTER

Если все успешно получаем сообщение что файл с сертификатом и ключем лежит в какой то директории:

 Starting new HTTPS connection (1): supporters.eff.org

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/test.doubletest.net/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/test.doubletest.net/privkey.pem

 Теперь нам нудно собрать из закрытого ключа и сертификата (можно еще и с промежуточным сертификатом) PFX а потом его еще и в формате BASE64:

 openssl pkcs12 -export -out newcert.pfx -inkey privkey.pem -in cert.pem -certfile chain.pem -passout pass:12345

openssl base64 -in newcert.pfx -out newcert.pem 

Теперь копируем содержимое файла newcert.pem

На ASA импортируем ключ и сертификат (trustpoint создавать заранее не надо)

crypto ca import LE2022 pkcs12 12345

Вставляем скопированное

В новой строке вводим quit

теперь вешаем trustpoint на внешний интерфейс:

ssl trust-point LE2022 outside

 Правило NAT можно сделать inactive до следующего раза, запись ACL можно удалить потом добавлять если надо.

 

Комментарии

Популярные сообщения из этого блога

Двухфакторная аутентификация на VPN шлюзах для всех

Статические маршруты и петли маршрутизации

Собираем в L2 домен пару портов в BDI и порты на Switch карте на Cisco 4331