Как установить ssl сертификат на apache windows

Протокол HTTPS позволяет передавать данные между сайтом и пользователем в зашифрованном виде, то есть посторонние лица не могут увидеть содержимое передаваемых данных и изменить их.

Веб-сервер Apache поддерживает работу HTTPS. Для настройки HTTPS на Apache нужен SSL сертификат. Точнее говоря, «SSL сертификат» включает в себя приватный ключ и публичный ключ (сертификат). Также вместе с SSL ключами дополнительно могут присылаться сертификаты центра сертификации, корневой сертификат.

Сертификаты SSL

SSL сертификаты можно разделить на два вида: валидные и самоподписанные.

Сертификат SSL можно сгенерировать у себя на компьютере. Причём можно сгенерировать для любого доменного имени. Но к таким сертификатам у веб-браузеров нет доверия. Поэтому если открыть сайт, защищённый таким сертификатом, то веб-браузер напишет ошибку, что сертификат получен из ненадёжного источника и либо запретит открывать этот сайт, либо предложит перейти на сайт на ваш страх и риск. Это так называемые «самоподписанные сертификаты». Чтобы браузер не выдавал ошибку о ненадёжного сертификате, его нужно добавить в список доверенных. Такие сертификаты подойдут для тестирования веб-сервера и обучению настройки веб-сервера для работы с SSL и HTTPS. Ещё такой сертификат можно использовать на сайте, к которому имеет доступ ограниченный круг лиц (несколько человек) — например, для сайтов в локальной сети. В этом случае они все могут добавить сертификат в доверенные.

Для реального сайта такой сертификат не подойдёт.

Для рабочего окружения нужен валидный сертификат, его можно получить двумя способами:

1) получить тестовый сертификат на 3 месяца (затем его можно продлить)

2) купить сертификат — в этом случае он действует от года и более

Валидный сертификат отличается от самоподписанного тем, что сторонний сервис удостоверяет подлинность этого сертификата. Собственно, оплачивается именно эта услуга удостоверения, а не выдача сертификата.

Данная статья посвящена вопросу, как настроить Apache в Windows для работы с протоколом HTTPS, будет показано, как подключить SSL сертификаты к Apache в Windows. Поэтому для целей тестирования и обучения нам хватит самоподписанного сертификата.

Как сгенерировать SSL сертификат в Windows

У меня веб-сервер установлен в папку C:\Server\bin\Apache24, поэтому если у вас он в другой директории, то подправьте команды под свои условия.

Откройте командную строку Windows (Win+x, далее выберите «Windows PowerShell (администратор)»). В командной строке введите команды:

cmd
cd C:\Server\bin\Apache24\bin\
set OPENSSL_CONF=C:\Server\bin\Apache24\conf\openssl.cnf
openssl.exe genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out localhost.key
openssl.exe req -new -key localhost.key -out localhost.csr

При вводе последней команды появятся запросы на английском языке. Ниже следует их перевод.

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----

Перевод:

Вас попросят ввести информацию, которая будет включена в запрос вашего сертификата. То, что вы будете вводить, называется Distinguished Name или DN. Там всего несколько полей, которые можно оставить пустыми. В некоторых полях будут значения по умолчанию. Если вы введёте ‘.’, то поле будет оставлено пустым.

Далее:

Country Name (2 letter code) [AU]:

Перевод:

Двухбуквенное имя страны (двухбуквенный код)

Далее:

State or Province Name (full name) [Some-State]:

Перевод:

Название штата или провинции/области (полное имя)

Далее:

Locality Name (eg, city) []:

Перевод:

Название населённого пункта (например, города)

Далее:

Organization Name (eg, company) [Internet Widgits Pty Ltd]:

Перевод:

Название организации (т.е. компании).

Далее:

Organizational Unit Name (eg, section) []:

Перевод:

Подразделение организации (т.е. отдел)

Далее:

