Como restaurar o certificado SSL no Win 2012

1

Em um servidor Windows 2012, criamos sites usando o código C #. Isso também aplica a ligação https com SSL.

Por algum motivo, sempre que um novo site é criado, ele define o certificado SSL dos todos sites como "Não selecionado" Existe alguma maneira de evitar isso?

Códigoqueusamos

//gettheservermanagerinstanceusing(ServerManagermgr=newServerManager()){SiteCollectionsites=mgr.Sites;Sitesite=mgr.Sites[siteName];if(site!=null){ProcessStartInfostartInfo=newProcessStartInfo();startInfo.CreateNoWindow=false;startInfo.UseShellExecute=false;startInfo.WorkingDirectory=@"C:\Windows\System32\Inetsrv";
                    startInfo.FileName = "appcmd.exe";
                    startInfo.WindowStyle = ProcessWindowStyle.Hidden;
                    startInfo.Arguments = string.Format("set site /site.name:\"{0}\" /+bindings.[protocol='https',bindingInformation='{1}:443:{2}']", siteName, ipAddress, hostHeader);

                    using (Process exeProcess = Process.Start(startInfo))
                    {
                        exeProcess.WaitForExit();
                        return true;
                    }
                }
                else
                    throw new Exception("Site: " + siteName + " does not exist.");
            }
    
por aron 21.12.2012 / 19:13

1 resposta

1

Supondo que o appcmd interaja com o IIS8 exatamente da mesma maneira que com o IIS7 (ainda não discutiu com ele), a resposta é NÃO .

A terminação SSL é tratada na pilha HTTP antes que a solicitação chegue ao IIS. Por esse motivo, a atribuição de certificado a terminal é tratada pelo sistema operacional, não pelo IIS. O appcmd.exe apenas atualiza os arquivos de configuração do IIS, ele não interage com as dependências do SO, como a atribuição de certificados.

Quando você usa appcmd set site , está efetivamente redefinindo / substituindo a configuração anterior do site.

Para atualizar os mapeamentos de certificado para ponto de extremidade, você precisa usar netsh.exe , conforme descrito em: link

netsh http add sslcert ipport=0.0.0.0:443 certhash=baf9926b466e8565217b5e6287c97973dcd54874 appid={ab3c58f7-8316-42e3-bc6e-771d4ce4b201}

em que baf9926b466e8565217b5e6287c97973dcd54874 é a impressão digital do certificado e 0.0.0.0:443 é o ponto de extremidade de IP ( 0.0.0.0 significa o mesmo que "Qualquer não atribuído")

ATUALIZAÇÃO: Se você sempre usa endpoints existentes para ligações HTTPS (por exemplo, sempre "Any Unassigned": 443), acredito que você possa superar esse problema com êxito, fazendo o backup da seguinte chave do Registro (incluindo subchaves):

HKLM\SYSTEM\CurrentControlSet\services\HTTP\Parameters\SslBindingInfo

Escreva de volta no registro depois de executar appcmd set site

    
por 21.12.2012 / 19:28