воскресенье, 25 декабря 2016 г.

Подписание сертификатов сервера и клиента

Перевод: Sign server and client certificates
Автор: Джэми Нгуен (Jamie Nguyen)

Подпишем сертификаты при помощи нашего промежуточного удостоверяющего центра. Подписанные сертификаты можно использовать в различных целях, например, для установки безопасных подключений к веб-серверу или аутентификации клиентов, подключающихся к сервису.
Замечание. Шаги, описанные ниже, описаны с точки зрения удостоверяющего центра. Сторонние пользователи, однако, вместо этого могут создавать свои собственные приватные ключи и запросы на подпись сертификата, не предоставляя вам свои собственные приватные ключи. Они предоставят вам их запрос на сертификат, а вы отдадите им обратно подписанный сертификат. В этом случае пропустите команды genrsa и req.
Создание ключа

Наши пары ключей для корневого и промежуточного удостоверяющих центров имеют длину 4096 бит. Сертификаты сервера и клиента обычно истекают через один год, поэтому можно безопасно использовать 2048-битные ключи.
Замечание. Хотя 4096-битные ключи немного более безопасны, чем 2048-битные, они замедляют рукопожатие TLS и значительно увеличивают нагрузку на процессор во время рукопожатия. По этой причине большинство веб-сайтов используют 2048-битные ключи.
Если вы создаёте криптографическую пару ключей для использования веб-сервером (например, Apache), нужно будет вводить этот пароль при каждой перезагрузке веб-сервера. Возможно вы захотите пропустить опцию -aes256, чтобы создать ключ без пароля.
# cd /root/ca
# openssl genrsa -aes256 \
  -out intermediate/private/www.example.com.key.pem 2048
# chmod 400 intermediate/private/www.example.com.key.pem
Создание сертификата

Используйте приватный ключ для создания запроса на подпись сертификата (CSR). Информация из запроса не обязательно должна совпадать с промежуточным удостоверяющим центром. Для сертификатов серверов поле общего имени Common Name должно быть полным доменным именем (например, www.example.com), а для сертификатов пользователей им может быть уникальный идентификатор (например, адрес электронной почты). Отметим, что поле общего имени Common Name не может быть таким же, как у сертификата корневого или промежуточного удостоверяющего центра.
# cd /root/ca
# openssl req -config intermediate/openssl.cnf \
  -key intermediate/private/www.example.com.key.pem \
  -new -sha256 -out intermediate/csr/www.example.com.csr.pem
Enter pass phrase for www.example.com.key.pem: secretpassword            # Введите ключевую фразу для www.example.com.key.pem: секретныйпароль
You are about to be asked to enter information that will be incorporated # У вас будет запрошена информация, которая будет вставлена
into your certificate request.                                           # в ваш запрос сертификата.
-----
Country Name (2 letter code) [XX]:US                                     # Название страны (двухбуквенный код) [XX]:US
State or Province Name []:California                                     # Название штата или провинции []:Калифорния
Locality Name []:Mountain View                                           # Название местности []:Маунтин Вью
Organization Name []:Alice Ltd                                           # Название организации []:ООО Алиса
Organizational Unit Name []:Alice Ltd Web Services                       # Название подразделения []:Веб-сервисы ООО Алиса
Common Name []:www.example.com                                           # Общее имя []:www.example.com
Email Address []:                                                        # Адрес электронной почты []:
Чтобы создать сертификат, воспользуемся промежуточным удостоверяющим центром для подписи запроса на сертификат. Если сертификат будет использоваться на сервере, воспользуемся расширением server_cert. Если сертификат будет использоваться для аутентификации пользователя, воспользуемся расширением usr_cert. Сертификаты обычно выдаются сроком на один год, но удостоверяющие центры обычно для удобства дают несколько дополнительных дней.
# cd /root/ca
# openssl ca -config intermediate/openssl.cnf \
  -extensions server_cert -days 375 -notext -md sha256 \
  -in intermediate/csr/www.example.com.csr.pem \
  -out intermediate/certs/www.example.com.cert.pem
# chmod 444 intermediate/certs/www.example.com.cert.pem
Файл intermediate/index.txt должен содержать строку, ссылающуюся на этот новый сертификат.
V 160420124233Z 1000 unknown ... /CN=www.example.com
Проверка сертификата
# openssl x509 -noout -text \
  -in intermediate/certs/www.example.com.cert.pem