Common Name (e.g. server FQDN or YOUR name) []:

Перевод:

Общее имя (например, FQDN сервера или ВАШЕ имя). Это самая важная часть — здесь нужно ввести доменное имя. Можете ввести localhost.

Далее:

Email Address []:

Перевод:

Адрес электронной почты

Далее:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

Перевод:

Пожалуйста, введите следующие «дополнительные» атрибуты для отправки с вашим запросом сертификата
Пароль запроса:
Опциональное имя компании:

Теперь выполните команду:

openssl.exe x509 -req -days 365 -in localhost.csr -signkey localhost.key -out localhost.crt

В результате в каталоге C:\Server\bin\Apache24\bin\ должны появиться три новых файла:

  • localhost.key
  • localhost.csr
  • localhost.crt

Из них нам понадобятся только два:

  • localhost.key
  • localhost.crt

Как в Windows для Apache подключить SSL сертификаты

При использовании сертификатов для настройки реального веб-сайта, удобнее создать виртуальный хост с примерно следующими настройками:

LoadModule ssl_module modules/mod_ssl.so
 
Listen 443
<VirtualHost *:443>
    ServerName www.example.com
    SSLEngine on
    SSLCertificateFile "/путь/до/www.example.com.crt"
    SSLCertificateKeyFile "/путь/до/www.example.com.key"
</VirtualHost>

Для настройки использования SSL на локальном веб-сервере Apache в Windows следуйте инструкции ниже (в моём случае веб-сервер установлен по этой инструкции, если у вас не так, то отредактируйте пути до файлов).

В каталоге C:\Server\ создайте новую папку certs и переместите туда файлы localhost.key и localhost.crt.

В директории C:\Server\bin\Apache24\conf\ откройте текстовым редактором файл httpd.conf. В самый низ добавьте туда строки:

LoadModule ssl_module modules/mod_ssl.so

Listen 443
<VirtualHost _default_:443>
    DocumentRoot "c:/Server/data/htdocs/"
    ServerName localhost:443
    ServerAdmin admin@example.com
    ErrorLog "${SRVROOT}/logs/error-ssl.log"
    TransferLog "${SRVROOT}/logs/access-ssl.log"

    SSLEngine on

    SSLCertificateFile "C:\Server\certs\localhost.crt"
    SSLCertificateKeyFile "C:\Server\certs\localhost.key"
</VirtualHost>

Обратите внимание, что вам может понадобиться отредактировать следующие директивы

  • DocumentRoot — укажите путь до сайтов на сервере
  • ServerName — укажите имя вашего хоста, если это не локалхост

Обратите внимание, что мы не просто поместили эти строки в конфигурационный файл, а заключили их в контейнер VirtualHost. Дело в том, что если этого не сделать, то директива SSLEngine on включит SSL для всего веб-сервера, и даже при попытке открыть сайты на 80 порту, эти подключения будут обрабатываться как HTTPS, что вызовет ошибку «Bad Request. Your browser sent a request that this server could not understand». По этой причине эти настройки помещены в контейнер виртуального хоста. Обратите внимание, что используется ключевое слово _default_ — то есть сюда будут собираться все запросы на 443 порт если они не предназначены для другого хоста, который также настроен. То есть при желании вы можете создать больше виртуальных хостов для работы с HTTPS, при этом вместо _default_ указывайте IP хоста или символ * (звёздочка).

Связанная статья: Виртуальный хост Apache по умолчанию. _default_ и catch-all в Apache

После этого сохраните изменения, закройте файл и перезапустите веб-сервер.

c:\Server\bin\Apache24\bin\httpd.exe -k restart

Для проверки сделанных изменений, перейдите по адресу https://localhost/ (протокол HTTPS). Поскольку сертификат является самоподписанным, то появится такое сообщение:

К самоподписанным сертификатам нет доверия и эту ошибку нельзя убрать без добавления таких сертификатов в доверенные. Для перехода нажмите «Всё равно продолжить».

