Приветствую всех! Столкнулся 3 дня назад с данным вопросом по сертификатам. В моем случае они понадобились для работы API яндекса (для участия в новой программе). Соответственно адрес должен был быть доступным по адресу httpS://site.ru На форуме полной информации не нашел поэтому решил написать небольшой мануал (не судите строго я убил 3 дня чтобы разобраться - может кто прочитает и сделает быстрее), а так же задать пару вопросов к сведующим людям. Итак если вам нужно чтобы ваш сайт работал по протоколу HTTPS с использованием SSL-сертификата - вам нужен этот самый ssl сертификат. Есть куча контор, которые продают, а также подписывают сертификаты. Стоимость сертификатов от 10$. до 60т.р. в год и выше. В данном случае не буду рассматривать данный вариант, потому как для тестовой функции совершенно не хотелось платить. Рассмотрим бесплатный вариант: Для того что-бы сайт работал по данному протоколу нужно несколько условий: 1)Хостинг поддерживал ssl-сертификаты 2)Данный сертификат предполагает наличия статичного ip адреса вашего сайта (дополнительные затраты) Итак делаем сертификат вручную. Расскажу на примере хостинга петерхост (не сочтите рекламой) думаю на многих хостингах процедура похожа. Хотя на некоторых хостах бывает все гораздо проще. Заходим на наш сервер по протоколу SSH я использовал программку "putty". Для этого указываете техническое имя сайта, к которому подключаетесь, появляется окно DOS в котором вводим имя пользователя и пароль от хостинга. После этого вводим в окно строчки которые после знака $ остальной текст - ответ сервера
$ openssl genrsa -out primer.key 1024
Generating RSA private key, 1024 bit long modulus
………………++++++
……………………………………..++++++
e is 65537 (0×10001)
$ openssl req -new -key primer.key -out primer.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
——-
Country Name (2 letter code) [AU]:RU
State or Province Name (full name) [Some-State]:Saint-Petersburg
Locality Name (eg, city) []:Saint-Petersburg
Organization Name (eg, company) [Internet Widgits Pty Ltd]:site
Organizational Unit Name (eg, section) []:internet magazin
Common Name (eg, YOUR name) []:site.ru
Email Address []:
[email protected]
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:не обязательно
An optional company name []:не обязательно
$ openssl x509 -req -days 365 -in primer.csr -signkey primer.key -out primer.crt
Signature ok
subject=/C=RU/ST=Lenigradskaya/L=Saint-Petersburg/O=site/OU=internet magazin/CN=site.ru/
[email protected]
Getting Private key
Готово. Если вам нужен слепок SHA1 команда будет такой:
openssl x509 -in primer.crt -sha1 -noout -fingerprint.
Самая важная строчка, по крайней мере для яндекса "Common Name", в которой необходимо указать доменное имя магазина без http. В верхней строчки вместо 1024 можно поставить 2048 бит После данных манипуляций должны появиться 3 файла по сути сертификаты в общем каталоге вашего хостинга это primer.crt - это публичный ключ primer.csr - это промежуточный он мне не понадобился primer.key - это приватный ключ Их содержимое копируется в нужный раздел вашего хостинга. У меня это был раздел сайты-SSL u IP. На этом все. Далее в админке включаем в настройках-сервер использования SSL "Да"[/size] После этого сайт стал доступен по адресу Https . Естесственно браузер выдает предупреждение - что сертификат не подписан. Но это уже другое . Можно подписать в платных канторах, в моем случае мне нужна была всего одна страница доступная по https. Поэтому мне все равно было. Касаемо настроек по сайту - при добавлении статичного IP (записи в DNS)в панели хостинга - как правило слетают MX записи, которые отвечают так же за почту отправку-получение. Просто нужно будет заново добавить. Читал что на данном форуме были с этим проблемы. Так же можно создать сертификат с помощью проги openssl Так же в файле config.php добавляем букву S (разницы кстати не ощутил)
// HTTPS
define('HTTPS_SERVER', 'httpS://site.ru/');
Вот в принципе и все. И собственно пара вопросов спецам. Как сделать так чтобы страницы начинающиеся с https://site.ru переадресовывались на http://site.ru , за исключением https://site.ru/primer/....ну или просто были недоступны