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

 

Комментарии

Популярные сообщения