Je tente de créer un certificat à des fins de test en deux étapes. Tout d'abord, je crée un certificat auto-signé qui établit ma propre autorité de certification (CA). Deuxièmement, j'utilise ce certificat racine pour signer un certificat de serveur de test qui sera placé dans un magasin de certificats personnel. J'ouvre une invite de commande administrative et entrez les informations suivantes:Installer le certificat auto-signé au magasin personnel à partir du fichier .cer en utilisant C++
Étape 1: MakeCert -pe -n "CN = TestCA" -b 01/01/2015 -e 01/01/2020 -ss mon -SR currentuser -a sha256 signature -sky -NBCAR 2048 -r "TestCA.cer"
Etape 2: MakeCert -pe -n "CN = localhost" -b 01/01/2015 -e 01/01/2020 -eku 1.3.6.1.5.5.7.3.1 -dans "TestCA" -est mon -user actuel -ss mon -sr utilisateur actuel -a sha256 -sky échange -sp "Microsoft RSA SChannel Fournisseur cryptographique" -sy 12 -len 2048 "Localhost.cer"
Suite à ces étapes, tout fonctionne bien. Après cela, j'essaie d'installer ces certificats via l'application C++. Il semble que ce soit bien quand je vérifie ces certificats dans certmgr.msc, cependant, le client ne parvient toujours pas à se connecter au serveur depuis lors. Après avoir supprimé le certificat "localhost" du magasin de certificats personnel, effectuez à nouveau l'étape 2 à l'aide de MakeCert.exe. Le client peut réussir à se connecter au serveur. Peut-être qu'il y a quelque chose d'important qui me manquait. Si quelqu'un le sait, donnez-moi quelques suggestions. En passant, mon client et mon serveur s'exécutent sur le même ordinateur. Mes codes sont indiqués ci-dessous.
HCERTSTORE hMyCertStore = NULL;
if(hMyCertStore = CertOpenStore(
CERT_STORE_PROV_SYSTEM, // The store provider type
0, // The encoding type is
// not needed
NULL, // Use the default HCRYPTPROV
CERT_SYSTEM_STORE_CURRENT_USER, // Set the store location in a
// registry location
L"MY" // The store name as a Unicode
// string
))
{
printf("The system store was created successfully.\n");
}
else
{
printf("An error occurred during creation "
"of the system store!\n");
exit(1);
}
CRYPTUI_WIZ_IMPORT_SRC_INFO importSrc;
memset(&importSrc, 0, sizeof(CRYPTUI_WIZ_IMPORT_SRC_INFO));
importSrc.dwSize = sizeof(CRYPTUI_WIZ_IMPORT_SRC_INFO);
importSrc.dwSubjectChoice = CRYPTUI_WIZ_IMPORT_SUBJECT_FILE;
importSrc.pwszFileName = L"C:\\Temp\\MakeCert\\localhost.cer";
importSrc.pwszPassword = L"";
importSrc.dwFlags = CRYPT_EXPORTABLE | CRYPT_USER_PROTECTED;
if (CryptUIWizImport(CRYPTUI_WIZ_NO_UI,
NULL,
NULL,
&importSrc,
hMyCertStore) == 0)
{
printf("CryptUIWizImport error %d\n", GetLastError());
}
Toute aide serait grandement appréciée.
Clement