Главная страница
Навигация по странице:

  • Enter pass phrase for ca.key: Введите пароль для файла ca.key (два раза для подтверждения) и не забывайте его! Verifying - Enter pass phrase for ca.key

  • Enter pass phrase for ca.key

  • SERVERS/oban.aaa.ru/server.crt: OK

  • 4 Краткий отчет о практике (приложение 1). Строки с таким выделением


    Скачать 0.62 Mb.
    НазваниеСтроки с таким выделением
    Дата22.11.2021
    Размер0.62 Mb.
    Формат файлаdoc
    Имя файла4 Краткий отчет о практике (приложение 1).doc
    ТипДокументы
    #278494
    страница3 из 15
    1   2   3   4   5   6   7   8   9   ...   15

    Создание SSL-сертификатов


    Теперь создадим SSL сертификаты для TLS. Лучше всего (хотя и не обязательно) создать вначале свой CA (Certificate Authority), а потом подписать от его имени все сертификаты (нам еще понадобятся сертификаты для dovecot). В этом случае клиентам нужно будет добавить доверие к этому CA, а не каждому сертификату отдельно.

    Создаем CA.

    Создадим папку, в которой будем генерить все сертификаты

    mkdir /CA_clean

    Нам нужно вначале подготовить конфигурационный файл для создания CA

    nano ca.conf

    [req]

    distinguished_name =req_distinguished_name

    x509_extensions = v3_ca

    prompt = no

    [req_distinguished_name]

    C= RU

    ST = Moscow Region

    L = Moscow

    O = AAA Ltd.

    OU = ROOTCA

    CN = aaa.ru

    emailAddress = admin@aaa.ru

    [v3_ca]

    basicConstraints = CA:true

    nsComment = "CA certificate of AAA Ltd."

    nsCertType = sslCA, emailCA

    subjectKeyIdentifier=hash

    authorityKeyIdentifier=keyid:always,issuer:always

    [ usr_cert ]

    nsComment = "Certificate issued by AAA Ltd."

    ;nsBaseUrl = http://ca.aaa.ru/

    ;nsRevocationUrl = http://ca.aaa.ru/crl.crl

    ;issuerAltName = URI:http://ca.aaa.ru/ca.crt

    ;crlDistributionPoints = URI:http://ca.aaa.ru/crl.crl

    Здесь и далее (замените на нужное Вам):

    C = RU (страна)

    ST = Moscow Region (регион)

    L = Moscow (город)

    O = AAA Ltd. (название компании)

    CN = aaa.ru (имя сервера, для которого выдается ключ; в случае CA - имя домена)

    emailAddress = admin@aaa.ru (почтовый адрес администратора)

    (закоментаренные строки нужны только, если Вы действительно хотите иметь более-менее нормальный CA с листами отзыва ключей и т.п., но это выходит за рамки этого how-to)

    Создаем частный ключ ключ CA

    sudo openssl genrsa -des3 -out ca.key 4096

    Enter pass phrase for ca.key:

    Введите пароль для файла ca.key (два раза для подтверждения) и не забывайте его!

    Verifying - Enter pass phrase for ca.key:

    Он будет нужен для подписывания всех ключей (здесь используем sudo т.к. при этом переписывается состояние random_state компьютера)

    Создаем открытый ключ CA. Мы говорим, что ключи нашего CA имеют «срок жизни» 10 лет (-days 3650).

    openssl req -new -x509 -nodes -sha1 -days 3650 -key ca.key -out ca.crt -config ca.conf

    Enter pass phrase for ca.key:

    (вводим выбранный нами на предыдущем шаге пароль закрытого ключа CA)

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

    openssl pkcs12 -export -in ca.cer -inkey ca.key -out ca.pfx

    Создадим директорию, в которой у нас будут лежать все ключи для всех серверов (если мы в дальнейшем будем создавать и подписывать ключи для других серверов; например, захотим, чтобы ключи были разные для smtp.aaa.ru pop3.aaa.ru и imap.aaa.ru) и, соответственно, директории для всех имен серверов (в нашем случае — oban.aaa.ru)

    mkdir SERVERS

    mkdir SERVERS/oban.aaa.ru

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

    nano SERVERS/oban.aaa.ru/openssl.conf

    [ req ]

    default_bits = 2048

    distinguished_name = req_distinguished_name

    prompt = no

    req_extensions = v3_req

    [ req_distinguished_name ]

    C = RU

    ST = Moscow Region

    L = Moscow

    O = AAA Ltd.

    CN = oban.aaa.ru

    emailAddress = admin@aaa.ru

    [ v3_req ]

    basicConstraints = CA:FALSE

    subjectKeyIdentifier = hash

    Теперь сгенерим ключи для нашего сервера (заметьте, что мы опять используем здесь sudo):

    sudo openssl genrsa -passout pass:1234 -des3 -out SERVERS/oban.aaa.ru/server.key.1 2048

    Здесь 1234 — парольная фраза для промежуточного ключа. Она нам нужна только временно, т.к. мы в результате хотим получить ключ без пароля (требование postfix).

    Убираем из ключа парольную фразу:

    openssl rsa -passin pass:1234 -in SERVERS/oban.aaa.ru/server.key.1 -out SERVERS/oban.aaa.ru/server.key

    Генерим запрос на подпись нашего ключа

    openssl req -config SERVERS/oban.aaa.ru/openssl.conf -new -key SERVERS/oban.aaa.ru/server.key -out SERVERS/oban.aaa.ru/server.csr

    и удаляем промежуточный ключ

    rm -f SERVERS/oban.aaa.ru/server.key.1

    Теперь нам нужно подписать наш созданный ключ от имени своего CA

    Сделаем конфигурационный файл для подписи (срок действия подписи 5 лет - 1828 дней):

    nano sign.config

    [ ca ]

    default_ca = CA_own

    [ CA_own ]

    certs = .

    new_certs_dir = ca.db.certs

    database = ca.db.index

    serial = ca.db.serial

    RANDFILE = ca.db.rand

    certificate = ca.crt

    private_key = ca.key

    default_days = 1825

    default_crl_days = 1

    default_md = sha1

    preserve = no

    policy = policy_anything

    x509_extensions = usr_cert

    [ policy_anything ]

    countryName = optional

    stateOrProvinceName = optional

    localityName = optional

    organizationName = optional

    organizationalUnitName = optional

    commonName = supplied

    emailAddress = optional

    [usr_cert]

    basicConstraints = CA:false

    subjectKeyIdentifier = hash

    authorityKeyIdentifier = keyid:always,issuer:always

    и создадим директорию для хранения сертификатов подписей:

    mkdir ca.db.certs

    Для первого подписанного ключа создаем его номер и формируем индексный файл (для остальных - не нужно!)

    echo '01' > ca.db.serial

    cp /dev/null ca.db.index

    и подписываем (обратите внимание, что мы опять используем sudo)

    sudo openssl ca -batch -config sign.config -out SERVERS/oban.aaa.ru/server.crt -infiles SERVERS/oban.aaa.ru/server.csr

    Enter pass phrase for ca.key:

    (введем пароль закрытого ключа CA)

    Проверим подпись (на всякий случай):

    openssl verify -CAfile ca.crt SERVERS/oban.aaa.ru/server.crt

    Мы должны получить

    SERVERS/oban.aaa.ru/server.crt: OK

    Номер ключа и индексный файл автоматически обновились, удалим старые файлы

    rm -f ca.db.serial.old

    rm -rf ca.db.index.old

    Скопируем ключи в директорию /etc/ssl

    sudo cp SERVERS/oban.aaa.ru/server.key /etc/ssl/private/oban.key

    sudo cp SERVERS/oban.aaa.ru/server.crt /etc/ssl/certs/oban.crt

    и сменим права доступа к закрытому ключу

    sudo chmod og= /etc/ssl/private/oban.key

    Теперь установим доверие к новому CA. Для этого создадим папку для него

    sudo mkdir /usr/share/ca-certificates/aaa

    и скопируем туда наш сертификат CA

    sudo cp ca.crt /usr/share/ca-certificates/aaa/

    После этого переконфигурируем наши корневые сертификаты

    sudo dpkg-reconfigure ca-certificates

    (ответим, что мы хотим доверять новым сертификатам и выберем в списке наш новый сертификат для активации)

    Нашим клиентам, которые будут связываться с нашим сервером с использованием шифрования (TLS, SSL) или с нашим веб-сервером по протоколу HTTPS нужно установить доверие к нашему CA. Тем или иным способом передайте им открытый ключ нашего CA - ca.crt.

    Внимание! Никогда никому не передавайте созданные приватные ключи *.key и не делайте их доступными!
    1   2   3   4   5   6   7   8   9   ...   15


    написать администратору сайта