У меня есть поддомен, я хочу установить действительный SSL (возможно, бесплатный SSL). Раньше я заходил на свой сайт через общедоступный адрес моего сервера. Теперь я использую субдомен для доступа к своему сайту. Я хочу добавить действительный SSL на свой сервер, чтобы защитить свой сайт. Я использую XAMPP. Как мне правильно установить SSL, потому что при доступе к моему веб-сайту с помощью HTTPS я получаю NET::ERR_CERT_AUTHORITY_INVALID, и где я могу получить действительный сертификат SSL?
Как правильно установить SSL на мой сервер?
Ответы (4)
Самый популярный бесплатный SSL-сертификат, который вы можете получить на сайте letsencrypt.
Вот шаги, которые вы можете сделать, чтобы ваш сертификат работал на локальном компьютере (XAMPP):
- Создайте новую папку crt в расположении XAMPP по умолчанию C:\xampp\apache\crt
- Вставьте туда 2 файла: cert.conf и make-cert.bat
- Теперь отредактируйте cert.conf и запустите make-cert.bat. Измените текст {{DOMAIN}}, используя домен, который мы хотим использовать, в данном случае site.test, и сохраните.
Дважды щелкните make-cert.bat и введите домен site.test при появлении запроса. И просто введите другой вопрос, поскольку мы уже установили значение по умолчанию из cert.conf.
- После этого вы увидите созданную папку site.test. В этой папке у нас будут server.crt и server.key. Это наш SSL-сертификат.
Дважды щелкните server.crt, чтобы установить его в Windows, чтобы Windows могла ему доверять.
Затем выберите «Поместить все сертификаты в следующее хранилище», нажмите «Обзор» и выберите «Доверенные корневые центры сертификации».
- Отредактируйте файл хоста
5.1 Откройте блокнот от имени администратора.
5.2 Отредактируйте C:\Windows\System32\drivers\etc\hosts (файл не имеет расширения)
5.3 Добавьте это в новую строку:
127.0.0.1 site.test
Это скажет окнам загружать XAMPP, когда мы посещаем http://site.test. Вы можете попробовать, и он покажет панель управления XAMPP. страница.
- Добавьте сайт в XAMPP conf.
Нам нужно включить SSL для этого домена и сообщить XAMPP, где мы храним сертификат SSL. Итак, нам нужно отредактировать C:\xampp\apache\conf\extra\httpd-xampp.conf
И добавьте этот код внизу:
## site.test
<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs"
ServerName site.test
ServerAlias *.site.test
</VirtualHost>
<VirtualHost *:443>
DocumentRoot "C:/xampp/htdocs"
ServerName site.test
ServerAlias *.site.test
SSLEngine on
SSLCertificateFile "crt/site.test/server.crt"
SSLCertificateKeyFile "crt/site.test/server.key"
</VirtualHost>
После этого вам нужно будет перезапустить Apache в XAMPP. Это очень просто, просто откройте панель управления XAMPP и остановите и снова запустите модуль Apache.
- Перезапустите браузер
Возможно, самым популярным бесплатным провайдером SSL (и тем, который я использую) будет LetsEncrypt.
Шаги по установке будут различаться в зависимости от ОС, например это для Ubuntu
Вы можете получить бесплатный ssl по этой ссылке [1]. Вам нужно выбрать программное обеспечение, которое вы используете, например Apache, и выбрать, какую операционную систему вы используете, в моем случае я использую Debian 9. Если вы не уверены в своей системе, вам нужно подключиться к серверу по ssh и выполнить команду "$ cat /etc/*release", если вы используете Linux. После того, как вы выбрали правильное программное обеспечение и систему, вам будут даны инструкции о том, как получить SSL.
Вы можете следовать инструкциям здесь [2] по установке SSL.
Надеюсь, эта информация поможет вам.
[1] https://certbot.eff.org/lets-encrypt/debianstretch-apache
[2] https://www.sslshopper.com/apache-server-ssl-installation-instructions.html
Наиболее распространенным решением для бесплатного SSL является LetsEncrypt.
LetsEncrypt предоставляет множество клиентов для большинства ОС. Я рекомендую использовать клиент ACMESharp.
Выполните следующие шаги в Powershell (как описано в официальной документации проекта )
1) Установите ACMESharp
Import-Module ACMESharp
2) Инициализировать хранилище
Initialize-ACMEVault
3) Создайте новую регистрацию ACME, используя электронную почту
New-ACMERegistration -Contacts mailto:[email protected] -AcceptTos
4) Отправьте идентификатор домена
New-ACMEIdentifier -Dns myserver.example.com -Alias dns1
5) Подтвердите право собственности на домен
Выберите метод, подтверждающий, что вы являетесь владельцем домена, я рекомендую HTTP Challenge.
(Complete-ACMEChallenge dns1 -ChallengeType http-01 -Handler manual).Challenge
Если вы не получаете в выходных данных подробности задачи, такие как путь к файлу и содержимое, попробуйте следующее:
(Update-ACMEIdentifier dns1 -ChallengeType http-01).Challenges | Where-Object {$_.Type -eq "http-01"}
Вам, вероятно, придется разрешить доступ к скрытым местоположениям через apache, чтобы задача могла достигать .well-known location. Вы можете использовать что-то вроде следующей конфигурации, в зависимости от ваших пользовательских потребностей (как указано в и этот пост):
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_FILENAME} !.well-known/
RewriteRule "(^|/)\.(?!well-known)" - [F]
</IfModule>
6) Отправьте ответ на запрос, чтобы подтвердить право собственности на домен (метод HTTP)
Submit-ACMEChallenge dns1 -ChallengeType http-01
Задача не обновляется мгновенно, поэтому попробуйте обновить результаты, пока они не станут действительными.
(Update-ACMEIdentifier dns1 -ChallengeType http-01).Challenges |Where-Object {$_.Type -eq "http-01"}
Как только это действительно, попробуйте:
Update-ACMEIdentifier dns1
7) Запросить и получить сертификат
New-ACMECertificate dns1 -Generate -Alias cert1
Submit-ACMECertificate cert1
Сертификат может быть выдан не сразу, поэтому попробуйте:
Update-ACMECertificate cert1
Пока все в порядке.
8) Экспортировать открытый и закрытый ключи
Закрытый ключ:
Get-ACMECertificate cert1 -ExportKeyPEM "path\to\cert1.key.pem"
Запрос на подпись сертификата:
Get-ACMECertificate cert1 -ExportCsrPEM "path\to\cert1.csr.pem"
Позволяет зашифровать общедоступный сертификат:
Get-ACMECertificate cert1 -ExportCertificatePEM "path\to\cert1.crt.pem" -ExportCertificateDER "path\to\cert1.crt"
Публичный сертификат эмитента:
Get-ACMECertificate cert1 -ExportIssuerPEM "path\to\cert1-issuer.crt.pem" -ExportIssuerDER "path\to\cert1-issuer.crt"
В любом случае вам практически не нужно все вышеперечисленное, но закрытый ключ абсолютно необходим, так что храните его в безопасности.
Для получения дополнительной документации посетите репозиторий github проекта.