Win32/Win64 OpenSSL

Задаем различные вопросы по приложению Bimoid Server (Windows), его настройке и использованию. Не забываем, что для версии 1.0 выпуск обновлений не планируется.
Ответить
x2088
Сообщения: 36
Зарегистрирован: Чт май 05, 2022 2:33 pm

Win32/Win64 OpenSSL

Сообщение x2088 »

Прошлый раз кто-то спрашивал как сгенерировать сертификат. Генерация сертификата под виндой имеет свой синтаксис и отличается от генерации под линуксом. При генерации требуется указать правильные данные компа / пользователя, иначе сертификат будет бесполезен. Ниже показана комстрока для генерации несамоподписанного сертификата и его отзыва.

Для CA выдача на имя компа, а для клиента на логин пользователя. По крайней мере когда я игрался с генерацией сертификатов у меня всё получилось - после установки сертификата CA система выдавала, что пользовательские сертификаты прошли проверку и действительны. Проверял, выдавая сертификат на свой комп и свой акк в винде.

%ca% = имя компа, %server% = OBIMP (это просто часть имени файла и внутреннего имени сертификата, а не реальные данные), %number% = число от балды для отличия своего собственного CA от других просто по номеру, у меня был рандомный CRC64 - можно мышкой натыкать куда попало по битам в калькуляторе в режиме программиста или сгенерировать, %client% = логин пользователя.

Код: Выделить всё

genrsa -out C:/usr/ca/%ca%.key 4096
req -x509 -new -key C:/usr/ca/%ca%.key -days 3653 -out C:/usr/ca/%server%_ca_%number%.crt
req -new -key C:/usr/ca/%ca%.key -out C:/usr/ca/%ca%.csr
x509 -req -in C:/usr/ca/%ca%.csr -CA C:/usr/ca/%server%_ca_%number%.crt -CAkey C:/usr/ca/%ca%.key -CAcreateserial -out C:/usr/ca/%ca%.crt -days 3653 

genrsa -out C:/usr/crt/%client%.key 4096
req -new -key C:/usr/crt/%client%.key -out C:/usr/crt/%client%.csr
x509 -req -in C:/usr/crt/%client%.csr -CA C:/usr/ca/%ca%.crt -CAkey C:/usr/ca/%ca%.key -CAcreateserial -out C:/usr/crt/%client%.crt -days 3653 

ca -revoke C:/usr/ca|crt/%client%.crt
ca -gencrl -out C:/usr/ca/%server%_ca_%number%.srl
В результате в полях кем/кому выдан должно быть что-то вроде:
Самоподписанный сертификат: Издатель = OBIMP CA 22B5ABE4A6CDA956 , Субъект = OBIMP CA 22B5ABE4A6CDA956 .
Корневой сертификат: Издатель = OBIMP CA 22B5ABE4A6CDA956 , Субъект = x2088_pc .
Пользовательский сертификат: Издатель = x2088_pc , Субъект = x2088 .

http://slproweb.com/products/Win32OpenSSL.html (Официальный сайт OpenSSL под винду).
x2088
Сообщения: 36
Зарегистрирован: Чт май 05, 2022 2:33 pm

Re: Win32/Win64 OpenSSL

Сообщение x2088 »

Добавление альтернативных полей в сертификат при генерации. Открываем конфиг С:\usr\local\ssl\openssl.cnf и добавляем строки:

Код: Выделить всё

[ req ]
req_extensions = v3_req #Расширения для добавления к запросу на сертификат

