Как заставить веб-сервис PKSC11INTEROP работать с IIS 10 (уже работающим с IIS EXPRESS) - PullRequest
0 голосов
/ 18 мая 2019

Я пытаюсь получить информацию о слоте HSM (ATOS HSM Trustway Proteccio ™ NetHSM), используя веб-сервис asmx с pkcs11interop.Мой веб-сервис получает информацию с помощью IIS 10 Express в Visual Studio. Когда я пытаюсь развернуть веб-сервис на IIS 10 в моих окнах 10, у меня появляется эта ошибка:

Net.Pkcs11Interop.Common.Pkcs11Exception: Метод C_Initialize возвращает CKR_CRYPTOKI_NOT_INITIALIZED à Net.Pkcs11Interop.HighLevelAPI41.Pkcs11..ctor (String libraryPath, AppType appType) à Net.Pkcs11Interop.HighLevelAPI.PypePHP (TKP) 11C: \ Users \ jussieu \ Source \ Repos \ Test \ TestHsm.asmx.cs: ligne 30

Журнал из pkcs11-logger: Вызов C_Initialize 0x00003f7c: 0x00003db0: Входные данные 0x00003f7c: 0x00003BF0: 0x3: 0: 0x0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 6 0 0 6 8 6 8 8 8 6 6 6 6 6 6 6 6 6 6 6 5 5 5 5 5 5 5 5 5 5 5 5 5 0 ф ф: 0x00003db0: CreateMutex: 00000000 0x00003f7c: 0x00003db0: DestroyMutex: 00000000 0x00003f7c: 0x00003db0: LockMutex: 00000000 0x00003f7c: 0x00003db0: UnlockMutex: 00000000 0x00003f7c: 0x00003db0: Флаги: 2 0x00003f7c: 0x00003db0: CKF_LIBRARY_CANT_CREATE_OS_THREADS: FALSE 0x00003f7c: 0x00003db0: CKF_OS_LOCKING_OK: TRUE 0x00003f7c: 0x00003db0: pReserved: 00000000 0x00003f7c: 0x00003db0: возвращение 400 (CKR_CRYPTOKI_NOT_INITIALIZED)

спасибо, что вы * мне нужны * * * * * * * * * * * * * * * * * * * * * * * * * * * ко мне1008 * Я использую
  • Windows 10 Ver 1809
  • Visual Studio 2017
  • pkcs11interop 4.1.1
  • Я запускаю IIS Express в 32и 64 бита все было в порядке
  • Я дал IUSR и IIS_IUSRS авторизацию виртуальной папке веб-службы в IIS, но ничего не изменилось.
     string retourE = "Hello";

            if (Net.Pkcs11Interop.Common.Platform.Uses64BitRuntime)
            {
                pkcs11LibraryPath = @"C:\Windows\System32\nethsm.dll";
                loggerLibrary = @"C:\Users\jussieu\PROJETS\HSM\lib\pkcs11-logger-x64.dll";
                logFile = @"C:\Users\jussieu\Documents\PROJETS\HSM\lib\pkcs11-logger-x64.log";
            }
            else
            {
                pkcs11LibraryPath = @"C:\Windows\SysWOW64\nethsm.dll";
                loggerLibrary = @"C:\Users\jussieu\Documents\PROJETS\HSM\lib\pkcs11-logger-x86.dll";
                logFile = @"C:\Users\jussieu\Documents\PROJETS\HSM\lib\pkcs11-logger-x86.log";
            }

            System.Environment.SetEnvironmentVariable("PKCS11_LOGGER_LIBRARY_PATH", pkcs11LibraryPath);
            System.Environment.SetEnvironmentVariable("PKCS11_LOGGER_LOG_FILE_PATH", logFile);
            System.Environment.SetEnvironmentVariable("PKCS11_LOGGER_FLAGS", "64");

 using (Pkcs11 pkcs11 = new Net.Pkcs11Interop.HighLevelAPI.Pkcs11(loggerLibrary, AppType.MultiThreaded))
            {


                // Show general information about loaded library
                LibraryInfo libraryInfo = pkcs11.GetInfo();

                Console.WriteLine("Library");
                Console.WriteLine("  Manufacturer:       " + libraryInfo.ManufacturerId);
                Console.WriteLine("  Description:        " + libraryInfo.LibraryDescription);
                Console.WriteLine("  Version:            " + libraryInfo.LibraryVersion);


                // Get list of all available slots
                foreach (Slot slot in pkcs11.GetSlotList(SlotsType.WithOrWithoutTokenPresent))
                {
                    // Show basic information about slot
                    SlotInfo slotInfo = slot.GetSlotInfo();

                    Console.WriteLine();
                    Console.WriteLine("Slot ");
                    Console.WriteLine("  Manufacturer:       " + slotInfo.ManufacturerId);
                    Console.WriteLine("  Description:        " + slotInfo.SlotDescription);
                    Console.WriteLine("  Token present:      " + slotInfo.SlotFlags.TokenPresent);

                    if (slotInfo.SlotFlags.TokenPresent)
                    {
                        // Show basic information about token present in the slot
                        TokenInfo tokenInfo1 = slot.GetTokenInfo();

                        Console.WriteLine("Token 1");
                        Console.WriteLine("  Manufacturer:       " + tokenInfo1.ManufacturerId);
                        Console.WriteLine("  Model:              " + tokenInfo1.Model);
                        Console.WriteLine("  Serial number:      " + tokenInfo1.SerialNumber);
                        Console.WriteLine("  Label:              " + tokenInfo1.Label);
                        retourE = tokenInfo1.Label.ToString();


                        // Show list of mechanisms supported by the token
                        Console.WriteLine("Supported mechanisms TOKENS 1: ");
                        foreach (CKM mechanism in slot.GetMechanismList())
                            Console.WriteLine("  " + mechanism);
                    }

                }
                return retourE;
            }

Я ожидаю, что веб-служба будет работать на IIS10, но работает только на IIS EXPRESS

...