Как настроить SSL и HTTPS для WordPress

Настраивал недавно на нескольких WordPress сайтах SSL сертификаты.

Сайты были размещены на выделенном сервере под управление Ubuntu, по этому первым делом я создал директорию для сертификатов и перешел в неё:

sudo mkdir /etc/apache2/ssl
cd /etc/apache2/ssl

Включим модуль SSL для Apache2 если он не включен:

sudo a2enmod ssl

Далее сгенерировал сертификат:

sudo openssl req -nodes -newkey rsa:2048 -keyout /etc/apache2/ssl/example.com.key -out /etc/apache2/ssl/example.com.csr

В процессе генерации пришлось ответить на несколько вопросов:
Country Name (2 letter code) [AU]: UA (код страны)
State or Province Name (full name) [Some-State]: Sumy (область)
Locality Name (eg, city) []: Romny (город)
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Private person (частное лицо или имя организации)
Organizational Unit Name (eg, section) []: (пусто или имя отдела организации)
Common Name (e.g. server FQDN or YOUR name) []: example.com (имя домена, без http и https)
Email Address []: admin@example.com

Можно также подписать сгенерированный сертификат (это содержимое example.com.csr) у какого нибудь доменного регистратора.
Процедура стоит дешево и после неё при подключении не будет высвечиваться сообщение что сертификат не подписан.

Так как сайтов несколько, то в директории /etc/apache2/sites-enabled/ расположены конфигурационные файлы для каждого из них.
Выберу один из них и в самом конце после стандартной директивы:

<VirtualHost *:80> ...</VirtualHost>

добавим еще одну, но с 443 портом и укажем пути к сертификатам:

<VirtualHost *:443>
ServerAdmin admin@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/
        <Directory />
                Options -Indexes
                AllowOverride All
        </Directory>
        <Directory /var/www/example.com/>
                Options -Indexes
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/example_com.crt
SSLCertificateKeyFile /etc/apache2/ssl/example_com.key
SSLCertificateChainFile /etc/apache2/ssl/example_com.ca-bundle
ErrorLog /var/log/apache2/example_error-ssl.log
LogLevel warn
CustomLog /var/log/apache2/example_access-ssl.log combined
</VirtualHost>

После изменений проверим конфигурацию и перезапустим apache2:

sudo apachectl configtest 
sudo service apache2 restart

Чтобы можно было зайти в WordPress и админку только по HTTPS в wp-config.php раскомментируем следующие параметры:

define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

Также можно в админке, в «Настройки» — «Общие» изменить адрес сайта с http:// на https://.

Все, теперь сайт можно открывать по https.

Добавить комментарий