[ v3_req ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = host1.srv.net
DNS.2 = host2.srv.net
IP.1 = 127.0.0.1
Описание полей сертификата:
  • Version (Версия) — значение 1, 2 или 3, которое указывает используемую версию сертификата.
  • Serial Number (Серийный номер) — уникальный идентификатор, который присваивается каждому сертификату ЦС.
  • CA Signature Algorithm (Алгоритм подписывания ЦС) — имя алгоритма, который ЦС использует для подписывания содержимого сертификата.
  • Issuer Name (Имя издателя) — различающееся имя ЦС, который выдал этот сертификат.
  • Validity Period (Период действия) — период времени, в течение которого сертификат считается действительным.
  • Subject Name (Имя субъекта) — имя сущности, которую представляет сертификат.
  • Subject Public Key Info (Данные открытого ключа субъекта) — открытый ключ, принадлежащий субъекту сертификата.
  • Issuer Unique ID (Уникальный идентификатор издателя): уникальный идентификатор центра сертификации, который выдал сертификат. Он определяется самим центром сертификации.
  • Subject Unique ID (Уникальный идентификатор субъекта) — уникальный идентификатор субъекта сертификата, который определяется ЦС, выдавшим сертификат.
  • Authority Key Identifier (Идентификатор ключа центра) — может содержать одно из двух значений:
    • субъект ЦС и серийный номер сертификата ЦС, который выдал сертификат;
    • хэш-код открытого ключа ЦС, который выдал этот сертификат.
  • Subject Key Identifier (Идентификатор ключа субъекта) — хэш-код открытого ключа сертификата.
  • Key Usage (Использование ключа) — определяет службу, для которой можно использовать сертификат. Здесь могут содержаться одно или несколько значений из следующего списка:
    • Цифровая подпись
    • Неотрекаемость
    • Шифрование ключа
    • Data Encipherment (Шифрование данных);
    • Key Agreement (Согласование ключей);
    • Key Cert Sign (Подпись сертификата с ключом);
    • CRL Sign (Подпись списка отзыва сертификатов);
    • Encipher Only (Только шифрование);
    • Decipher Only (Только расшифровка).
  • Private Key Usage Period (Период использования закрытого ключа) — период действия закрытого ключа из пары ключей.
  • Certificate Policies (Политики сертификатов) — политики, используемые для проверки субъекта сертификата.
  • Policy Mappings (Сопоставления политик) — сопоставляет политику в одной организации с политикой в другой.
  • Subject Alternative Name (Альтернативное имя субъекта) — список альтернативных имен для субъекта.
  • Issuer Alternative Name (Альтернативное имя издателя) — список альтернативных имен для ЦС, выдавшего сертификат.
  • Subject Dir Attribute (Атрибут DIR субъекта) — атрибуты из каталога X.500 или LDAP.
  • Basic Constraints (Базовые ограничения) — позволяет определить в сертификате, кому он выдан: ЦС, пользователю, компьютеру, устройству или службе. Это расширение также включает ограничение длины пути, которое ограничивает допустимое количество подчиненных ЦС в цепочке.
  • Name Constraints (Ограничения имен) — определяет, какие пространства имен разрешены в сертификате, выданном ЦС.
  • Policy Constraints (Ограничения политики) — позволяет запретить сопоставления политик между ЦС.
  • Extended Key Usage (Расширенное использование ключа) — указывает, как можно использовать открытый ключ сертификата, кроме целей, определяемых расширением Key Usage (Использование ключа).
  • CRL Distribution Points (Точки распространения списков отзыва сертификатов) — содержит один или несколько URL-адресов, в которых публикуется базовый список отзыва сертификатов.
  • Inhibit anyPolicy (Запрет любой политики) — запрещает использование значения All Issuance Policies (Все политики выдачи) с идентификатором OID (2.5.29.32.0) в сертификатах подчиненного ЦС.
  • Freshest CRL (Актуальный список отзыва сертификатов) — содержит один или несколько URL-адресов, в которых публикуется разностный список отзыва сертификатов ЦС, выдавшего этот сертификат.
  • Authority Information Access (Доступ к информации центра) — содержит один или несколько URL-адресов, в которых публикуется сертификат ЦС, выдавшего этот сертификат.
  • Subject Information Access (Доступ к сведениям о субъекте) — содержит сведения о том, как можно получить дополнительные сведения о субъекте сертификата.
Ответить