User Tools

Site Tools


Sidebar

Me
Здравствуйте!

Меня зовут Михаил Усик!
Я системный администратор
и наполняю эту wiki,
решая разнообразные IT-задачки.

Я всегда готов помочь Вам
наладить IT-инфраструктуру
за скромное вознаграждение!

mike@autosys.tk
+7 (977) 887-96-23

ms_windows_ms_sql:ssl_certificate_private_key_permissions

Проблема

Я использую сертификаты Let's Encrypt на хосте Windows 2008R2. Сертификат нужен для Citrix Secure Gateway.
В один прекрасный день, после обновления сертификата средствами Windows ACME Simple версии 1.9.12.2 (letsencrypt.exe) сервис отказался запускаться, ссылаясь на то, что не имеет прав на чтение private key:

Read access to the selected certificate's private key failed.

Сервис исполняется от имени Network Service. Если в свойствах сертификата нажать Manage Private Keys… и попытаться дать права для Network Service, то появляется сообщение:

Unable to save permission changes on <<certificate name and date>> private keys.
Access is denied.

Решение

Помогло применение PsExec.
Запускаем mmc от имени SYSTEM:

psexec -i -s mmc

добавляем оснастку для управления сертификатами локального компьютера и теперь мы можем дать права на private key этого сертификата.
Вероятная причина такого поведения - то что задача обновления сертификатов исполняется от имени SYSTEM.
Также, почему-то Citrix Secure Gateway отказывался запускаться пока я не дал права на чтение private key учетке, от имени которой я производил установку и конфигурирование.
Scheduled Task обновления сертификатов я буду запускать раз в неделю от имени учетки, которая устанавливала и конфигурировала Citrix Secure Gateway. Еще нюанс. У меня Citrix Secure Gateway работает на одном хосте с Web Interface. Соответственно, Web Interface работает на 80 порту, а Secure Gateway на 443. При обновлении сертификата клиент win-acme обновляет (пересоздает) привязку

https://*:443

Я не разобрался как это изменить на уровне win-acme, однако добавил в scheduled task еще один Action для удаления привязки:

%systemroot%\system32\inetsrv\appcmd.exe set site /site.name:"Default Web Site" /-bindings.[protocol='https',bindingInformation='*:443:']

В итоге, список Actions в sheduled task у меня такой:

sc stop "CtxSecGwy"
c:\letsencrypt\letsencrypt.exe --renew --baseuri "https://acme-v01.api.letsencrypt.org/"
timeout /T 15
%systemroot%\system32\inetsrv\appcmd.exe set site /site.name:"Default Web Site" /-bindings.[protocol='https',bindingInformation='*:443:']
sc start "CtxSecGwy"

Посмотрим, что будет при следующем обновлении!!!

Discussion

Enter your comment. Wiki syntax is allowed:
C X X Y B
 
ms_windows_ms_sql/ssl_certificate_private_key_permissions.txt · Last modified: 2019/02/11 09:13 (external edit)