Эмитент - промежуточный удостоверяющий центр. Поле субъекта ссылается на сам сертификат.
Signature Algorithm: sha256WithRSAEncryption                 # Алгоритм подписания: sha256WithRSAEncryption
    Issuer: C=GB, ST=England,                                #     Эмитент: C=GB, ST=Англия,
            O=Alice Ltd, OU=Alice Ltd Certificate Authority, #              O=ООО Алиса, OU=Удостоверяющий центр ООО Алиса,
            CN=Alice Ltd Intermediate CA                     #              CN=Промежуточный удостоверяющий центр ООО Алиса
    Validity                                                 #     Действительность
        Not Before: Apr 11 12:42:33 2015 GMT                 #         Не ранее: 11 апреля 2015 года в 12:42:33 по Гринвичу
        Not After : Apr 20 12:42:33 2016 GMT                 #         Не позднее: 20 апреля 2016 года 12:42:33 по Гринвичу
    Subject: C=US, ST=California,                            #     Субъект: C=US, ST=Калифорния, L=Маунтин Вью,
             O=Alice Ltd, OU=Alice Ltd Web Services,         #              O=ООО Алиса, OU=Веб-сервисы ООО Алиса,
             CN=www.example.com
    Subject Public Key Info:                                 #     Информация публичного ключа субъекта:
        Public Key Algorithm: rsaEncryption                  #         Алгоритм публичного ключа: rsaEncryption
            Public-Key: (4096 bit)                           #             Публичный ключ: (4096 бит)
В выводе также показаны расширения X509v3. При создании сертификата было использовано одно из двух расширений: server_cert или usr_cert. Опции из соответствующего раздела конфигурации будут отражены в выводе.
X509v3 extensions:                                                                                   # Расширения X509v3:
    X509v3 Basic Constraints:                                                                        #     Базовые ограничения X509v3:
        CA:FALSE
    Netscape Cert Type:                                                                              #     Тип сертификата Netscape:
        SSL Server                                                                                   #         SSL-сервер
    Netscape Comment:                                                                                #     Комментарий Netscape
        OpenSSL Generated Server Certificate                                                         #         Сертификат сервера, созданный OpenSSL
    X509v3 Subject Key Identifier:                                                                   #     Идентификатор ключа субъекта X509v3:
        B1:B8:88:48:64:B7:45:52:21:CC:35:37:9E:24:50:EE:AD:58:02:B5
    X509v3 Authority Key Identifier:                                                                 #     Идентификатор ключа подлинности X509v3:
        keyid:69:E8:EC:54:7F:25:23:60:E5:B6:E7:72:61:F1:D4:B9:21:D4:45:E9
        DirName:/C=GB/ST=England/O=Alice Ltd/OU=Alice Ltd Certificate Authority/CN=Alice Ltd Root CA #         ИмяКаталога:/C=GB/ST=Англия/O=ООО Алиса/OU=Удостоверяющий центр ООО Алиса/CN=Корневой удостоверяющий центр ООО Алиса
        serial:10:00

    509v3 Key Usage: critical                                                                        #     Использование ключа X509v3: критичное
        Digital Signature, Key Encipherment                                                          #         Цифровая подпись, ключ шифрования
    X509v3 Extended Key Usage:                                                                       #     Расширенное использование ключа X509v3:
        TLS Web Server Authentication                                                                #         Аутентификация веб-сервера TLS
Воспользуемся ранее созданным файлом цепочки сертификата удостоверяющего центра (ca-chain.cert.pem), чтобы проверить, что этот новый сертификат обладает действительной цепочкой доверия.
# openssl verify -CAfile intermediate/certs/ca-chain.cert.pem \
  intermediate/certs/www.example.com.cert.pem
www.example.com.cert.pem: OK
Установка сертификата

Теперь можно либо установить новый сертификат на сервер, либо передать сертификат клиенту. При установке на серверное приложение (например, Apache), нужно сделать доступными следующие файлы:
  • ca-chain.cert.pem
  • www.example.com.key.pem
  • www.example.com.cert.pem
