Протокол 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%)
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
- 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 - You have installed Apache web server to C:\Apache24 on Windows.
- You have setup Apache to run as a service in Windows.
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.
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.
- key (e.g private.key) – your key file. Don’t share this with anyone publicly
- Certificate (e.g certificate.crt) – actual SSL/TLS certificate for your domain
- 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
- SSLCertificateFile – Certificate CRT file path
- SSLCertificateKeyFile – Private key file path
- 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.
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
Обновлено:
Опубликовано:
Используемые термины: Apache, CentOS, Ubuntu, FreeBSD.
Инструкция написана для операционных систем на базе UNIX.
Получение сертификата
Модуль Apache для работы с SSL
Настройка веб-сервера
Проверка
Редирект с http на https
Apache + NGINX
Шаг 1. Создание сертификата
Для боевого сервера, сертификат должен быть получен от доверенного центра сертификации — либо локального для компании, либо коммерческого. Или получен бесплатно от Let’s Ecnrypt.
Для тестовой среды можно сгенерировать самоподписанный сертификат. Для этого сперва переходим в рабочую папку.
а) на Red Hat / CentOS:
cd /etc/httpd
б) на Debian / Ubuntu:
cd /etc/apache2
в) во FreeBSD:
cd /usr/local/etc/apache24
Создаем папку для сертификатов и переходим в нее:
mkdir ssl ; cd ssl
И генерируем сертификат:
openssl req -new -x509 -days 1461 -nodes -out cert.pem -keyout cert.key -subj «/C=RU/ST=SPb/L=SPb/O=Global Security/OU=IT Department/CN=test.dmosk.local/CN=test»
* в данном примере созданы открытый и закрытый ключи на 4 года (1461 день); значения параметра subj могут быть любыми в рамках тестирования.
Шаг 2. Установка модуля SSL для Apache
Прежде, чем устанавливать модуль, выполняем команду:
apachectl -M | grep ssl
Если видим строчку, на подобие:
ssl_module (shared)
Спускаемся к шагу 3 данной инструкции.
Иначе, устанавливаем httpd ssl_module.
а) Для CentOS:
yum install mod_ssl
б) Для Ubuntu/Debian:
a2enmod ssl
в) Для FreeBSD:
Открываем файл конфигурации apache:
ee /usr/local/etc/apache24/httpd.conf
* подразумевается, что используется apache 2.4.
Находим и снимаем комментарии со следующих строчек:
…
LoadModule ssl_module libexec/apache24/mod_ssl.so
…
Include etc/apache24/extra/httpd-ssl.conf
…
И ставим комментарии в следующих строках:
#<IfModule ssl_module>
#SSLRandomSeed startup builtin
#SSLRandomSeed connect builtin
#</IfModule>
Чтобы настройки применились, необходимо перезапустить веб-сервер одной из команд:
systemctl restart httpd
systemctl restart apache2
service apache2 restart
* первая, как правило, используется в системах на базе RPM, вторая — DEB, третья — BSD.
Шаг 3. Настройка Apache
Выходим из папки ssl:
cd ..
Открываем файл с настройкой виртуальный доменов.
Для CentOS:
vi conf.d/site.conf
* где site.conf — конфигурационный файл для конкретного сайта
Для Ubuntu/Debian:
vi sites-enabled/site
Для FreeBSD:
ee extra/httpd-vhosts.conf
В открытый файл добавляем следующее:
<VirtualHost *:443>
ServerName site.ru
DocumentRoot /var/www/apache/data
SSLEngine on
SSLCertificateFile ssl/cert.pem
SSLCertificateKeyFile ssl/cert.key
#SSLCertificateChainFile ssl/cert.ca-bundle
</VirtualHost>
* где:
- ServerName — домен сайта;
- DocumentRoot — расположение файлов сайта в системе;
- SSLCertificateFile и SSLCertificateKeyFile — пути до файлов ключей, которые были сгенерированы на шаге 1;
- SSLCertificateChainFile — при необходимости, путь до цепочки сертификатов (если используем не самоподписанный сертификат).
Проверяем корректность настроек в Apache:
apachectl configtest
Если видим:
Syntax OK
Перечитываем конфигурацию apache:
apachectl graceful
Шаг 4. Проверка работоспособности
Открываем браузер и переходим на наш сайт, добавив https://. При использовании самоподписного сертификата (как в нашем случае), обозреватель выдаст предупреждение, что передача данных не безопасна. Подтверждаем наше намерение открыть сайт. Если все работает, переходим к шагу 5.
Если сайт не заработал, пробуем найти причину по log-файлу. Как правило, он находится в каталоге /var/log/apache или /var/log/httpd.
Шаг 5. Настройка редиректа
Чтобы все запросы по http автоматически перенаправлялись на https, необходимо настроить перенаправление (redirect). Есть несколько способов это сделать.
В конфигурационном файле
Открываем файл с настройкой виртуальных доменов (как в шаге 3) и дописываем следующее:
<VirtualHost *:80>
ServerName site.ru
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>
* в конкретном примере, мы перенаправили все запросы для сайта site.ru.
** обратите особое внимание, что если у Вас уже есть VirtualHost *:80 для настраиваемого сайта, необходимо его закомментировать или отредактировать.
В файле .htaccess
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Установка модуля rewrite
Чтобы перенаправление работало в Apache, необходимо установить модуль rewrite.
а) в CentOS открываем конфигурационный файл и проверяем наличие строки:
vi /etc/httpd/conf.modules.d/00-base.conf
LoadModule rewrite_module modules/mod_rewrite.so
* если ее нет, добавляем; если она закомментирована, снимаем комментарий.
systemctl restart httpd
б) в Ubuntu:
a2enmod rewrite
systemctl restart apache2
Apache + NGINX
При использовании веб-сервера на базе и Apache и NGINX, как правило, наружу смотрит последний. В таком случае, именно он будет отвечать на http-запросы, и в таком случае нужно настраивать SSL на NGINX.
О чем пойдет речь?
Безопасность для многих всегда идет на первом месте, многие интернет-гиганты, типа Google даже добавляют в свои браузеры предупреждения, что соединение не безопасно, если на сайте не используется SSL-сертификат.
1С:Предприятие тоже может работать по протоколу HTTPS.
Мы предлагаем статью-инструкцию, как настроить HTTPS в Apache таким образом, чтобы 1С:Предприятие работало без проблем через SSL.
Ну что же начнем…
Для начала установим Apache. Рассмотрим это для 1С:Предприятие x86-64 и для Windows.
1. Идем на сайт https://www.apachehaus.com/cgi-bin/download.plx и качаем файл httpd-2.4.55-o111s-x64-vs17.zip (цифры на момент скачивания могут быть другими).
2. Устанавливаем Apache.
Первое что нужно сделать — установить Visual C++ 2008 Redistributable Package. После его установки распаковываем архив в корневой каталог любого диска. Например c:\Apache24.
Для проверки работоспособности делаем следующее:
- открываем командную строку (нажимаем Win+r и в появившееся окно вводим cmd)
- переходим на диск, куда распаковали Апач (например x:)
- переходим в директорию с исполняемыми файлами Апач (например cd \Apache 24\bin)
- запускаем Апач (httpd.exe + Enter). Если не появилось ошибок, то Апач запущен. Предупреждения не останавливают работу сервера
- открываем браузер и вводим адрес http://localhost. Если все сделано правильно и без ошибок, то отобразится приветственная страница Апача
3. Теперь зарегистрируем Апач как сервис в системе, что бы он стартовал самостоятельно. Это делается так:
- открываем нашу любимую командную строку от имени администратора
- переходим в папку с распакованным Апачем (например cd \Apache 24\bin)
- выполняем httpd -k install
- и запускаем Апач командой httpd -k start
Настройка Apache по SSL
4. Отлично. Apache установлен, теперь давайте настроем его работу по SSL.
Находим в папке c:\Apache 24\conf файл httpd.conf
Дописываем строку Listen 443
Это стандартный порт HTTPS. Заставляем Apache слушать и этот порт тоже. Если нам не нужен стандартный 80-ый порт и мы не планируем его использовать, то строку Listen 80 можно закомментировать добавив символ # (решетки) в начале строки. Так же имейте ввиду, что при изменении файлов в папке Program Files потребуется открытие файла в режиме администратора.
Раскомментируем в файле httpd.conf строчку
#LoadModule ssl_module modules/mod_ssl.so
Убрав символ #. Т.е. строка должна стать такой:
LoadModule ssl_module modules/mod_ssl.so
4. В конце файла httpd.conf изменяем
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
на:
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
SSLSessionCache none
</IfModule>
Записываем файл httpd.conf
5. Из каталога bin установленной папки с Apache скопируем файлы ssleay32.dll и libeay32.dll в C:\Windows\System32. Так же скопируем файл openssl.cnf из папки c:\Apache 24\conf\ в папку c:\Apache 24\bin\.
6. Запустим редактор реестра regedit (Пуск > Выполнить ввести текст regedit и нажать Enter) откроется окно реестра в нем найдем ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Apache2.4
В этой ветке найдем переменную ImagePath и два раза кликнем на ней.
Добавим ключ запуска -D ssl
7. Добавим SSL-сертификаты для домена. Тут есть варианты…
7.1. Если у Вас уже есть SSL-сертификаты для домена, то создайте папку ssl в папке C:\Apache 24\conf и переместите их туда (файлы *.key и *.cert). Идем на шаг 8.
7.2. Если у Вас нет SSL-сертификатов, то вы можете их сгенерировать самостоятельно.
7.2.1. Открываем командную строку в режиме администратора и переходим в папку bin Apache. Вводим команду:
cd «C:\Apache 24\bin»
7.2.2. Далее вводим:
openssl req -config openssl.cnf -new -out ssl.csr
Идем по шагам в командной строке и заполняем необходимые поля. То, что вы введете не принципиально. Самое главное на этом этапе надо запомнить пароль (когда спросит pass phrase)
7.2.3. Выполним:
openssl rsa -in privkey.pem -out ssl.key
Спросит пароль, который вы вводили ранее.
7.2.4. Затем:
openssl x509 -in ssl.csr -out ssl.cert -req -signkey ssl.key -days 3000
days — это срок действия сертификата в днях.
7.2.5. Ну и наконец:
openssl x509 -in ssl.cert -out ssl.der.crt -outform DER
7.2.6. Создадим папку ssl в C:\Apache 24\conf и переместим из папки bin файлы ssl.key и ssl.cert (а вообще можно все сразу туда скопировать, что было получено на шагах 7.2.1. — 7.2.5) из C:\Apache 24\bin в C:\Apache 24\conf\ssl.
8. Снова открываем файл httpd.conf из папки C:\Apache 24\conf и добавляем секцию VirtualHost в самый конец файла httpd.conf:
<VirtualHost demo.soft.ru:443>
SSLEngine On
SSLCertificateFile conf/ssl/ssl.cert
SSLCertificateKeyFile conf/ssl/ssl.key
</VirtualHost>
Вместо адреса demo.soft.ru замените на свой сайт или IP-адрес, а можно вообще поставить звездочку (*) и будет *:443 (это означает, что сработает для всех запросов). Ну и если у вас есть свои ключи, и вы их не генерировали сами, то переименуйте ssl.cert и ssl.key
9. Перезапустим Apache. Открываем Monitor в правом нижнем углу, щелкнем по иконке и нажимаем restart. Если все хорошо, то Apache запустится без ошибок и появится зеленый значок.
10. Пробуем открыть сайт через HTTPS. В нашем случае можно и так https://localhost и вот так https://demo.soft.ru:
Обратите внимание на то, что сертификат самоподписанный и службы типа антивируса Касперского понимают, что дело не очень… Это нормально, так как ваш сертификат не был изготовлен корневыми центрами сертификации. Но если вы захотите использовать https внутри организации, то почему бы и нет?
11. Теперь попробуем запустить 1С. В браузере открывается:
Теперь попробуем открыть базу через тонкий клиент и если мы использовали самодписанный сертификат то тут нас ждет разочарование:
Ошибка HTTP при обращении к серверу … Удаленный узел не прошел проверку.
12. Дело в том, что сервер 1С содержит собственный контроль достоверности HTTPS-соединений и корневых центров.
Необходимо открыть папку сервера 1С:Предприятия c:\Program Files\1cv8\8.3.15.1747\bin\ и в ней найти файл cacert.pem
Он отвечает как раз за эти центры сертификации.
Открываем командную строку и в ней выполняем команду:
openssl x509 -inform der -in ssl.der.crt -out ssl.pem -text -fingerprint -md5
После выполнения команды на экране Вы увидите Fingerprint. Скопируйте его. Это будет строка вида:
MD5 Fingerprint=64:5C:11:03:46:F1:22:9A:5B:C3:DD:AA:CC:EE:FF:A3
Откройте файл cacert.pem в папка 1С, перейдите в конец файла и с этой строки начинайте добавление своего сертификата в файл cacert.pem. После строки контрольной суммы сертификата, нужно добавить в файл cacert.pem содержимое файла, в который Вы экспортировали сертификат.
После этого запуск тонкого клиента будет работать без ошибок.
Если же и после этого есть ошибки, то можно вообще заставить клиент 1С не проверять сертификат. Для этого необходимо отредактировать информационную базу:
Далее:
Ну и наконец заветное окно:
Пробуем запустить и…
Все замечательно работает по https.
Отлично. Вы все настроили!