Требует действийможет затронуть работающую системуПроверены все 26 non-merge commits от 2.4.17269 до 2.4.17294: 1 474 добавления и 440 удалений без mormot.commit.inc и mormot.commit-num.inc. Проверен точный upstream head. superseded_by отсутствует; порядок основан на follow-ups тех же units без avoid range.
SChannel получает нативный mTLS, а гонки запуска серверов устранены
Windows-серверы теперь могут требовать и проверять клиентские сертификаты через SChannel, используя существующие trust stores и callbacks TNetTlsContext. Вторая серия исправляет создание HTTP и async servers: главные потоки не запускаются до готовности sockets, workers и перекрёстных ссылок. Командам с Windows mTLS или созданием серверов под нагрузкой следует брать финальную build.
Коротко
- Переходите на build 2.4.17294 в de8d47ea7122b30aa81296a1e5e899a3909e34b1.
- SChannel servers реализуют mTLS через ClientCertificateAuthentication, CACertificatesFile, CASystemStores, CACertificatesRaw, OnEachPeerVerify и OnAfterPeerValidate.
- Потоки HTTP и async servers остаются suspended до инициализации sockets, workers и owner links.
- Обновитесь ради исправления CACertificatesRaw, явной ошибки отсутствующего client certificate и финальных правок SChannel declarations/cache.
- В public API добавлены acoCreateSuspended, ConsoleLock/ConsoleUnLock и WinCryptTextToBinary.
Рекомендации по обновлению
Переходите на build 2.4.17294. Срочно обновитесь, если Windows server использует client-certificate authentication, CACertificatesRaw задаёт trust anchors или HTTP/async servers создаются конкурентно. Проверьте accepted/rejected chains, overrides OnEachPeerVerify, context OnAfterPeerValidate и запуск THttpServer/THttpAsyncServer. В raw payload нет superseded_by, поэтому формальный avoid range не заявляется; берите полные последовательности, не отдельные промежуточные commits.
26 из 26 записей · 26 коммитов в апстриме
1
Высокий
SChannel mTLS получил совместимость с Windows 7 и более строгие chain checks
mormot.net.sock.windows использует короткий CERT_CHAIN_ENGINE_CONFIG для Windows 7, отклоняет mTLS на более старых системах, уточняет client-auth EKU/trust и исправляет cleanup chain engine.
Исправления
mormot.net.sock.windows
9d610a05+36-20
net: several SChannel fixes
Влияние
Windows 7 может использовать новый server mTLS; более старые системы получают явный unsupported result. Chain resources освобождаются корректно.
Рекомендуется обновиться
Используйте финальный head и включите самую старую поддерживаемую Windows в mTLS tests.
Модули
2
Высокий
Финальные исправления SChannel устраняют конфликт типов и блокирующую загрузку chain
mormot.net.sock.windows использует собственные указатели certificate context, задаёт SCH_CRED_CACHE_ONLY_URL_RETRIEVAL_ON_CREATE и завершает guards версий Windows, устраняя конфликт PCCERT_CONTEXT в Delphi RTL и сетевую URL retrieval при создании credentials.
Исправления
mormot.net.sock.windows+1
9a2fec3f+17-12
net: latest SChannel fixes
Влияние
Windows builds Delphi/FPC получают стабильный финальный mTLS path, а startup не блокируется на URL fetching цепочки. Не-Windows TLS backends не затронуты.
Рекомендуется обновиться
Берите build 2.4.17294 и проверьте Windows client-certificate validation без внешних chain URLs.
3
Высокий
Потоки серверов запускаются только после завершения construction
TLoggedThread.AfterConstruction вызывает inherited перед Start. THttpServerGeneric и TAsyncConnections всегда создают RTL thread suspended, запоминают опцию и запускают после construction; THttpAsyncServer ставит esRunning только после проверки bound socket.
Исправления
mormot.core.threads+2
0b8d9252+11-9
net: fixed previous commits
Влияние
HTTP и async servers больше не гонятся с constructors и не сообщают running до успешного bind. Исправление касается Delphi/FPC backends на всех платформах с этими классами.
Рекомендуется обновиться
Берите 2.4.17294 и нагрузочно проверьте циклы create/start/free для THttpServer, THttpAsyncServer и наследников TAsyncConnections.
Публичный API
TLoggedThread.AfterConstructionbehaviour-changed
4
Высокий
Классические HTTP servers сохраняют полную TLS client-auth policy на соединение
THttpServerSocket.Create копирует полный TNetTlsContext в каждое accepted connection при client-certificate authentication, затем сбрасывает transient state. OpenSSL validation очищает LastError и вычисляет результат один раз.
Исправления
mormot.lib.openssl11+2
7b63898e+14-6
net: some TLS fixes especially on OpenSSL and THttpServer
Влияние
Threaded THttpServer connections сохраняют CA lists и callbacks для mTLS. OpenSSL callbacks больше не наследуют stale error предыдущей проверки.
Рекомендуется обновиться
Перепроверьте mTLS через THttpServer и THttpAsyncServer, включая callback reject/accept.
Публичный API
THttpServerSocket.Createbehaviour-changed
5
Высокий
SChannel явно сообщает об отсутствии client credentials и trust failures
Windows TLS path распознаёт SEC_E_NO_CREDENTIALS при отсутствии client certificate, расширяет SSPI error text и ужесточает chain-policy failures, сохраняя callback override.
Исправления
mormot.core.os+2
13a977c1+10-5
net: better SSPI/SChannel error handling
Влияние
mTLS rejection становится явным и диагностируемым вместо неоднозначного handshake failure. Затронуты Windows servers Delphi/FPC.
Рекомендуется обновиться
Проверьте logs и client-visible behavior для отсутствующих, expired и untrusted client certificates.
6
Высокий
In-memory CA certificates теперь попадают в SChannel validation
TSChannelServerContext.Create исправляет привязку else при выборе trust source, чтобы CACertificatesRaw разбирался и добавлялся, когда CA не заданы файлом или system stores.
Исправления
mormot.net.sock.windows
4355bdd9+5-3
net: fixed SChannel CACertificatesRaw[] support
Влияние
Windows mTLS servers с PEM roots в CACertificatesRaw теперь действительно проверяют по этим roots, а не молча пропускают их.
Рекомендуется обновиться
Обновитесь и проверьте trusted и untrusted client chain, когда CACertificatesRaw — единственный CA source.
Публичный API
TNetTlsContext.CACertificatesRawbehaviour-changed
Модули
7
Высокий
Windows SChannel servers могут требовать client certificate
TSChannelServerContext реализует server-side mTLS из TNetTlsContext: загружает CA sources, при необходимости создаёт exclusive chain engine, запрашивает client credentials, проверяет client-auth EKU и вызывает OnEachPeerVerify/OnAfterPeerValidate.
Новые возможности
mormot.net.sock+1
cbc906b6+368-38
net: implement mTLS using SChannel
Влияние
Windows backends могут использовать native SChannel для mutual TLS без OpenSSL. Существующие servers остаются one-way TLS, пока ClientCertificateAuthentication выключен.
Стоит взглянуть
При внедрении SChannel mTLS настройте один CA source и проверьте оба callbacks с вашей certificate policy на 2.4.17294.
Публичный API
TNetTlsContext.ClientCertificateAuthenticationbehaviour-changedTNetTlsContext.OnEachPeerVerifybehaviour-changedTNetTlsContext.OnAfterPeerValidatebehaviour-changed
8
Средний
Семейства HTTP servers переходят на отложенный запуск главного потока
TAsyncConnections и THttpServerGeneric задают TLoggedThread.fStartAfterConstruction из public suspended options, а THttpApiServer удаляет ручной Start, поскольку timing теперь контролирует base class.
Исправления
mormot.net.async+1
2acff7c1+5-21
net: fixed servers main thread startup
Влияние
Это промежуточная startup-правка, позднее исправленная 0b8d9252. Не cherry-pick без финальных изменений construction.
9
Средний
THttpAsyncServer связывает потоки до запуска любого из них
THttpAsyncServer.Create создаёт inherited server thread и fAsync suspended, задаёт взаимные ссылки, затем запускает async side и ждёт socket bind.
Исправления
mormot.net.async
fb7baf23+17-6
net: fixed THttpAsyncServer.Create thread startup sequence
Влияние
Устраняется окно constructor, где поток мог обратиться к отсутствующему owner state. Это промежуточный fix, завершённый позднее.
Модули
10
Средний
Декларации SChannel предоставляют Windows certificate-chain engines
mormot.lib.sspi добавляет Windows certificate-chain structures, callbacks, constants и API imports для restricted chain engines и оценки SSL chain policy клиентских сертификатов.
Новые возможности
mormot.lib.sspi
a1586a7c+154-2
lib: SChannel cert chain API support
Влияние
Низкоуровневый Windows Delphi/FPC code может вызывать chain APIs напрямую, а SChannel mTLS получает нужные declarations. Другие платформы не меняются.
Публичный API
Windows certificate-chain API declarationsadded
Модули
11
Средний
OpenSSL servers теперь вызывают final peer-validation callback
После успешного server handshake TOpenSslNetTls.AfterAccept вызывает TNetTlsContext.OnAfterPeerValidate, передавая TLS context, peer certificate, cipher и verification result.
Новые возможности
mormot.lib.openssl11
bda449fe+36-8
lib: TOpenSslNetTls.AfterAccept implements OnAfterPeerValidate callback
Влияние
OpenSSL server users получают parity с SChannel. Существующие callbacks теперь могут вызываться на server accepts, где раньше не запускались.
Стоит взглянуть
Проверьте handlers OnAfterPeerValidate на server-side assumptions и протестируйте accepted/rejected peer certificates.
Публичный API
TNetTlsContext.OnAfterPeerValidatebehaviour-changed
Модули
12
Средний
TAsyncConnections может создаваться с suspended main loop
В TAsyncConnectionsOptions добавлена public option acoCreateSuspended. TAsyncConnections.Create удерживает main thread suspended до готовности workers и initialization.
Новые возможности
mormot.net.async
342146c9+12-5
net: fixed TAsyncConnections main thread execution
Влияние
Custom async-server descendants могут управлять initial execution. Существующие option sets сохраняют default, framework использует опцию для безопасного startup.
Публичный API
acoCreateSuspendedadded
Модули
13
Средний
Агрегирующий Lazarus package теперь включает Windows cryptography
packages/lazarus/mormot2.pas добавляет mormot.crypt.win в uses, чтобы агрегирующий FPC package компилировал и регистрировал новую Windows cryptography unit.
Компилятор и платформы
mormot2+1
de8d47ea+8-7
fpc: fixed mormot2 package source
Влияние
Пользователи Lazarus package больше не теряют symbols mormot.crypt.win. Delphi и FPC проекты с прямым списком units не меняются.
Модули
14
Средний
Async HTTP initialization публикует состояние до выполнения
mormot.net.async и mormot.net.ws.async переносят accept-only flags, публикацию bound socket, owner links и WebSocket keep-instance setup до выполнения workers и main loop.
Внутреннее устройство
mormot.net.async+1
47868569+103-89
net: async HTTP server code cleanup
Влияние
Async stack видит согласованное constructor state, уменьшая startup races. Серия завершена 0b8d9252 и не требует migration.
15
Средний
TLoggedThread получил внутренний переключатель запуска после construction
mormot.core.threads добавляет protected flag fStartAfterConstruction и override AfterConstruction, позволяя наследникам оставаться suspended до завершения object construction.
Внутреннее устройство
mormot.core.threads
b698a9c6+13-4
core: introducing TLoggedThread.fStartAfterConstruction flag
Влияние
Внутренний механизм поддерживает server startup fix. Существующие application threads не меняются, если custom descendant не использует protected flag.
Модули
16
Низкий
TSynTests сериализует multithread console updates
mormot.core.test оборачивает progress, color и error output TSynTests в ConsoleLock/ConsoleUnLock, чтобы параллельные suites не смешивали cursor и color state.
Исправления
mormot.core.test
de6c7467+50-35
core: fixed TSynTests console output
Влияние
Вывод параллельных тестов остаётся читаемым. Application backends не затронуты, кроме прямого использования TSynTests.
Модули
17
Низкий
Windows wrapper декодирует PEM и Base64 certificate text
mormot.core.os.security добавляет public WinCryptTextToBinary, wrapper RawUtf8-to-RawByteString над CryptStringToBinaryA с default CRYPT_STRING_BASE64HEADER, и упрощает WinCryptBinaryAppendAsText.
Новые возможности
mormot.core.os.security
d344d129+43-8
core: new WinCryptTextToBinary() wrapper function
Влияние
Windows code получает checked helper для PEM/Base64 decoding. Существующие callers совместимы и могут перейти на него.
Публичный API
WinCryptTextToBinaryadded
Модули
18
Низкий
Public console locking поддерживает атомарные output sequences
mormot.core.os добавляет ConsoleLock и ConsoleUnLock поверх reentrant ConsoleCriticalSection, позволяя защищать многошаговый console update как одну последовательность.
Новые возможности
mormot.core.os
3f2d5e44+18-2
core: new ConsoleLock/ConsoleUnLock functions
Влияние
Tools и test runners могут исключить interleaved output между потоками. Существующие console calls не меняются.
Публичный API
ConsoleLockaddedConsoleUnLockadded
Модули
19
Низкий
Ошибки Windows trust получили читаемые имена
mormot.core.os расширяет lookup Windows error codes константами SChannel, SSPI и certificate trust, показывая symbolic names для chain/policy failures.
Компилятор и платформы
mormot.core.os
31cf2232+13-7
core: include SChannel/SSPI trust error codes
Влияние
Logs и exceptions легче диагностировать. Trust decisions и application APIs не меняются.
Модули
20
Низкий
TLS callback и Windows decoding helpers консолидированы
mormot.lib.openssl11 переносит сборку final peer callback в local helper, а mormot.lib.sspi использует общий WinCryptTextToBinary вместо private CryptStringToBinaryA path.
Внутреннее устройство
mormot.lib.openssl11+1
c9977bb6+32-33
lib: small refactoring of the two previous commits
Влияние
TLS verification behavior не меняется, duplicated conversion/callback code удалён. Migration не нужна.
21
Низкий
JSON length guard переписан без изменения результата
TJsonWriter.AddEscapeBuffer заменяет short-circuit condition вложенными проверками MaxLen и Len; итоговый predicate остаётся тем же.
Внутреннее устройство
mormot.core.json
5b7993fc+5-5
core: fixed #626 TJsonWriter.AddEscapeBuffer
Влияние
Наблюдаемое application behavior и public API не меняются; это переписывание guard, исправленного в предыдущем выпуске.
Модули
22
Низкий
Network suite получил end-to-end тест SChannel mTLS server
test.net.proto создаёт Windows SChannel servers с client-certificate authentication и проверяет успешные/ошибочные handshakes с тестовыми identities.
Тесты
test.net.proto
1a36278a+332-6
test: cover SChannel mTLS server
Влияние
Это regression coverage новой функции без самостоятельного изменения application behavior.
Модули
23
Низкий
Тестовые SChannel servers теперь работают параллельно
Network test suite запускает несколько вариантов SChannel server параллельно, проверяя concurrent console output и независимые TLS lifetimes.
Тесты
test.net.proto
2f892a9e+141-118
test: made SChannel servers run in parallel
Влияние
Меняется только test harness; production backends не получают behavioral или API changes.
Модули
24
Низкий
Интеграционные тесты SChannel покрывают полную матрицу client auth
TNetworkProtocols._SChannel расширяет финальную Windows TLS matrix по server implementations, источникам CA и результатам client certificates.
Тесты
test.net.proto
eddc9ae5+35-33
test: completed TNetworkProtocols._SChannel
Влияние
Regression coverage растёт; application code и runtime Delphi/FPC не меняются.
Модули
25
Низкий
Тесты OpenSSL server покрывают больше TLS validation paths
test.net.proto расширяет покрытие OpenSSL TLS server вместе с общим peer-validation callback и SChannel client-certificate cases.
Тесты
test.net.proto
09e6e909+29-7
test: enhanced OpenSSL TLS server coverage
Влияние
Это test-only coverage для parity checks OpenSSL/SChannel без изменений public API.
Модули
26
Низкий
Тесты SChannel добавляют edge cases trust и callbacks
test.net.proto расширяет SChannel coverage для CA sources, peer callbacks и client-certificate outcomes во время завершения implementation.
Тесты
test.net.proto
170f4c56+19-3
tests: better SChannel coverage
Влияние
Изменение улучшает только regression detection; application code и public API не меняются.