Как уже было сказано, валидные сертификаты нужно покупать, либо использовать тестовые. В чём подвох использования тестовых сертификатов? Формально, в какой-то момент их могут перестать выдавать, но, на самом деле, уже сейчас многие сайты годами живут с такими тестовыми сертификатами. На современных хостингах настроено автоматическое подключение и продление таких сертификатов — это просто супер удобно. Обычно на хостингах предусмотрено некоторое количество абсолютно бесплатных SSL сертификатов с автоматическим продлением, но за небольшую плату (10 рублей в месяц), можно подключить тестовые сертификаты для любого количества сайтов. Пример такого хостинга здесь.

Решение проблем

При некоторых условиях может возникнуть следующая ошибка:

Can't open C:\Program Files\Common Files\SSL/openssl.cnf for reading, No such file or directory
9112:error:02001003:system library:fopen:No such process:crypto\bio\bss_file.c:72:fopen('C:\Program Files\Common Files\SSL/openssl.cnf','r')
9112:error:2006D080:BIO routines:BIO_new_file:no such file:crypto\bio\bss_file.c:79:
unable to find 'distinguished_name' in config
problems making Certificate Request
9112:error:0E06D06A:configuration file routines:NCONF_get_string:no conf or environment variable:crypto\conf\conf_lib.c:270:

Главная подсказка в первой строке: Can’t open C:\Program Files\Common Files\SSL/openssl.cnf for reading, No such file or directory — она означает, что возникла ошибка чтения файла C:\Program Files\Common Files\SSL/openssl.cnf из-за того, что он отсутствует.

Файл openssl.cnf поставляется с самим веб-сервером Apache и находится в папке conf. Поэтому есть несколько вариантов, как исправить эту ошибку. Например, можно создать нужные папки и скопировать туда этот файл. Но можно пойти более простым путём — на время создания сертификатов установить переменную окружения OPENSSL_CONF указав в ней правильный путь до файла.

Также нужно переключиться из PowerShell в обычную командную строку Windows, поскольку иначе переменная окружения почему-то не устанавливается. Допустим, сервер размещён в папке C:\Server\bin\Apache24\bin\, тогда файл openssl.cnf расположен по пути C:\Server\bin\Apache24\conf\openssl.cnf, в этом случае, чтобы исправить ошибку Can’t open C:\Program Files\Common Files\SSL/openssl.cnf for reading, No such file or directory нужно выполнить:

cmd
cd C:\Server\bin\Apache24\bin\
set OPENSSL_CONF=C:\Server\bin\Apache24\conf\openssl.cnf

Отредактируйте пути в этих командах в соответствии с вашей структурой папок.

Связанные статьи:

  • Ошибка «You’re speaking plain HTTP to an SSL-enabled server port» (РЕШЕНО) (100%)
  • Apache для Windows (51.2%)
  • Как запустить Apache на Windows (51.2%)
  • Документация по Apache на русском языке (51.2%)
  • Как подключить PHP к Apache на Windows (51.2%)
  • localhost (RANDOM — 51.2%)

SSL certificate helps you improve web traffic between client browser and your server, and increase data security. Here’s how to install SSL certificate on Apache Windows.

Here are the steps to install SSL certificate on Apache Windows.

1. Enable mod_ssl

mod_ssl is an Apache module required to install and manage SSL/TLS certificates. You can enable it in your Apache server by editing the main server configuration file.

Open Apache server configuration httpd.conf file at c:\Program Files\Apache Software Foundation\Apache2.2\conf\

Uncomment the following lines by removing # at their beginning:

#Loadmodule ssl_module modules/mod_ssl.so
#Include conf/extra/httpd-default.conf

Now they should appear as:

Loadmodule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-default.conf

Bonus Read : How to Generate CSR for SSL Certificate

2. Get SSL Certificate

