Появилась идея перевести несколько своих сайтов на HTTPS говорят , что GOOGLE добавляет таким сайтам плюсик в карму, да и просто почему бы и не использовать защищенное соединение.
Поскольку платить за сертификат для некоммерческого сайта неохота, поискав натолкнулся на центр сертификации StartSSL , огромное спасибо людям на habrahabr.
На StartSSL можно получить SSL сертификат (Класс 1) проверив только email адрес и владение доменом, для защиты личных данных и предотвращения прослушивания Интернет-соединений , совершенно бесплатно. Но если вам необходим сертификат классом выше , например для электронной коммерции, то тут придется раскошелится на некоторую сумму. Не буду расписывать весь процесс получения заветного бесплатного сертификата поскольку на сайте StartSSL присутствует частично русский язык и интуитивно понятно что необходимо сделать.
Пройдя по всем этапам и получив заветные два файла с приватным ключом и сертификатом для сайта приступим к настройке. Поскольку у меня Apache не смотрит в интернет то всю настройку я производил только в конфиге NGINX
Расшифровываем наш приватный ключ
openssl rsa -in ssl.key -out ssl.key
Поскольку в NGINX нет аналога параметру SSLCertificateChainFile то нам необходимо наш сертификат и сертификат вышестоящей инстанции соединить в один файл.
#скачивааем сертификат с сайта startssl.com wget http://www.startssl.com/certs/sub.class1.server.ca.pem #Объединяем его с нашим сертификатом в один cat ssl.crt sub.class1.server.ca.pem > ssl-unified.crt
Настраиваем наш сайт
server { listen 80 ; server_name example.org www.example.org; #Делаем 301 редирект с 80 порта на 443 return 301 https://www.example.org$request_uri; } server { listen 443 ssl; server_name example.org www.example.org; ssl on; #Подключаем получившийся файл с двумя сертификатами ssl_certificate /var/www/ssl/ssl-unified.crt; #Подключаем файл с нашим расшифрованным приватным ключем ssl_certificate_key /var/www/ssl/ssl.key; location / { proxy_pass http://127.0.0.1:81; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
Да это мне помогло избавится от необходимости ставить модуль MOD_GNUTLS для решение проблем с несколькими виртуальными хостами на 443 порту одно IP адресе.
Зачем HTTPS для сайта
Доверие и безопасность.
Наличие HTTPS актуально не только для ресурсов запрашивающих личные данные или информацию о платежных картах. Но и для обычных сайтов есть поводы использовать HTTPS/SSL шифрование.
- HTTPS подтверждает, что сайт – единственный адресат, с которым должен общаться сервер.
- HTTPS шифрует любые коммуникации, включая URL’ы, что защищает, например, историю загрузок браузера.
- HTTPS предотвращает участие в канале передачи данных любых третьих лиц.
Больше данных о входящем трафике.
Когда трафик приходит с страниц использующих HTTPS на сайт с HTTP , данные об источнике скрываются и в отчетах систем аналитик мы их видим как прямой заход на наш ресурс. Но если трафик приходит на сайт с HTTPS то защищенная реферальная информация сохраняется и мы не теряем данных об источнике перехода вне зависимости HTTPS или HTTP.
Google учитывает в качестве одного из многих факторов ранжирования наличие HTTPS, но не осной.
Ну и конечно ложка дёгтя
Как всегда наши любимые поисковые системы воспринимают HTTP и HTTPS версии сайта как два разных ресурса. Соответственно переход сайта на HTTPS грозит еще и потере позиций , поскольку должно пройти время пока поисковая машина поймет что это основное зеркало сайта и произведет «склейку»