С здесь , я узнал, что нам нужен открытый ключ и идентификация пользователя:
для создания CSR
Цель состоит в том, чтобы установить соединения SSL / TLS между двумя узлами (клиент и сервер).
Исходя из вышеприведенной схемы, я понимаю, что в качестве входных данных для передачи CSR должен использоваться открытый ключ, но шаг 4 использует закрытый ключ (server-key.pem
) для создания CSR (server.CSR
)
Шаг 1) Создание ключа центра сертификации (закрытый ключ)
$ openssl genrsa -aes256 -out ca-key.pem 4096
Шаг 2) Создание центра сертификации (корневого сертификата) с помощью ввода (ca-key.pem
)
$ openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
Шаг 3) Создание личного ключадля веб-сервера
$ openssl genrsa -out server-key.pem 4096
Шаг 4) Создайте запрос на подпись сертификата (CSR), введя идентификатор пользователя.Это создаст открытый ключ по очереди.
$ openssl req -subj "/CN=dockerbuild.harebrained-apps.com" -sha256 -new -key server-key.pem -out server.csr
Шаг 5) Добавить конфигурацию
$ echo subjectAltName = IP:40.xx.xx.164,IP:10.0.0.4,IP:127.0.0.1,DNS:dockerbuildsys.westus.cloudapp.azure.com,DNS:dockerbuild.harebrained-apps.com > extfile.cnf
Шаг 6) Создать серверсертификат
$ openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf
Шаг 7) Создание личного ключа клиента
$ openssl genrsa -out key.pem 4096
Шаг 8) Создание CSR для клиента путем ввода идентификатора пользователя
$ openssl req -subj '/CN=client' -new -key key.pem -out client.csr
Шаг 9) Файл расширения сертификата для клиента
$ echo extendedKeyUsage = clientAuth > extfile.cnf
Шаг 10) Создание сертификата клиента
$ openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile.cnf
Шаг 11) Удаление запросов на подпись
$ rm -v client.csr server.csr
Шаг 12) Удаление разрешений на запись для ключей
$ chmod -v 0400 ca-key.pem key.pem server-key.pem
Шаг13) Разрешения на чтение сертификата для каждого пользователя
$ chmod -v 0444 ca.pem server-cert.pem cert.pem
Шаг 14) Загружен на стороне сервера, Центр сертификации (ca.pem
), Сертификат сервера (server-cert.pem
)& ключ сервера (server-key.pem
)
У меня очень хорошее понимание симметричного и асимметричного шифрования ключей.
Мы используем асимметричные ключи для решения проблемы распределения ключей (symметрический ключ) между двумя сторонами
Я понимаю, что каждый сертификат имеет открытый ключ + личность владельца (который предоставляет сертификат)
Вопросы:
1) Являются ли ca-key.pem
, server-key.pem
& key.pem
симметричными ключами?
2) Зачем создавать центр сертификации (ca.pem
)?Зачем нам нужен закрытый ключ (ca-key.pem
) для создания центра сертификации?
3) Зачем нам нужен закрытый ключ для создания CSR?Поскольку это противоречит диаграмме (выше)?
4) Зачем создавать запрос на подпись сертификата (CSR) перед созданием сертификата?и клиент, и сервер
5) Зачем нам нужны два сертификата (сертификат сервера server-cert.pem
и сертификат клиента cert.pem
)?
6) openssl req -subj "/CN=dockerbuild.harebrained-apps.com" -sha256 -new -key server-key.pem -out server.csr
создает server.csr
, которые содержатоткрытый ключ + идентификация пользователя?Если да, то как этот открытый ключ отличается от открытого ключа, предоставленного сертификатом (server-cert.pem
)?
7) Если в вышеуказанном процессе не созданы симметричные ключи, то как клиент и сервер взаимодействуют с шифрованием?
8) Как server-key.pem
/ server-cert.pem
/ ca.pem
(загружено на сервер) работает с key.pem
/ cert.pem
/ ca.pem
(на клиенте)?