You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

6.9 KiB

Сводка утилит для создания сертификатов и управление ими в инфраструктуре центра сертификации

В данной статье представлены краткое описание и примеры использования нескольких полезных утилит, которые помогают автоматизировать процесс создания сертификатов и управления ими в инфраструктуре центра сертификации.

Утилита prepare.sh

Описание:

Скрипт автоматизирует процесс создания инфраструктуры центра сертификации (ЦС), включая создание директорий, генерацию ключей и сертификатов, а также настройку конфигурационных файлов для корневого и промежуточного ЦА.

Примеры использования:

  1. Запуск скрипта с правами суперпользователя:
    sudo bash prepare.sh
    

Утилита make_server_cert.sh

Описание:

Генерирует серверные сертификаты для указанных доменов или IP-адресов. Скрипт создает приватный ключ, запрос на подпись сертификата (CSR) и сам сертификат.

Примеры использования:

  1. Генерация серверного сертификата для домена example1.com и IP-адреса 192.168.3.145:
    bash make_server_cert.sh -t 395 example1.com 192.168.3.145
    

Утилита make_client_cert.sh

Описание:

Скрипт для создания клиентских сертификатов для указанного сервера и клиента. Генерирует приватный ключ, запрос на сертификат (CSR), подписывает его и выводит информацию о сгенерированном сертификате.

Примеры использования:

  1. Генерация клиентского сертификата для домена example1.com и имени пользователя user1@test.com, действующего 365 дней:
    bash make_client_cert.sh -s example1.com -c user1@test.com -d 365
    

Утилита make_server_revoke.sh

Описание:

Позволяет отозвать серверный сертификат для указанного домена или IP-адреса.

Примеры использования:

  1. Отозвать серверный сертификат для домена brepo.ru:
    bash make_server_revoke.sh -n 1 -s brepo.ru
    

Утилита make_client_revoke.sh

Описание:

Позволяет отозвать клиентский сертификат для указанного сервера и клиента.

Примеры использования:

  1. Отозвать клиентский сертификат для домена example1.com и имени пользователя user2@test.com:
    bash make_client_revoke.sh -n 1 -s example1.com -c user2@test.com
    

Утилита make_app_keys.sh

Описание:

Скрипт генерирует беспарольный приватный и публичный ключ с помощью openssl и сохраняет их в указанной директории. Это удобно для создания ключей, которые будут использоваться приложениями без необходимости вводить пароль при каждом использовании.

Примеры использования:

  1. Генерация ключей в директории /etc/ssl/app_keys:
    bash make_app_keys.sh /etc/ssl/app_keys
    
    После выполнения ключи будут доступны как:
    • /etc/ssl/app_keys/caapp.private.key.pem
    • /etc/ssl/app_keys/caapp.public.key.pem

Еще примеры

  1. Подготовка инфраструктуры ЦС и генерация серверного и клиентского сертификатов:

    bash prepare.sh
    bash make_server_cert.sh example1.com 192.168.5.145
    bash make_client_cert.sh -s example1.com -c user1@test.com -d 365
    
  2. Отозвать серверный и клиентский сертификаты (все версии):

    bash make_server_revoke.sh brepo.ru
    bash make_client_revoke.sh -s example1.com -c user2@test.com
    

Эти утилиты и примеры помогут вам автоматизировать процесс создания сертификатов и управления ими в инфраструктуре центра сертификации.

Примеры настройки nginx

Как обеспечить доступ к сайту с помощью сертификатов:

Примкр настройки домена, например с репозиторием пакетов /etc/nginx/conf.d/example1.com.conf:

server {
    listen 8081 ssl;
    server_name example1.com www.example1.com;

    root /var/www/example1.com/html;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    access_log /var/log/nginx/example1.com.access.log;
    error_log /var/log/nginx/example1.com.error.log debug;

    ssl_certificate         /database/ca/intermediate/certs/example1.com.cert.pem;
    ssl_certificate_key     /database/ca/intermediate/private/example1.com.key.pem;
    ssl_client_certificate  /database/ca/intermediate/certs/ca-chain.cert.pem;
    ssl_crl /database/ca/intermediate/crl/ca-full.crl.pem;
    ssl_verify_client       on;

    keepalive_timeout 70;
    fastcgi_param SSL_VERIFIED $ssl_client_verify;
    fastcgi_param SSL_CLIENT_SERIAL $ssl_client_serial;
    fastcgi_param SSL_CLIENT_CERT $ssl_client_cert;
    fastcgi_param SSL_DN $ssl_client_s_dn;
}

Вызов на строне клиента:

curl -k --cert /database/ca/client_certs/example1.com/user2@test.com.cert.pem --key /database/ca/client_certs/example1.com/private/user2@test.com_private.key.pem https://example1.com:8081

Или настройка DNF репозитория для доступа к закрытому репозиторию:

name = test
enabled = 1
sslverify = 0
gpgcheck = 1
baseurl = https://example1.com:8081
sslclientkey=/database/ca/client_certs/example1.com/private/user2@test.com_private.key.pem
sslclientcert=/database/ca/client_certs/example1.com/user2@test.com.cert.pem
sslcacert=/database/ca/intermediate/certs/ca-chain.cert.pem