|
Проблема получения сертификата из личного хранилища текущего пользователя (решено) | ☑ | ||
---|---|---|---|---|
0
Evgeny_S_K
11.12.21
✎
22:39
|
Добрый день!
Есть сертификат, который помещен в личное хранилище текущего пользователя. На этом же компьютере развернут сервер Apache, на котором опубликован веб-сервис 1С (база данных - файловая). При обращении к веб-сервису извне метод веб-сервиса цепляет процедуру серверного модуля, в которойм происходит попытка получения сертификата: ХранилищеСертификатовКриптографии = МенеджерКриптографии.ПолучитьХранилищеСертификатов(); // возвращает хранилище пользователя ОС Сертификат = ХранилищеСертификатовКриптографии.НайтиПоОтпечатку(ДвоичныеДанныеОтпечатка); Сертификат не находится (возвращается Неопределено). Если по этому же отпечатку тем же кодом пытаться получить сертификат просто, например, из внешней обработки - то сертификат находится. Если сертификат поместить в личное хранилище локального компьютера, то метод веб-сервиса его найдет. Скажите, как в описанной мною ситуации можно получить сертификат из хранилища текущего пользователя и почему он не находится? |
|||
1
acht
11.12.21
✎
22:42
|
(0) > помещен в личное хранилище текущего пользователя
Кто такой "текущий пользователь" на сервере? |
|||
2
Evgeny_S_K
11.12.21
✎
22:51
|
(1) > Это пользователь ОС. Разве сервер, установленный на той же машине, где и сертификат, не определит текущего пользователя?
|
|||
3
acht
11.12.21
✎
23:06
|
(2) Если я правльно понимаю ход твоих мыслей, то процесс, запущенный под каким-нибудь USR1CV8 должен догадаться о "пользователе ОС" на каком нибудь айфоне, который дергает веб-сервис? Нет. Это так не работает.
Чтобы получать сертификат из хранилища текущего пользователя ОС, надо положить его туда под текущим пользователем ОС на нужной машине. Соответственно, на клиенте это пользователь ОС, запустивший программу, на сервере - пользователь ОС сервера (вернее рабочего процесса, но он по умолчанию совпадает с пользователем кластера). У каждого из них свое собственное хранилище на своей собственной машине. На ИТС была статья. Ссылка, кстати, пробегала не так давно по мисте, поищи в недавних темах. |
|||
4
Garykom
гуру
11.12.21
✎
23:31
|
(0) от имени какого пользователя "развернут сервер Apache"?
надеюсь не от "SYSTEM" ? :) |
|||
5
Evgeny_S_K
11.12.21
✎
23:32
|
(3) > Я мыслю так: есть компьютер, на котором запущена винда под неким пользователем Admin. Для этого пользователя на этом компе в хранилище помещен сертификат.
К веб-сервису, опубликованному на этом компе, обращается некий клиент. Вот на сервер пришел запрос от этого клиента - что мешает серверу определить текущего пользователя ОС (не пользователя ОС клиента, от которого пришел запрос, а пользователя своей серверной ОС)? |
|||
6
Evgeny_S_K
11.12.21
✎
23:38
|
(4) > Затрудняюсь ответить - по-моему, сервер устанавливался с настройками по-умолчанию. Но опять же: сервер же существует не сам по себе - он запущен под некоторой ОС, к-я, в свою очередь, работает под неким пользователем, для которого и был добавлен сертификат. Как мне казалось, код "МенеджерКриптографии.ПолучитьХранилищеСертификатов();" должен вернуть именно хранилище того пользователя, под которым запущена ОС на сервере.
|
|||
7
acht
11.12.21
✎
23:49
|
(6) > МенеджерКриптографии.ПолучитьХранилищеСертификатов();
Возвращает хранилище пользователя процесса OC, под которым запущен rphosts.exe. Это и есть "некий пользователь Admin"? |
|||
8
Evgeny_S_K
11.12.21
✎
23:59
|
(4) > Вы были правы - действительно, Apache был запущен под System, а нужно было запустить под тем же пользователем, под которым сертификат помещен в хранилище. Спасибо! Вопрос закрыт, благодарю всех, кто поучаствовал.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |