_seal
Проверенные
- Сообщения
- 99
- Реакции
- 34
- Баллы
- 1,715
заодно настраиваем nginx и apache.
disclaimer - все настройки проводятся на выделенном сервере под freebsd. все что вы делаете - вы делаете на свой страх и риск. Всякий холивар на тему Linux/FreeBSD не приветствуется. На вопрос "почему сертификаты от
У Вас недостаточно прав для просмотра ссылок.
Вход или Регистрация
,а не например от StartSSL ??" ответ простой -
У Вас недостаточно прав для просмотра ссылок.
Вход или Регистрация
.Ну я думаю все знакомы с последними тенденциями глобального перехода на https. Так что писать о том что это такое, зачем оно надо, как влияет на выдачу, индексацию и т.д. я писать не буду.
Итак поехали.
Устанавливаем собственно сертификаты от
У Вас недостаточно прав для просмотра ссылок.
Вход или Регистрация
.Для работы с ними я буду использовать
У Вас недостаточно прав для просмотра ссылок.
Вход или Регистрация
- почему его? - читаем на сайте.На всякий случай, заранее проверьте чтоб в вашем firewall были открыты 80 и 443 порты.
certbot присутствует в портах.
Код:
pkg search certbot
py27-certbot-0.9.3,1 Let's Encrypt client
Код:
sudo pkg install py27-certbot
Код:
pkg_tree py27-certbot\*
py27-certbot-0.9.3,1
|\__ python27-2.7.13_1
|\__ py27-setuptools27-32.1.0
|\__ py27-openssl-16.0.0
|\__ py27-psutil-5.0.1
|\__ py27-six-1.10.0
|\__ py27-mock-1.3.0_1
|\__ py27-cryptography-1.6
|\__ py27-pyrfc3339-1.0
|\__ py27-pytz-2016.10,1
|\__ py27-parsedatetime-2.1
|\__ py27-zope.interface-4.1.3
|\__ py27-configobj-5.0.6_1
|\__ py27-zope.component-4.2.2
|\__ py27-acme-0.9.3,1
|\__ py27-python2-pythondialog-3.4.0
\__ py27-configargparse-0.11.0
Для первичного запуска certbot и получения сертификата 80 и 443 порт должны быть свободны. посему
тушим nginx который у меня в качестве фронта к apache
Код:
sudo service nginx stop
Код:
sudo certbot certonly --standalone -d example.com -d www.example.com
пускаем nginx
Код:
sudo service nginx start
если у вас возникли проблемы при получении сертифката - велкам в /var/log/letsencrypt/
и изучаем letsencrypt.log
т.к. сертификат выдается на 90 дней, нам нужно делать автоматический renew. letsencrypt рекомендует нам делать это дважды в день. ну чтож. послушаем совет.
Код:
crontab -e
42 00,12 * * * service nginx stop && certbot renew --dry-run && service nginx start
вот собственно и все. сертификаты хранятся в /usr/local/etc/letsencrypt/live/example.com/
Код:
ls -l
total 6
drwx------ 4 root wheel 4 7 февр. 12:42 accounts
drwx------ 3 root wheel 3 7 февр. 09:40 archive
drwxr-xr-x 2 root wheel 5 8 февр. 00:42 csr
drwx------ 2 root wheel 5 8 февр. 00:42 keys
drwx------ 3 root wheel 3 7 февр. 09:40 live
drwxr-xr-x 2 root wheel 3 8 февр. 09:01 renewal
с сертификатами от letsencypt мы закончили. но это еще не все;
Код:
cd /usr/local/etc/ssl/
openssl dhparam -out dhparams.pem 4096
Теперь о /usr/local/etc/ssl/dhparam.pem; — это нужно, чтобы у нас заработал Forward Secrecy. Прямая секретность означает, что если третья сторона узнает какой-либо сеансовый ключ, то она сможет получить лишь доступ к данным, защищенным лишь этим ключом.
переходим к настройке nginx
Я просто советую скопипастить этот конфиг для nginx. Вдаваться в поробности что и зачем я не буду. Это совсем отдельная тема, есть гугль, и в конце выложу ссылки источников где вдохновлялся знаниями.
Код:
cat /usr/local/etc/nginx/ssl.conf
# Source https://cipherli.st/
# Enable Perfect Forward Secrecy (PFS)
ssl_prefer_server_ciphers on;
ssl_certificate /usr/local/etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /usr/local/etc/letsencrypt/live/example.com/privkey.pem;
# Disable SSLv2 and SSLv3 (BEAST and POODLE attacks)
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# Enable our strong DH Key
ssl_dhparam /usr/local/etc/ssl/dhparams.pem;
# Cipher-list for PFS.
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
ssl_ecdh_curve secp384r1;
# Requires nginx >= 1.1.0
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
# Requires nginx >= 1.5.9
ssl_stapling on;
# Requires nginx >= 1.3.7
ssl_stapling_verify on;
# Requires nginx => 1.3.7
resolver 8.8.8.8 4.4.4.4 valid=300s;
resolver_timeout 5s;
# HSTS Support
add_header Strict-Transport-Security "max-age=63072000;includeSubdomains; preload";
# These headers can break applications, be careful!
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosnif;
не заываем в директивах ssl_certificate и ssl_certificate_key указать свои правильные пути к сертификатам!
правим сам nginx.conf (тут чуток надерганы куски моих конфигов, поэтому копипастим вдумчиво)
Код:
http {
server {
listen 443 ssl;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
server_name example.com;
include ssl.conf;
root /usr/local/www/data/example.com;
location / {
add_header X-Served-By "My Servlet Handler";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
proxy_pass http://127.0.0.1:8081;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Ssl on;
client_max_body_size 256m;
client_body_buffer_size 128k;
client_body_timeout 12;
proxy_connect_timeout 600;
proxy_read_timeout 600;
proxy_send_timeout 600;
send_timeout 600;
proxy_buffer_size 64k;
proxy_buffers 8 64k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
У Вас недостаточно прав для просмотра ссылок.
Вход или Регистрация
в этом конфиге включен.не забываем редиректы с 80 порта на 443
Код:
server {
listen 80;
server_name example.com;
location / {
return 301 https://www.example$request_uri;
}
}
#================================================================
server {
listen 80;
server_name www.example.com;
location / {
return 301 https://www.example$request_uri;
}
} #
с nginx закончили.
кое что добавим в настройки виртуального хоста в apache, а именно передаем переменные окружения, в частности имя протокола, из nginx в apache. делается это для правильной работы ajax
Код:
<VirtualHost 127.0.0.1:8080>
ServerName www.example.com
...
LoadModule setenvif_module libexec/apache24/mod_setenvif.so
SetEnvIf X-Forwarded-Proto https HTTPS=on
...
</VirtualHost>
теперь осталось только настроить сам xenforo. эта тема тут очень много обсуждалась, поэтому не буду вдаваться в подробности.
в .htaccess добавляем
Код:
#https
RewriteCond %{HTTP:X-Forwarded-proto} !^https$
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Код:
# Mod_security can interfere with uploading of content such as attachments. If you
# cannot attach files, remove the "#" from the lines below.
#<IfModule mod_security.c>
# SecFilterEngine Off
# SecFilterScanPOST Off
#</IfModule>
ErrorDocument 401 default
ErrorDocument 403 default
ErrorDocument 404 default
ErrorDocument 405 default
ErrorDocument 406 default
ErrorDocument 500 default
ErrorDocument 501 default
ErrorDocument 503 default
<IfModule mod_rewrite.c>
RewriteEngine On
#https
RewriteCond %{HTTP:X-Forwarded-proto} !^https$
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
# If you are having problems with the rewrite rules, remove the "#" from the
# line that begins "RewriteBase" below. You will also have to change the path
# of the rewrite to reflect the path to your XenForo installation.
#RewriteBase /xenforo
# This line may be needed to enable WebDAV editing with PHP as a CGI.
#RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^(data/|js/|styles/|install/|favicon\.ico|crossdomain\.xml|robots\.txt) - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
</IfModule>
в админке форума
/admin.php?options/list/basicBoard
URL-адрес форума - меняем http на https
URL-адрес домашней страницы - меняем http на https
/admin.php?options/list/messageOptions#_imageLinkProxy
включаем проксирование изображений и ссылок
ну вот вроде и все. рестарт nginx и apache
Код:
service nginx restart
service apache24 restart
У Вас недостаточно прав для просмотра ссылок.
Вход или Регистрация
Уверен что если вы все сделали правильно то получите бонус в виде заветного
а в окошке вашего браузера
В качестве изврата добавим САА в мастер запись вашего dns строчку:
Код:
example.com. CAA 0 issue "letsencrypt.org"
в результате получаем вот такую красивую картинку :-)
Все дополнения, пожелания, предложения, улучшения - принимаются :-)
В статье использовались материалы
У Вас недостаточно прав для просмотра ссылок.
Вход или Регистрация
У Вас недостаточно прав для просмотра ссылок.
Вход или Регистрация
У Вас недостаточно прав для просмотра ссылок.
Вход или Регистрация
У Вас недостаточно прав для просмотра ссылок.
Вход или Регистрация
и конечно же форума xeforo.info :-)
По возможности
У Вас недостаточно прав для просмотра ссылок.
Вход или Регистрация
сообществу
Последнее редактирование: