Получить сертификат SSL для сайта - это просто!

Так для чего нужен сертификат SSL для сайта?
Во первых это шифрованное соединение между Вашим сайтом и браузером клиента, обеспечивающее безопасную передачу конфиденциальной информации в сети.
Во вторых это повышенное доверие со стороны поисковых машин, кстати будет сказать, что Google повышает в выдаче в конкурентной тематике сайты защищенные по протоколу https.
Давайте рассмотрим на сколько сложно и дорого получить сертификат для сайта.
Необходимым условием получения сертификата SSL является размещение сайта на выделенном IP, т.е. Вам как минимум нужно будет раскошелиться на VPS или как максимум взять выделенный сервер dedicated server. Что такое VPS или dedicated server это тема для другой статьи, а мы будем считать, что Вы прекрасно понимаете, о чем идет речь и уже имеете необходимое оборудование и на нем размещен Ваш сайт.
Теперь давайте приступим к самому интересному: получению и установке сертификата на сервер.
Первым делом нужно подготовить непосредственно сервер, а именно получить privatе.key и CSR.
privat.key нам нужен для того, что бы сгенерить файл ваш_домен.csr, на основании которого мы будем получать сертификат SSL
Сделать это не сложно, открываем консольное соединение SSH и вводим следующую команду:
openssl genrsa -out private.key 2048
в сети много рекомендаций генерить private.key другой командой, но хочу предостеречь эта команда создает файл без запроса пароля и это важно, так как если создать файл с запросом пароля, то при каждой перезагрузке Apache нужно будет вводить пароль, а это не удобно. Допустим у Вас произошла ошибка на сервере и по умолчанию сервер сам ребутнулся, так вот в этом случае все сайты на сервере "лягут" и пока вы не подключитесь и не введете пароль сервер не запуститься! А произойти это может в любой момент, скажем ночью или в выходные, в то время когда у Вас нет возможности подключиться и ввести пароль. Думаю здесь все понятно, но для мазохистов выкладываю команду для создания private.key с паролем:
openssl genrsa -des3 -out private.key 2048
как видите команды очень похожи и различаются только одним -des3, это и есть запрос пароля.
Таким образом в Вашей домашней папке как правило это /root/ должен появиться выше обозначенный файл.
Следующий шаг это генерация CSR или файла ваш_домен.csr кому как удобно.
Для этого там же в консоли вводим следующую команду:
 
openssl req -new -key private.key -out ваш_домен.csr
и начинаем отвечать на задаваемые вопросы:
Сразу хочу сказать, что все данные вводятся исключительно на английском языке!
 
 
Country Name (2 letter code) [XX]:
- здесь нас просят ввести двухсимвольный код страны, согласно стандарту ISO-3166. «RU» для России;
State or Province Name (full name):
- название области или региона без сокращений;
Locality Name (eg, city) [Default City]:
- название города или населенного пункта;
Organization Name (eg, company) [Default Company Ltd]:
- название организации;
Organizational Unit Name (eg, section):
- название подразделения, для которого заказывается сертификат (необязательное поле);
Common Name (eg, your name or your server's hostname) []:
  - доменное имя, домен для которого заказываем сертификат;
Email Address []:
- контактный e-mail адрес (необязательное поле), но почему бы не ввести например info@ваш_домен;
A challenge password []:
- не заполняем; 
An optional company name []:
- альтернативное имя компании (не заполняем).
 
 
Вот собственно и всё! Теперь у Вас в Вашей домашней папке должен появиться файл ваш_домен.csr.
Теперь осталось открыть его блокнотом, я рекомендую использовать Notepad++ и скопировать содержимое в буфер.
Теперь у нас есть CSR и он находится в памяти.

Покупка сертификата SSL

Следующим шагом будет собственно покупка самого сертификата SSL. Я рекомендую один из самых доступных на текущий момент это PositiveSSL
При заказе Вас попросят ввести тот самый CSR, который мы создали и скопировали в буфер.
Далее Вам пришлют письмо на Ваш E-mail для подтверждения и после оплаты пришлют архив с сертификатами.
Распаковав архив у себя на компьютере Вы обнаружите примерно вот такие файлы:
AddTrustExternalCARoot.crt
- это корневой сертификат;
COMODORSAAddTrustCA.crt
- это промежуточный сертификат;
COMODORSADomainValidationSecureServerCA.crt
- это так же промежуточный сертификат;
ваш_домен.crt
- а это непосредственно Ваш сертификат;

Установка сертификата на сервер

Теперь нам остался последний шаг, это установка сертификата на сервер.
Итак приступим:
1. Скопируйте в ту же папку, где лежат сертификаты private.key 
2. Перейдите в папку /usr/local/ и создайте папку ssl, а в ней создайте ещё две папки crt и private
3. В папку /usr/local/ssl/private/ загрузите ключ private.key
4. Переименуйте файл ваш_домен.crt в public.crt и загрузите на сервер в папку /usr/local/ssl/crt/
5. В блокноте создайте новый файл с названием: intermediate.crt
6. Откройте корневой сертификат, скопируйте его содержимое и вставьте в созданный файл, далее повторите операцию с другими промежуточными сертификатами, но таким образом, что бы корневой сертификат был последним! Это важно!
7. Скопируйте файл intermediate.crt на сервер в папку /usr/local/ssl/crt/
8. Откройте файл конфигурации сервера httpd.conf, в Cent OS он находится по пути: /etc/httpd/conf/ в других системах уточняйте в справочных материалах, найдите в нем секцию отвечающую за Ваш домен примерно вот такого вида:

	<VirtualHost XX.XX.XXX.XXX:80 >
	    ServerName ваш_домен
	    AssignUserID user user
	    CustomLog /var/www/httpd-logs/...
	    DocumentRoot /var/www/...
	    ErrorLog /var/www/httpd-logs/...
	    ServerAdmin info@ваш_домен
	    ServerAlias www.ваш_домен
	    AddHandler server-parsed .ssi
	    AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
	    AddType application/x-httpd-php-source .phps
	    php_admin_value open_basedir "/var/www/.../data:."
	    php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@ваш_домен"
	    php_admin_value upload_tmp_dir "/var/www/.../data/mod-tmp"
	    php_admin_value session.save_path "/var/www/.../data/mod-tmp"
	    ScriptAlias /cgi-bin/ /var/www/user/data/www/.../cgi-bin/
	</VirtualHost> 
	
Скопируйте и вставьте ниже и отредактируйте согласно ниже приведенному примеру:

	<VirtualHost XX.XX.XXX.XXX:443 >
	    ServerName ваш_домен
	    AssignUserID user user
	SSLEngine on
		SSLProtocol all
		SSLCertificateFile /usr/local/ssl/crt/public.crt
		SSLCertificateKeyFile /usr/local/ssl/private/private.key
		SSLCACertificateFile /usr/local/ssl/crt/intermediate.crt  
	    CustomLog /var/www/httpd-logs/...
	    DocumentRoot /var/www/...
	    ErrorLog /var/www/httpd-logs/...
	    ServerAdmin info@ваш_домен
	    ServerAlias www.ваш_домен
	    AddHandler server-parsed .ssi
	    AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
	    AddType application/x-httpd-php-source .phps
	    php_admin_value open_basedir "/var/www/.../data:."
	    php_admin_value sendmail_path "/usr/sbin/sendmail -t -i -f info@ваш_домен"
	    php_admin_value upload_tmp_dir "/var/www/.../data/mod-tmp"
	    php_admin_value session.save_path "/var/www/.../data/mod-tmp"
	    ScriptAlias /cgi-bin/ /var/www/user/data/www/.../cgi-bin/
	</VirtualHost> 
	
Что мы здесь сделали?
1. Изменили порт на который должен отзываться сайт с 80-го на 443, это как раз именно тот порт по которому работает SSL шифрование
2. Добавили пути к папкам с сертификатами и указали, что для данного домена включен SSL протокол. 
Вот собственно и всё!
Сертификат установлен и нам осталось только перезагрузить сервер командой service httpd restart, если после перезапуска сервер не запустился это означает, что Вы перепутали местами промежуточные сертификаты и нужно открыть файл /usr/local/ssl/crt/intermediate.crt и поменять местами первые два промежуточные сертификата, что бы корневой сертификат оставался так же последним!
Вот теперь ВСЁ! Наслаждайтесь шифрованным соединением со своим сайтом.
Если все правильно сделали, то в браузере появится значок замка, а при наведении выведется информация подтверждающая подлинность сертификата.
 
Популярное
    Следите за нами:
    Поделитесь с друзьями:
    Работа над ошибками:
    Нашли оЧепятку? Выделите её и нажмите Ctrl+Enter