Если вы подписали запрос на сертификат, полученный со стороны, у вас не будет доступа к приватному ключу, так что обратно вам нужно будет передать только файл цепочки (ca-chain.cert.pem) и сертификат (www.example.com.cert.pem).

воскресенье, 18 декабря 2016 г.

Создание промежуточной пары

Перевод: Create the intermediate pair
Автор: Джэми Нгуен (Jamie Nguyen)

Промежуточный удостоверяющий центр (CA) может подписывать сертификаты от имени корневого удостоверяющего центра. Корневой удостоверяющий центр подписывает промежуточный сертификат, формируя цепочку доверия.

Цель использования промежуточного удостоверяющего центра - повысить безопасность. Корневой ключ может храниться вне компьютеров и использоваться настолько редко, насколько это возможно. Если промежуточный ключ был скомпрометирован, корневой удостоверяющий центр может отозвать промежуточный сертификат и создать новую промежуточную криптографическую пару.

Подготовка каталога

Файлы корневого удостоверяющего центра хранятся в /root/ca. Выберем другой каталог (/root/ca/intermediate) для хранения файлов промежуточного удостоверяющего центра.
# mkdir /root/ca/intermediate
Создадим такую же структуру каталогов, которая используется файлами корневого удостоверяющего центра. Удобно также создать каталог csr для хранения запросов на подпись сертификатов.
# cd /root/ca/intermediate
# mkdir certs crl csr newcerts private
# chmod 700 private
# touch index.txt
# echo 1000 > serial
Добавим файл crlnumber в дерево каталогов промежуточного удостоверяющего центра. crlnumber используется для отслеживания списков отозванных сертификатов.
# echo 1000 > /root/ca/intermediate/crlnumber
Скопируем файл конфигурации промежуточного удостоверяющего центра из Приложения Б в /root/ca/intermediate/openssl.cnf. По сравнению с файлом конфигурации корневого удостоверяющего центра изменилось пять опций:
[CA_default]
dir         = /root/ca/intermediate
private_key = $dir/private/intermediate.key.pem
certificate = $dir/certs/intermediate.cert.pem
crl         = $dir/crl/intermediate.crl.pem
policy      = policy_loose
Создание промежуточного ключа

Создадим промежуточный ключ (intermediate.key.pem). Зашифруем промежуточный ключ 256-битным алгоритмом шифрования AES с использованием стойкого пароля.
# cd /root/ca
# openssl genrsa -aes256 \
  -out intermediate/private/intermediate.key.pem 4096
Enter pass phrase for intermediate.key.pem: secretpassword             # Введите ключевую фразу для intermediate.key.pem: секретныйпароль
Verifying - Enter pass phrase for intermediate.key.pem: secretpassword # Подтверждение - Введите ключевую фразу для intermediate.key.pem: секретныйпароль
# chmod 400 intermediate/private/intermediate.key.pem
Создание промежуточного сертификата

Используйте промежуточный ключ для создания запроса на подпись сертификата (CSR). Детали в целом совпадают со случаем для корневого удостоверяющего центра. Однако, поле общего имени - Common Name, должно быть другим.
Предупреждение! Удостоверьтесь, что вы указали файл конфигурации промежуточного удостоверяющего центра (intermediate/openssl.cnf).
# cd /root/ca
# openssl req -config intermediate/openssl.cnf -new -sha256 \
  -key intermediate/private/intermediate.key.pem \
  -out intermediate/csr/intermediate.csr.pem
