Настраивал однажды на нескольких 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) []: ixnfo.com (имя домена, без http и https)
Email Address []: test@ixnfo.com
Можно также подписать сгенерированный сертификат у какого нибудь доменного регистратора (это содержимое ixnfo.com.csr).
Процедура стоит дешево и после неё при подключении не будет высвечиваться сообщение что сертификат не подписан.
Либо установим подписанный бесплатный от Let’s Encrypt как я описывал в статье:
Установка Certbot в Ubuntu
Так как сайтов несколько, то в директории /etc/apache2/sites-enabled/ расположены конфигурационные файлы для каждого из них.
Выберу один из них и в самом конце после стандартной директивы:
<VirtualHost *:80> ...</VirtualHost>
добавим еще одну, но с 443 портом и укажем пути к сертификатам:
<VirtualHost *:443>
ServerAdmin admin@ixnfo.com
ServerName ixnfo.com
ServerAlias www.ixnfo.com
DocumentRoot /var/www/ixnfo.com/
<Directory />
Options -Indexes
AllowOverride All
</Directory>
<Directory /var/www/ixnfo.com/>
Options -Indexes
AllowOverride All
Order allow,deny
allow from all
</Directory>
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/ixnfo_com.crt
SSLCertificateKeyFile /etc/apache2/ssl/ixnfo_com.key
SSLCertificateChainFile /etc/apache2/ssl/ixnfo_com.ca-bundle
ErrorLog /var/log/apache2/ixnfo_error-ssl.log
LogLevel warn
CustomLog /var/log/apache2/ixnfo_access-ssl.log combined
</VirtualHost>
После изменений проверим конфигурацию и перезапустим apache2:
sudo apachectl configtest
sudo apachectl -t
sudo service apache2 restart
Чтобы можно было зайти в WordPress и админку только по HTTPS в wp-config.php раскомментируем следующие параметры:
define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);
Также можно в панели администратора, в меню «Настройки» — «Общие» изменить адрес сайта с http:// на https://.
В robots.txt также укажем адрес сайта с https, например:
Host: https://ixnfo.com
Также в sitemap.xml должны быть ссылки с https.
В поисковиках нужно подать заявку на переиндексацию карты сайта, в Яндекс.Вебмастер подать заявку в «Переезд сайта» поставив галочку «Добавить HTTPS».
В Google Search Console нужно добавить этот же сайт с https, он будет индексироваться отдельно от http.
Все, теперь сайт можно открывать по https.
Смотрите также мои статьи:
Настройка HTTPS в Apache
Настройка SSL в Nginx
Перенаправление запросов на SSL