1. Создание ключа для подписи корнего сертификата openssl genpkey -algorithm RSA -out rootCA.key 2. Создание корнего сертификата (распространяется клиентам) openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.crt Корневой сертификат и ключ используются для создания новых сертификатов и ключей 3. Создание приватного ключа (для нового сертификата) openssl genpkey -algorithm RSA -out test.key 4. Создание файла с запросом на подпись сертификата, подписанного ключом tesk.key openssl req -new -key test.key -out test.csr CN - ip сервера для strict verification openssl req -new -sha256 -key test.key -subj "/C=US/ST=CA/O=MyOrg, Inc./CN=mydomain.com" -out test.csr 5. Создание сертификата openssl x509 -req -in test.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out test.crt -sha256 openssl x509 -req -in test.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -out test.crt -days 500 -sha256 Итог: rootCA.key — приватный ключ Центра Сертификации, должен храниться в секрете в CA rootCA.crt — публичный корневой сертификат Центра Сертификации — должен быть установлен на всех пользовательских устройствах test.key — приватный ключ, должен храниться в секрете на сервере. Указывает в конфигурации при настройке сервера test.csr — запрос на подпись сертификата, после создания сертификата этот файл не нужен, его можно удалить test.crt — сертификат. Указывает в конфигурации при настройке сервера, не является секретным. Конвертировать crt в pem: openssl x509 -in rootCA.crt -out rootCA.pem strict - ключи для Poco Poco::Net::Context::VERIFY_STRICT (в сертификате прописан ip обладателя сертификата (127.0.0.1)) Странные проблемы с libcrypto.dll в Release. Необходимо положить в папку с исполняемым файлом (установка к нему пути через PATH не помогла) CMake Varibles to build: "POCO_DIR": "D:/dev/poco/Debug" "OPENSSL_ROOT_DIR": "D:/dev/OpenSSL-Win64"