Enter pass phrase for intermediate.key.pem: secretpassword               # Введите ключевую фразу для intermediate.key.pem: секретныйпароль
You are about to be asked to enter information that will be incorporated # У вас будет запрошена информация, которая будет вставлена
into your certificate request.                                           # в ваш запрос сертификата.
-----
Country Name (2 letter code) [XX]:GB                                     # Название страны (двухбуквенный код) [XX]:GB
State or Province Name []:England                                        # Название штата или провинции []:Англия
Locality Name []:                                                        # Название местности []:
Organization Name []:Alice Ltd                                           # Название организации []:ООО Алиса
Organizational Unit Name []:Alice Ltd Certificate Authority              # Название подразделения []:Удостоверяющий центр ООО Алиса
Common Name []:Alice Ltd Intermediate CA                                 # Общее имя []:Промежуточный удостоверяющий центр ООО Алиса
Email Address []:                                                        # Адрес электронной почты []:
Для создания промежуточного сертификата используйте корневой удостоверяющий центр с расширением v3_intermediate_ca, чтобы подписать запрос на подпись сертификата промежуточного удостоверяющего центра. Промежуточный сертификат должен быть действительным на более короткий период, чем корневой сертификат. Десять лет - вполне подходящее значение.
Предупреждение! В этот раз укажите файл конфигурации корневого удостоверяющего центра (/root/ca/openssl.cnf).
# cd /root/ca
# openssl ca -config openssl.cnf -extensions v3_intermediate_ca \
  -days 3650 -notext -md sha256 \
  -in intermediate/csr/intermediate.csr.pem \
  -out intermediate/certs/intermediate.cert.pem
Enter pass phrase for ca.key.pem: secretpassword # Введите ключевую фразу для ca.key.pem: секретныйпароль
Sign the certificate? [y/n]: y                   # Подписать сертификат? [д/н]: д
# chmod 444 intermediate/certs/intermediate.cert.pem
В файле index.txt инструмент ca (удостоверяющие центры) из OpenSSL размещает базу данных сертификатов. Не удаляйте этот файл и не редактируйте его вручную. Теперь он должен содержать строку, указывающую на промежуточный сертификат.
V 250408122707Z 1000 unknown ... /CN=Alice Ltd Intermediate CA # V 250408122707Z 1000 неизвестно ... /CN=Промежуточный удостоверяющий центр ООО Алиса
Проверка промежуточного сертификата

Как и в случае корневого сертификата, проверим, что данные промежуточного сертификата верны.
# openssl x509 -noout -text \
  -in intermediate/certs/intermediate.cert.pem
Проверим промежуточный сертификат корневым сертификатом. OK обозначает, что цепочка доверия не повреждена.
# openssl verify -CAfile certs/ca.cert.pem \
  intermediate/certs/intermediate.cert.pem
intermediate.cert.pem: OK
Создание файла цепочки сертификатов

Когда приложение (например, веб-браузер) пытается проверить сертификат, подписанный промежуточным удостоверяющим центром, оно также должно проверить, что промежуточный сертификат подписан корневым сертификатом. Чтобы скомпоновать полную цепочку доверия, создадим цепочку сертификата удостоверяющего центра для передачи приложению.

Чтобы создать цепочку сертификата удостоверяющего центра, соединим вместе последовательно промежуточный и корневой сертификат. Этот файл в дальнейшем будет использоваться для проверки сертификатов, подписанных промежуточным удостоверяющим центром.
# cat intermediate/certs/intermediate.cert.pem \
  certs/ca.cert.pem > intermediate/certs/ca-chain.cert.pem
# chmod 444 intermediate/certs/ca-chain.cert.pem
Замечание. Файл цепочки сертификатов должен включать корневой сертификат, поскольку приложение клиента ещё не знает о нём. Возможно лучшее решение, если вы администрируете локальную сеть - установить корневой сертификат каждому клиенту, который будет подключаться. В этом случае файл цепочки должен содержать только промежуточный сертификат.

воскресенье, 11 декабря 2016 г.

Создание корневой пары

Перевод: Create the root pair
Автор: Джэми Нгуен (Jamie Nguyen)

Работа в качестве удостоверяющего центра (CA) подразумевает использование криптографических пар приватных ключей и публичных сертификатов. Самая первая криптографическая пара, которую мы создадим - это корневая пара. Она состоит из корневого ключа (ca.key.pem) и корневого сертификата (ca.cert.pem). Эта пара образует удостоверение удостоверяющего центра.

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

Замечание. Лучшей практикой считается создание корневой пары в безопасной среде. Лучше всего, если это будет полностью зашифрованный компьютер, постоянно отключенный от Интернета. Лучше даже изъять из него беспроводные карты и залить клеем Ethernet-порты.
Подготовка каталога

Выберем каталог (/root/ca) для хранения всех ключей и сертификатов.
# mkdir /root/ca
Создадим структуру каталогов. Файлы index.txt и serial выступают в роли плоской базы данных для отслеживания подписанных сертификатов.
# cd /root/ca
# mkdir certs crl newcerts private
# chmod 700 private
# touch index.txt
# echo 1000 > serial
Подготовка файла конфигурации

