Бесплатный SSL сертификат для сайта и настройка на nginx.


Появилась идея перевести несколько своих сайтов на 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

Google учитывает в качестве одного из многих факторов ранжирования наличие HTTPS, но не осной.

Ну и конечно ложка дёгтя

Как всегда наши любимые поисковые системы воспринимают HTTP и HTTPS версии сайта как два разных ресурса. Соответственно переход сайта на HTTPS грозит еще и потере позиций , поскольку должно пройти время пока поисковая машина поймет что это основное зеркало сайта и произведет «склейку»

#SSL

Copyright © 2013-2017