Подтвердить что ты не робот

Как установить SSL на localhost в Ubuntu?

Я хочу установить SSL-сертификат на свой localhost в среде Ubuntu, потому что я не могу напрямую работать на производственном сервере. Я должен поместить некоторые условия в свой код на основе того, является ли страница HTTP или HTTPS.

Как я могу это сделать?

4b9b3361

Ответ 1

Включите модуль apache, введя:

sudo a2enmod ssl

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

sudo service apache2 restart

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

sudo mkdir /etc/apache2/ssl

Теперь, когда у нас есть место для размещения нашего ключа и сертификата, мы можем создать их оба за один шаг, набрав:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt

Раздел вопросов выглядит примерно так:

Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New York
Locality Name (eg, city) []:New York City
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Your Company
Organizational Unit Name (eg, section) []:Department of Kittens
Common Name (e.g. server FQDN or YOUR name) []:your_domain.com
Email Address []:[email protected]

Теперь откройте файл с правами root:

sudo nano /etc/apache2/sites-available/default-ssl.conf

С удалением комментариев файл выглядит примерно так:

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin [email protected]
        DocumentRoot /var/www/html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        SSLEngine on
        SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
        SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                        SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /usr/lib/cgi-bin>
                        SSLOptions +StdEnvVars
        </Directory>
        BrowserMatch "MSIE [2-6]" \
                        nokeepalive ssl-unclean-shutdown \
                        downgrade-1.0 force-response-1.0
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
    </VirtualHost>
</IfModule>

В конце концов, это будет выглядеть примерно так. Записи были изменены из исходного файла:

<IfModule mod_ssl.c>
    <VirtualHost _default_:443>
        ServerAdmin [email protected]
        ServerName your_domain.com
        ServerAlias www.your_domain.com
        DocumentRoot /var/www/html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        SSLEngine on
        SSLCertificateFile /etc/apache2/ssl/apache.crt
        SSLCertificateKeyFile /etc/apache2/ssl/apache.key
        <FilesMatch "\.(cgi|shtml|phtml|php)$">
            SSLOptions +StdEnvVars
        </FilesMatch>
        <Directory /var/www/html>
            SSLOptions +StdEnvVars
            DirectoryIndex index.php
            AllowOverride All
            Order allow,deny
            Allow from all
        </Directory>
        BrowserMatch "MSIE [2-6]" \
                        nokeepalive ssl-unclean-shutdown \
                        downgrade-1.0 force-response-1.0
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
    </VirtualHost>
</IfModule>

Сохраните и выйдите из файла, когда вы закончите. Теперь, когда мы настроили виртуальный хост с поддержкой SSL, нам нужно включить его.

sudo a2ensite default-ssl.conf

Затем нам нужно перезапустить Apache для загрузки нашего нового файла виртуального хоста:

sudo service apache2 restart

Теперь он запускает ваш сайт с помощью https..!!