Нужно создать файл конфигурации, который будет использоваться OpenSSL. Скопируем файл конфигурации корневого удостоверяющего центра из Приложения А в файл /root/ca/openssl.cnf.

Раздел [ca] обязателен. Здесь мы сообщаем OpenSSL, что нужно использовать опции из раздела [CA_default].
[ca]
# `man ca`
default_ca = CA_default
Раздел [CA_default] содержит набор значений по умолчанию. Убедитесь, что указан выбранный ранее каталог (/root/ca).
[CA_default]
# Местонахождение каталогов и файлов
dir              = /root/ca
certs            = $dir/certs
crl_dir          = $dir/crl
new_certs_dir    = $dir/newcerts
database         = $dir/index.txt
serial           = $dir/serial
RANDFILE         = $dir/private/.rand

# Корневой ключ и корневой сертификат
private_key      = $dir/private/ca.key.pem
certificate      = $dir/certs/ca.cert.pem

# Настройки списков отозванных сертификатов
crlnumber        = $dir/crlnumber
crl              = $dir/crl/ca.crl.pem
crl_extensions   = crl_ext
default_crl_days = 30

# SHA-1 устарел, поэтому используем вместо него SHA-2
default_md       = sha256

name_opt         = ca_default
cert_opt         = ca_default
default_days     = 375
preserve         = no
policy           = policy_strict
Мы применим строгую политику policy_strict для всех подписей корневого удостоверяющего центра, потому что корневой удостоверяющий центр используется только для создания промежуточных удостоверяющих центров.
[policy_strict]
# Корневой удостоверяющий центр должен подписывать только соответствующие промежуточные сертификаты
# Обратитесь к разделу ФОРМАТ ПОЛИТИКИ из `man ca`
countryName            = match
stateOrProvinceName    = match
organizationName       = match
organizationalUnitName = optional
commonName             = supplied
emailAddress           = optional
Мы применим свободную политику policy_loose для всех подписей промежуточных удостоверяющих центров, потому что промежуточные удостоверяющие центры подписывают сертификаты серверов и клиентов, которые могут поступать от разнообразных сторонних лиц.
[policy_loose]
# Разрешим промежуточному удостоверяющему центру подписывать более широкий диапазон сертификатов
# Обратитесь к разделу ФОРМАТ ПОЛИТИКИ из `man ca`
countryName            = optional
stateOrProvinceName    = optional
localityName           = optional
organizationName       = optional
organizationalUnitName = optional
commonName             = supplied
emailAddress           = optional
Опции из раздела [req] применяются при создании сертификатов или запросов на подпись сертификата.
[req]
# Опции утилиты `req` (`man req`)
default_bits       = 2048
distinguished_name = req_distinguished_name
string_mask        = utf8only

# SHA-1 устарел, поэтому используем вместо него SHA-2
default_md         = sha256

# Расширения, добавляемые при использовании опции -x509
x509_extensions    = v3_ca
Раздел [req_distinguished_name] объявляет информацию обычно требуемую в запросе на подпись сертификата. Можно указать дополнительные значения по умолчанию.
[req_distinguished_name]
# Обратитесь к https://en.wikipedia.org/wiki/Certificate_signing_request
countryName                     = Название страны (двухбуквенный код)
stateOrProvinceName             = Название штата или провинции
localityName                    = Название местности
0.organizationName              = Название организации
organizationalUnitName          = Название подразделения организации
commonName                      = Общее имя
emailAddress                    = Адрес электронной почты

# На выбор, можно указать несколько значений по умолчанию
countryName_default             = GB
stateOrProvinceName_default     = England
localityName_default            =
0.organizationName_default      = Alice Ltd
#organizationalUnitName_default =
#emailAddress_default           =
Следующие несколько разделов - это расширения, которые могут быть применены при подписывании сертификатов. Например, передача аргумента командной строки -extensions v3_ca применит опции из набора в разделе [v3_ca].