Next, get the SSL/TLS certificate bundle from your certificate authority such as Namecheap, RapidSSL, Comodo, GoDadddy, Let’s Encrypt, etc. You can also use a free SSL provider like SSLForFree.

You will get 3 files from certificate authority.

  1. key (e.g private.key) – your key file. Don’t share this with anyone publicly
  2. Certificate (e.g certificate.crt) – actual SSL/TLS certificate for your domain
  3. Ca_bundle (e.g ca_bundle.crt) – Root/intermediate certificate

Bonus Read : How to Redirect non-www to www in Apache

3. Apache SSL Configuration

Now that we have setup the prerequisites, we will configure SSL certificate in Apache

Download the 3 files mentioned in step 2 to c:\Program Files\Apache Software Foundation\Apache2.2\conf\

Next, open Apache SSL configuration file httpd-ssl.conf at c:\Program Files\Apache Software Foundation\Apache2.2\conf\extras

Add the following lines in VirtualHost tag before </VirtualHost> line.

SSLEngine On
SSLCertificateFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/certificate.crt"
SSLCertificateChainFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/ca_bundle.crt"
SSLCertificateKeyFile "C:/Program Files/Apache Software Foundation/Apache2.2/conf/private.key"

You VirtualHost block will look something like this

<VirtualHost _default_:443>
DocumentRoot “Your Website's Root folder location” 
ServerName www.example.com:443
SSLEngine On
SSLCertificateFile "/etc/apache2/ssl/certificate.crt"
SSLCertificateChainFile "/etc/apache2/ssl/ca_bundle.crt"
SSLCertificateKeyFile "/etc/apache2/ssl/private.key"
</VirtualHost>

In the above lines, we use 3 Apache server directives

  1. SSLCertificateFile – Certificate CRT file path
  2. SSLCertificateKeyFile –  Private key file path
  3. SSLCertificateChainFile – CA bundle file path

Bonus Read : How to Redirect URL to Another URL

4. Test Apache Configuration and Restart Server

Restart Apache Server using its Server Manager

Now you have installed SSL certificate in Apache web server. Open a browser and visit https:// version of your domain (e.g https://www.example.com).

You will see a lock symbol next to your URL, in browser’s address bar, indicating that your website’s SSL/TLS certificate is working properly.

example.com https ssl tls

Hopefully, now you can configure SSL certificate in Apache for Windows.

Ubiq makes it easy to visualize data in minutes, and monitor in real-time dashboards. Try it Today!

Related posts:

  • About Author

mm

One of the rare installation scenarios is the setup of a SSL certificate for Apache 2.4 web server on Windows. Although it is always recommended to run Apache on Linux, installing SSL certificates for Apache 2.4 web server running on Windows is also easy.

Pre-Requisites/Assumptions

  1. You have the SSL certificate chain (SSL certificate and CA certificate) file and the private key file ready to setup.
    See: How To Get SSLCertificate for Website
  2. You have installed Apache web server to C:\Apache24 on Windows.
  3. You have setup Apache to run as a service in Windows.

apache 2.4 directory contents

Step 1: Place the files in the correct location

Copy the SSL certificate chain file (referred here as server.crt) and the Private key file (referred here as server.key) to the following directory on Windows:

C:\Apache24\conf

Step 2: Edit the Apache SSL configuration file

Find the Apache main configuration file on Windows:

C:\Apache24\conf\httpd.conf

Uncomment the following lines wherever they occur in the file:

LoadModule ssl_module modules/mod_ssl.so
Include conf/extra/httpd-ssl.conf
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

Now edit the following file:

C:\Apache24\conf\extra\httpd-ssl.conf

Modify VirtualHost_default directive. Keep all the default options as it is, but be sure to modify the following lines:

