Проблема

Я использую сертификаты 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"

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

Enter your comment. Wiki syntax is allowed:
 
  • ms_windows_ms_sql/ssl_certificate_private_key_permissions.txt
  • Last modified: 2019/02/11 09:13
  • by 127.0.0.1