При создании корневого сертификата применим расширение v3_ca.
[v3_ca]
# Расширения для типичного удостоверяющего центра (`man x509v3_config`)
subjectKeyIdentifier   = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints       = critical, CA:true
keyUsage               = critical, digitalSignature, cRLSign, keyCertSign
При создании промежуточного сертификата применим расширение v3_ca_intermediate. pathlen:0 гарантирует, что у промежуточного удостоверяющего центра не будет дочерних промежуточных удостоверяющих центров.
[v3_intermediate_ca]
# Расширения для типичного промежуточного удостоверяющего центра (`man x509v3_config`)
subjectKeyIdentifier   = hash
authorityKeyIdentifier = keyid:always,issuer
basicConstraints       = critical, CA:true, pathlen:0
keyUsage               = critical, digitalSignature, cRLSign, keyCertSign
Расширение usr_cert будем применять при подписании клиентских сертификатов, которые будут использоваться для аутентификации удалённых пользователей.
[usr_cert]
# Расширения для клиентских сертификатов (`man x509v3_config`)
basicConstraints       = CA:FALSE
nsCertType             = client, email
nsComment              = "Сертификат клиента создан OpenSSL"
subjectKeyIdentifier   = hash
authorityKeyIdentifier = keyid,issuer
keyUsage               = critical, nonRepudiation, digitalSignature, keyEncipherment
extendedKeyUsage       = clientAuth, emailProtection
Применим расширение server_cert при подписании сертификатов серверов, например, используемых веб-серверами.
[server_cert]
# Расширения для сертификатов серверов (`man x509v3_config`)
basicConstraints       = CA:FALSE
nsCertType             = server
nsComment              = "Сертификат сервера создан OpenSSL"
subjectKeyIdentifier   = hash
authorityKeyIdentifier = keyid,issuer:always
keyUsage               = critical, digitalSignature, keyEncipherment
extendedKeyUsage       = serverAuth
Расширение crl_ext применяется автоматически при создании списков отозванных сертификатов.
[crl_ext]
# Расширение для списков отозванных сертификатов (`man x509v3_config`)
authorityKeyIdentifier = keyid:always
Применим расширение ocsp при подписании сертификата для протокола интерактивного статуса сертификата (Online Certificate Status Protocol - OCSP).
[ocsp]
# Расширение для подписи сертификатов OCSP (`man ocsp`)
basicConstraints       = CA:FALSE
subjectKeyIdentifier   = hash
authorityKeyIdentifier = keyid,issuer
keyUsage               = critical, digitalSignature
extendedKeyUsage       = critical, OCSPSigning
Создание корневого ключа

Создадим корневой ключ (ca.key.pem) и сохраним его в полной безопасности. Злоумышленник, заполучивший корневой ключ, сможет выпускать доверенные сертификаты. Зашифруйте корневой ключ при помощи 256-битного шифрования AES и сильного пароля.
Замечание. Используйте 4096 бит для всех корневых и промежуточных ключей удостоверяющих центров. Вы по-прежнему сможете подписывать сертификаты серверов и клиентов более короткой длины.
# cd /root/ca
# openssl genrsa -aes256 -out private/ca.key.pem 4096
Enter pass phrase for ca.key.pem: secretpassword             # Введите ключевую фразу для ca.key.pem: секретныйпароль
Verifying - Enter pass phrase for ca.key.pem: secretpassword # Проверка - Введите ключевую фразу для ca.key.pem: секретныйпароль
# chmod 400 private/ca.key.pem
Создание корневого сертификата

Воспользуемся корневым ключом (ca.key.pem) для создания корневого сертификата (ca.cert.pem). Примем срок действия корневого сертификата достаточно длинным, например - двенадцать лет. По истечении срока действия корневого сертификата все сертификаты, подписанные этим удостоверяющим центром, станут недействительными.
Предупреждение! При каждом использовании утилиты req нужно указывать используемый файл конфигурации с помощью опции -config, в противном случае OpenSSL будет использовать файл по умолчанию /etc/pki/tls/openssl.cnf.
# cd /root/ca
# openssl req -config openssl.cnf \
  -key private/ca.key.pem \
  -new -x509 -days 7300 -sha256 -extensions v3_ca \
  -out certs/ca.cert.pem