<VirtualHost _default_:443>
DocumentRoot "C:\Apache24\htdocs"
ServerName your_machine_name:443
ErrorLog "C:\Apache24\logs\error.log"
TransferLog "C:\Apache24\logs\access.log"
SSLCertificateFile "C:\Apache24\conf\server.crt"
SSLCertificateKeyFile "C:\Apache24\conf\server.key"
</VirtualHost>

You can keep the default port to 443, and make sure path to the SSL certificate is correct.

Step 3: Restart the Apache web server

You are almost done! Now open an exception in Windows Firewall for TCP port 443.

Then, restart Apache 2.4 service from Windows services.

Testing the SSL configuration is easy. After completing Step 3, just open the following URL in your web browser:

https://your_machine_name

If you see the web page in your browser then you have succeeded in setting up SSL on Apache 2.4 web server on Windows.

Настройка HTTPS на Apache и установка SSL необходима, чтобы обеспечить защиту данных пользователей на вашем веб-сайте. В инструкции ниже описана установка SSL-сертификата Comodo, GlobalSign и других, предоставляемых Рег.ру, и установка SSL, заказанных в других компаниях.

Активный SSL-сертификат

Перед установкой SSL-сертификата от Рег.ру перейдите к списку услуг и убедитесь, что услуга SSL-сертификата активна (значок зелёного цвета):


Установка SSL-сертификата на Apache 1

Если услуга SSL не активна, активируйте SSL-сертификат.

Установка SSL

После выпуска SSL на ваш контактный e-mail придёт письмо с данными для его установки, это:

  • сам сертификат;
  • корневой сертификат;
  • промежуточный сертификат.

Приватный ключ обычно генерируется при заказе SSL и сохраняется на ваш локальный ПК.

Установка на Ubuntu/Debian

Перед установкой SSL на Ubuntu/Debian необходимо включить модуль mod_ssl с помощью команды: a2enmod ssl.

Чтобы установить SSL:

  1. 1.

    Создайте на вашем сервере в каталоге /etc/ssl/ файлы domain_name.crt, private.key и chain.crt со следующим содержимым:

    • domain_name.crt — сам сертификат;
    • private.key — приватный ключ;
    • chain.crt — цепочка сертификатов, которая содержит сначала промежуточный сертификат и следом за ним корневой (с новой строки без пробелов и пустых строк).
  2. 2.

    Откройте файл конфигурации Apache. В зависимости от особенностей вашего сервера этот файл находится по одному из следующих адресов:

    • для CentOS: /etc/httpd/conf/httpd.conf;
    • для Debian/Ubuntu: /etc/apache2/apache2.conf;
    • если вы устанавливаете SSL-сертификат на OpenServer, используйте путь к его корневой папке.
      В конце файла создайте копию блока «VirtualHost». Укажите для блока порт 443 и добавьте внутри него строки:
    SSLEngine on
    
    SSLCertificateFile /etc/ssl/domain_name.crt
    
    SSLCertificateKeyFile /etc/ssl/private.key 
    
    SSLCertificateChainFile /etc/ssl/chain.crt

    Пример конфигурационного файла:


    Установка SSL-сертификата на Apache 2

  3. 3.

    Проверьте конфигурацию Apache до перезапуска командой: apachectl configtest

  4. 4.

Готово, вы настроили SSL-сертификат. Теперь настройте переадресацию для вашего сайта.

Настройка HTTPS на Apache

После установки SSL настройте редирект с HTTP на HTTPS. Редирект для Apache настраивается через файл .htaccess.

Чтобы осуществить переадресацию добавьте в конце файла .htaccess следующие строки:

RewriteEngine On

RewriteCond %{SERVER_PORT} !^443$

RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Подробнее про редирект через .htaccess вы можете узнать в статье: Редирект через .htaccess.

Также по инструкции вы можете настроить редирект с помощью Nginx на VPS.

Проверка установленного SSL

Вы можете проверить корректность установки SSL-сертификата по инструкции: Как проверить правильность установки SSL-сертификата?

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

Помогла ли вам статья?

