/ / Vytvorenie SSL socketu na Windows, ktorý používa certifikáty WinCrypt na autentifikáciu? - c ++, c, okná, ssl, x509

Vytvorenie soketu SSL v systéme Windows, ktorý používa certifikáty WinCrypt na overenie totožnosti? - c + +, c, windows, ssl, x509

Pri overovaní pripojenia klienta SSLserver očakáva, že klient poskytne certifikát. Na typických firemných platformách Windows sa tieto certifikáty nachádzajú v sekcii "Osobné" v úložisku kryptografie systému Windows (otvorenom týmto príkazom: "certmgr.msc")

OpenSSL tieto certifikáty nepoužíva. Systém Windows poskytuje rozhranie WinHTTP API, ktoré poskytuje možnosť vytvárať pripojenia SSL, ale musí dodržiavať protokol požiadavky HTTP / odpovedí, vie niekto o rozhraní API systému Windows, ktoré umožňuje programátorom vytvoriť pripojenie SSL, ktoré overuje používanie certifikátov úložiska Windows kryptografie. možno použiť rovnako ako zásuvka OpenSSL ?, vďaka.

odpovede:

1 pre odpoveď č. 1

Openssl podporuje viacero kryptografických motorov, jedným z nich je Windows CAPI engine.

Tu je výsledok openssl engine na mojom stroji. CAPI je posledný:

(dynamic) Dynamic engine loading support
(4758cca) IBM 4758 CCA hardware engine support
(aep) Aep hardware engine support
(atalla) Atalla hardware engine support
(cswift) CryptoSwift hardware engine support
(chil) CHIL hardware engine support
(nuron) Nuron hardware engine support
(sureware) SureWare hardware engine support
(ubsec) UBSEC hardware engine support
(padlock) VIA PadLock (no-RNG, no-ACE)
(gost) Reference implementation of GOST engine
(capi) CryptoAPI ENGINE

Na Manuálna stránka OpenSSL engine (3) ukazuje príklad kódu pre výber motorakód. Budovanie OpenSSL môže byť trochu zložitejšie. Tu je dávkový súbor, ktorý bude produkovať statickú stavbu so všetkými motormi tiež staticky prepojené. Nie je to najlepšia voľba pre nasadenie, ale s jedným súborom vás oslobodzuje od DLL Hell, zatiaľ čo budete pracovať na detailoch CAPI.

@echo off
setlocal

call "C:Program Files (x86)Microsoft Visual Studio 10.0VCvcvarsall.bat"

::Get the current directory name in the variable builddir
for /f "delims=" %%a in ("%cd%") do set builddir=%%~nxa

::Configure build variable
perl Configure VC-WIN32 enable-static-engine --prefix=.

::Generate makefile
call msdo_nasm.bat

::Build
nmake -f msnt.mak
::Test
nmake -f msnt.mak test
::Install
nmake -f msnt.mak install

endlocal

1 pre odpoveď č. 2

Doh !, ukazuje sa WinSock podporuje natívne SSL, pravdepodobne sa úhľadne integruje s úložiskom certifikátov Windows.

EDIT: Bohužiaľ, toto je len pre Windows Mobile

Ako uvádza Luke v komentároch nižšie, správnym prístupom je použitie rozhrania SChannel API. Toto škaredé API je podrobnejšie diskutované tu.