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 можно удалить потом добавлять если надо.
Комментарии
Отправить комментарий