Enter pass phrase for ca.key.pem: secretpassword                         # Введите ключевую фразу для ca.key.pem: секретныйпароль
You are about to be asked to enter information that will be incorporated # У вас будет запрошена информация, которая будет вставлена
into your certificate request.                                           # в ваш запрос сертификата.
-----
Country Name (2 letter code) [XX]:GB                                     # Название страны (двухбуквенный код) [XX]:GB
State or Province Name []:England                                        # Название штата или провинции []:Англия
Locality Name []:                                                        # Название местности []:
Organization Name []:Alice Ltd                                           # Название организации []:ООО Алиса
Organizational Unit Name []:Alice Ltd Certificate Authority              # Название подразделения []:Удостоверяющий центр ООО Алиса
Common Name []:Alice Ltd Root CA                                         # Общее имя []:Корневой удостоверяющий центр ООО Алиса
Email Address []:                                                        # Адрес электронной почты []:
# chmod 444 certs/ca.cert.pem
Проверка корневого сертификата
# openssl x509 -noout -text -in certs/ca.cert.pem
В выводе будут отображены:
  • используемый алгоритм подписания,
  • даты действия сертификата,
  • битовая длина публичного ключа,
  • эмитент, который подписал этот сертификат,
  • субъект, который относится к этому сертификату.
Эмитент и субъект идентичны в случае самозаверенного сертификата. Отметим, что все корневые сертификаты являются самозаверенными.
Signature Algorithm: sha256WithRSAEncryption                  # Алгоритм подписания: sha256WithRSAEncryption
    Issuer: C=GB, ST=England,                                 #     Эмитент: C=GB, ST=Англия,
            O=Alice Ltd, OU=Alice Ltd Certificate Authority,  #              O=ООО Алиса, OU=Удостоверяющий центр ООО Алиса,
            CN=Alice Ltd Root CA                              #              CN=Корневой удостоверяющий центр ООО Алиса
    Validity                                                  #     Действительность
        Not Before: Apr 11 12:22:58 2015 GMT                  #         Не ранее: 11 апреля 2015 года в 12:22:58 по Гринвичу
        Not After : Apr 6 12:22:58 2035 GMT                   #         Не позднее: 6 апреля 2035 года 12:22:58 по Гринвичу
    Subject: C=GB, ST=England,                                #     Субъект: C=GB, ST=Англия,
             O=Alice Ltd, OU=Alice Ltd Certificate Authority, #              O=ООО Алиса, OU=Удостоверяющий центр ООО Алиса,
             CN=Alice Ltd Root CA                             #              CN=Корневой удостоверяющий центр ООО Алиса
    Subject Public Key Info:                                  #     Информация публичного ключа субъекта:
        Public Key Algorithm: rsaEncryption                   #         Алгоритм публичного ключа: rsaEncryption
            Public-Key: (4096 bit)                            #             Публичный ключ: (4096 бит)
В выводе также отображаются расширения X509v3. Мы применили расширение v3_ca, поэтому в выводе должны отобразиться опции из [v3_ca].
X509v3 extensions:                                    # Расширения X509v3:
    X509v3 Subject Key Identifier:                    #     Идентификатор ключа субъекта X509v3:
        38:58:29:2F:6B:57:79:4F:39:FD:32:35:60:74:92:60:6E:E8:2A:31
    X509v3 Authority Key Identifier:                  #     Идентификатор ключа подлинности X509v3:
        keyid:38:58:29:2F:6B:57:79:4F:39:FD:32:35:60:74:92:60:6E:E8:2A:31

    X509v3 Basic Constraints: critical                #     Базовые ограничения X509v3: критично
        CA:TRUE
    X509v3 Key Usage: critical                        #     Использование ключа X509v3: критичное
        Digital Signature, Certificate Sign, CRL Sign #         Цифровая подпись, подписание сертификата, подписание списка отозванных сертификатов

воскресенье, 4 декабря 2016 г.

Удостоверяющий центр OpenSSL

Перевод: OpenSSL Certificate Authority
Автор: Джэми Нгуен (Jamie Nguyen)

В этом руководстве рассматривается работа с вашим собственным удостоверяющим центром (CA - Certificate Authority) при помощи инструментов командной строки OpenSSL. С его помощью можно решать такие задачи как выпуск сертификатов серверов для защиты веб-сайта в локальной сети или выпуск сертификатов клиентов для их аутентификации на сервере.

Введение