Windows Chef для добавления сертификата ssl и привязки к IIS

Я использую кулинарную книгу Windows Chef https://supermarket.chef.io/cookbooks/windows/versions/5.0.0#readme

для создания и привязки ssl.

Сначала я попробовал:

# Create/update certificate
windows_certificate "create cert" do
    source "c://hn/ssl/cert.pfx"
    pfx_password  {cert_pass}
    store_name "WEBHOSTING"
    action :create
end

# Bind certificate
windows_certificate_binding "bind to IIS" do
    action :create
    cert_name "{my_ssl_hash_number}"
    name_kind :hash
    port 443
    store_name "WEBHOSTING"
end

И я получаю ошибку ниже:

STDOUT: Ошибка добавления SSL-сертификата, ошибка: 1312 Указанный сеанс входа в систему не существует. Возможно, оно уже было прекращено.

И я провел некоторое исследование, похоже, импортированный сертификат не подлежит экспорту, необходимо предоставить доступ к закрытому ключу, ссылка из: Не удалось добавить сертификат SSL при привязке к порту

И ниже моя вторая попытка:

# Create/update certificate
windows_certificate "create cert" do
    source "c://hn/ssl/cert.pfx"
    pfx_password  {cert_pass}
    store_name "WEBHOSTING"
    private_key_acl ["IIS_IUSRS"]
    action [:create, :acl_add]
end 

# Bind certificate
windows_certificate_binding "bind to IIS" do
    action :create
    cert_name "{my_ssl_hash_number}"
    name_kind :hash
    port 443
    store_name "WEBHOSTING"
end

Однако я все еще получаю сообщение об ошибке:

STDOUT: STDERR: C:\Users\Administrator\AppData\Local\Temp\chef-script20180823-492-10cuvyo.ps1: закрытого ключа не существует.

Может кто-нибудь мне помочь? Как правильно импортировать ssl и привязать к IIS? Заранее спасибо.


person Minwu Yu    schedule 23.08.2018    source источник


Ответы (2)


Ниже приведен рецепт шеф-повара, который я использовал для привязки сертификата ssl и порта https. Я также позабочусь о том, чтобы добавить новый сертификат, тогда его следует добавить.

hostname = node['hostname']
hostnamelike = 'CN=' + node['hostname'].to_s + '*'
powershell_script 'find ssl certificate  on local machine root and assign certificate' do
  code <<-EOH
  $iisSite='your site name'
  $hostname="#{hostname}"
  $hostnamelike="#{hostnamelike}"
  $protocol='https'
  $port=443
  Get-WebBinding -Port $port -Name $iissite | Remove-WebBinding
  $guid_value = [GUID]::NewGUID().ToString('B')
  $thumbprint = (Get-ChildItem cert:\\LocalMachine\\my | where-object { $_.Subject -like $hostnamelike  } | Select-Object -First 1).Thumbprint
  New-WebBinding -Name $iissite -IP "*" -Port $port -Protocol https
  netsh http show sslcert ipport=0.0.0.0:$port
  if ($LASTEXITCODE -eq 1) {
  netsh http add sslcert ipport=0.0.0.0:$port certhash=$thumbprint appid=$guid_value certstorename=MY
  }
  else {
  netsh http delete sslcert ipport=0.0.0.0:$port
  netsh http add sslcert ipport=0.0.0.0:$port certhash=$thumbprint appid=$guid_value certstorename=MY
  }
  EOH
end
person Gagan Burde    schedule 25.09.2020

Альтернативным решением для меня является использование сценария powershell для добавления сертификата SSL вместо использования кулинарной книги Windows.

person Minwu Yu    schedule 13.02.2019