Спасибо за оценку. Рады помочь 😊


 👍

В данной статье мы рассмотрим процесс установки SSL сертификата для сайта на сервере Apache 2.4 под операционной системой Windows. SSL (Secure Sockets Layer) используется для обеспечения безопасности передачи данных между клиентом и сервером, особенно важно, если на сайте присутствует передача конфиденциальной информации (пароли, данные пользователей и т.д.).

1. Подготовка к установке SSL сертификата:
Прежде чем приступить к установке SSL сертификата, убедитесь, что на вашем сервере установлен Apache 2.4 и он работает без ошибок. Также убедитесь, что у вас уже есть сам сертификат и закрытый ключ. Обычно они предоставляются компанией, у которой вы приобрели сертификат.

2. Проверка совместимости сертификата:
Перед установкой необходимо проверить, совместим ли ваш SSL сертификат с Apache 2.4. Для этого вам нужно убедиться, что сертификат поддерживает протокол SSLv3/TLSv1. Обратитесь к документации, предоставленной вашим сертификационным центром, чтобы узнать, какие протоколы поддерживает ваш SSL сертификат.

3. Получение сертификата и закрытого ключа:
Когда вы приобретаете SSL сертификат, сертификационный центр предоставляет вам файл сертификата в формате .crt или .pem и файл закрытого ключа в формате .key. Сохраните эти файлы в безопасном месте на вашем сервере.

4. Подготовка окружения:
Создайте папку для хранения SSL сертификатов и закрытых ключей на вашем сервере. Например, вы можете создать папку «C:\SSL» и скопировать в нее файлы .crt и .key.

5. Настройка файла конфигурации Apache:
Для того чтобы Apache мог использовать SSL сертификат, необходимо внести соответствующие изменения в файл httpd.conf. Откройте файл httpd.conf (обычно располагается по пути «C:\Apache24\conf») в текстовом редакторе.

6. Активация модуля SSL:
Убедитесь, что модуль SSL активирован. Найдите строку «LoadModule ssl_module modules/mod_ssl.so» и убедитесь, что перед ней нет символа «#». Если символ «#» присутствует, удалите его, чтобы активировать модуль SSL.

7. Настройка виртуального хоста:
Вам необходимо настроить виртуальный хост для вашего сайта, чтобы Apache знал, как использовать SSL сертификат. Найдите блок <VirtualHost> в файле httpd.conf и добавьте в него следующий код:

<VirtualHost *:443>
    DocumentRoot "C:\Apache24\htdocs"
    ServerName your-domain.com
    SSLEngine on
    SSLCertificateFile "C:\SSL\certificate.crt"
    SSLCertificateKeyFile "C:\SSL\private.key"
</VirtualHost>

Вместо «your-domain.com» укажите домен вашего сайта, а вместо «C:\SSL\certificate.crt» и «C:\SSL\private.key» укажите путь к вашему сертификату и закрытому ключу.

8. Перезапуск сервера:
Сохраните изменения в файле httpd.conf и перезапустите сервер Apache. Для этого вам потребуется административные привилегии. Откройте командную строку, выполните команду «httpd -k restart» и нажмите «Enter».

9. Проверка установки SSL сертификата:
Откройте веб-браузер и введите адрес вашего сайта (например, https://your-domain.com). Если всё настроено правильно, вы увидите зеленый замок в адресной строке, что означает, что SSL сертификат успешно установлен и ваш сайт защищен.

Это была подробная инструкция по установке SSL сертификата для сайта на сервере Apache 2.4 под операционной системой Windows. Установка SSL сертификата — важный шаг для обеспечения безопасности вашего сайта, поэтому следуйте указанным выше инструкциям, чтобы успешно выполнить эту задачу.

  • Как установить visual studio 2019 на windows
  • Как установить ssl сертификат windows server
  • Как установить the bat на windows 10
  • Как установить vim на windows
  • Как установить ssd и перенести на него windows 10