Создать самоподписанный сертификат

Откройте PowerShell от имени администратора и выполните:

New-SelfSignedCertificate -DnsName "имя_вашего_сервера" -CertStoreLocation "cert:\LocalMachine\My"

Внутри кавычек «имя_вашего_сервера» замените на имя вашего сервера, должно получиться примерно так:

New-SelfSignedCertificate -DnsName "server1" -CertStoreLocation "cert:\LocalMachine\My"

 Привязать сертификат к сайту в IIS

Должен отобразиться ваш сертификат.

Выбираем Default Web Site, в правой панели «Привязки…»

Переопубликовать базу 1С

Получить публичный сертификат (рекомендуется)

Если у вас есть доменное имя (например, 1c.company.ru), самый простой способ — использовать Let’s Encrypt через утилиту win-acme или letsencrypt-win-simple. Она автоматически выпустит сертификат и привяжет его к IIS .

Также можно приобрести сертификат в коммерческом центре сертификации и импортировать его вручную.

🤖 PowerShell-скрипт для полной автоматизации

# ==============================================
# Запуск от имени Администратора
# ==============================================
if (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
    Write-Host "❌ Ошибка: Запустите PowerShell от имени Администратора!" -ForegroundColor Red
    exit 1
}

# ==============================================
# Параметры (измените под себя)
# ==============================================
$siteName = "Default Web Site"          # Имя вашего сайта в IIS
$dnsName = "localhost"                  # Для самоподписанного сертификата (или имя сервера)
$publicationName = "my_base"            # Имя публикации 1С (если нужно переопубликовать)

# ==============================================
# 1. Создание самоподписанного сертификата
# ==============================================
Write-Host "📜 Создание самоподписанного сертификата..." -ForegroundColor Cyan
$cert = New-SelfSignedCertificate -DnsName $dnsName -CertStoreLocation "cert:\LocalMachine\My"
$thumbprint = $cert.Thumbprint
Write-Host "✅ Сертификат создан, отпечаток: $thumbprint" -ForegroundColor Green

# ==============================================
# 2. Привязка HTTPS к сайту
# ==============================================
Write-Host "🔗 Привязка HTTPS к сайту $siteName..." -ForegroundColor Cyan
Import-Module WebAdministration
# Удаляем существующую HTTPS-привязку, если есть
Get-WebBinding -Name $siteName -Protocol "https" | Remove-WebBinding
# Добавляем новую
New-WebBinding -Name $siteName -Protocol "https" -Port 443 -IPAddress "*"
# Привязываем сертификат
$binding = Get-WebBinding -Name $siteName -Protocol "https"
$binding.AddSslCertificate($thumbprint, "my")
Write-Host "✅ HTTPS привязка добавлена" -ForegroundColor Green

# ==============================================
# 3. Настройка HTTP → HTTPS перенаправления
# ==============================================
Write-Host "🔄 Настройка перенаправления HTTP -> HTTPS..." -ForegroundColor Cyan

# Проверяем, установлен ли URL Rewrite
$rewriteModule = Get-WindowsFeature Web-Url-Rewrite
if (-not $rewriteModule.Installed) {
    Write-Host "⚠️ Модуль URL Rewrite не установлен. Установка..." -ForegroundColor Yellow
    Install-WindowsFeature -Name Web-Url-Rewrite
    Write-Host "✅ URL Rewrite установлен. Требуется перезапуск IIS." -ForegroundColor Green
    iisreset
}

# Путь к конфигурационному файлу сайта
$webConfigPath = "$env:SystemRoot\System32\inetsrv\config\applicationHost.config"

# Создаём правило URL Rewrite через appcmd (альтернатива — прямое редактирование web.config)
$ruleXml = @"
<rule name="Redirect HTTP to HTTPS" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTPS}" pattern="^OFF$" />
    </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
</rule>
"@

# Применяем правило через appcmd (более надёжно)
& "$env:SystemRoot\System32\inetsrv\appcmd.exe" set config -section:system.webServer/rewrite/globalRules /+"[name='Redirect HTTP to HTTPS']" /commit:apphost

Write-Host "✅ Правило перенаправления добавлено" -ForegroundColor Green

# ==============================================
# 4. Переопубликация 1С (если нужно)
# ==============================================
$onecBinPath = "C:\Program Files\1cv8\8.3.25.1486\bin"   # Укажите ваш путь к платформе
$webinst = "$onecBinPath\webinst.exe"

if (Test-Path $webinst) {
    Write-Host "📦 Переопубликация базы 1С..." -ForegroundColor Cyan
    $publishPath = "C:\inetpub\wwwroot\$publicationName"
    & $webinst -ws IIS -dir $publishPath -wsdir $publicationName -publish
    Write-Host "✅ База переопубликована" -ForegroundColor Green
} else {
    Write-Host "⚠️ webinst.exe не найден. Переопубликуйте базу вручную через конфигуратор." -ForegroundColor Yellow
}

Write-Host "`n🎉 Настройка HTTPS завершена!" -ForegroundColor Green
Write-Host "   Ваша база доступна по адресу: https://$dnsName/$publicationName" -ForegroundColor Yellow